evm has incorrect is_static parameter for custom stateful precompiles
Description
SputnikVM, also called evm, is a Rust implementation of Ethereum Virtual Machine. A custom stateful precompile can use the is_static parameter to determine if the call is executed in a static context (via STATICCALL), and thus decide if stateful operations should be done. Prior to version 0.36.0, the passed is_static parameter was incorrect -- it was only set to true if the call came from a direct STATICCALL opcode. However, once a static call context is entered, it should stay static. The issue only impacts custom precompiles that actually uses is_static. For those affected, the issue can lead to possible incorrect state transitions. Version 0.36.0 contains a patch. There are no known workarounds.
AI Insight
LLM-synthesized narrative grounded in this CVE's description and references.
SputnikVM (evm) incorrectly propagated the static call context to custom precompiles, allowing state transitions in static contexts, leading to potential integrity violations.
Root
Cause
The vulnerability lies in how SputnikVM (the Rust implementation of the Ethereum Virtual Machine, also known as evm) handles the is_static parameter for custom precompiles. Prior to version 0.36.0, the is_static flag was only set to true when a call originated directly from a STATICCALL opcode. However, once a static call context is entered (e.g., via a nested STATICCALL or a static call from another precompile), the context should remain static for all subsequent calls. The bug caused is_static to be incorrectly reported as false in such nested scenarios, violating the Ethereum specification [1][3].
Exploitation
Only custom precompiles that actually inspect the is_static parameter to decide whether to allow stateful operations are affected. An attacker can craft a transaction that enters a static context (e.g., by calling a contract that uses STATICCALL) and then invokes a vulnerable custom precompile. Because the precompile receives is_static = false, it may permit state modifications that should be forbidden in a static context. The attack requires no special privileges and can be performed over the network [1][2].
Impact
Successful exploitation allows an attacker to cause incorrect state transitions, potentially altering contract storage or other persistent data in ways that the EVM's static call mechanism was designed to prevent. The integrity impact is high, while confidentiality and availability are unaffected. The issue is rated CVSS 7.5 (High) [3].
Mitigation
The vulnerability is fixed in evm version 0.36.0. Users should update their dependency to this version or later. No workarounds are available [1][3].
AI Insight generated on May 21, 2026. Synthesized from this CVE's description and the cited reference URLs; citations are validated against the source bundle.
Affected packages
Versions sourced from the GitHub Security Advisory.
| Package | Affected versions | Patched versions |
|---|---|---|
evmcrates.io | < 0.36.0 | 0.36.0 |
Affected products
2- rust-blockchain/evmv5Range: < 0.36.0
Patches
0No patches discovered yet.
Vulnerability mechanics
AI mechanics synthesis has not run for this CVE yet.
References
5News mentions
0No linked articles in our index yet.