Description
asteval is a Python expression evaluator designed for restricted execution. Prior to 1.0.9, in asteval/astutils.py, the default Interpreter with numpy enabled exposes a ctypes type and permits from_address memory access. safe_getattr blocks the ctypes module but not reachable ctypes type objects, while attribute assignments use unfiltered setattr instead of safe_setattr. An attacker-controlled expression can derive an address with id, read memory through from_address, and write through an attribute assignment. The expression can read or corrupt arbitrary process memory, escape the intended sandbox, execute code, disclose secrets, or crash the host process. This issue is fixed in version 1.0.9.
Affected products
| Vendor | Product | Affected | Fixed |
|---|---|---|---|
| lmfit | asteval | < 1.0.9 | — |
Fixed in Linux distributions
Distributions backport fixes, so the version that fixes this vulnerability differs per release — upgrade to at least the version shown. From the distributions' security trackers and advisories.
Debian
Security tracker ↗| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| Debian 14 | python-asteval | No fix yet | — |
| Debian 13 | python-asteval | No fix yet | — |
| Debian 12 | python-asteval | No fix yet | — |
Ubuntu
Security tracker ↗| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| Ubuntu 26.10 | python-asteval | No fix yet | — |
| Ubuntu 26.04 LTS | python-asteval | No fix yet | — |
| Ubuntu 24.04 LTS | python-asteval | No fix yet | — |
| Ubuntu 22.04 LTS | python-asteval | No fix yet | — |
| Ubuntu 20.04 LTS | python-asteval | No fix yet | — |
Affected packages
| Ecosystem | Package | Affected | Fixed | Record |
|---|---|---|---|---|
| PyPI | asteval | < 1.0.9 | 1.0.9 | GHSA-9w56-46f6-3qhx |