NRDAX-T0389 - Precompile Gas Underpricing CPU Burn
compute_amp · active · first seen 2026-07-14
provenance: Reproduced in NullRabbit's attack-reproduction pipeline
mechanism
The BLAKE2F precompile (0x09) exposes an attacker-controlled 'rounds' field that is charged at a flat 1-gas-per-round rate but executes synchronously on the node's RPC-serving thread; because gas cost scales linearly while wall-clock compute per round is effectively free to request, a small eth_call payload (~585 bytes) can force tens of millions of compression rounds. This yields a large asymmetry between request size/cost and CPU time consumed (~405ms vs ~1ms baseline), letting a single cheap call monopolize a worker thread and degrade node responsiveness. The fix-class is bounding/metering precompile-invoked loop primitives (rounds/iteration caps, tighter gas-to-wall-time calibration, or synchronous-call time budgets) at the eth_call/precompile-dispatch layer.
instances (1)
| chain | primitive | fidelity | origin | reproducer (bundle) | source |
|---|---|---|---|---|---|
| ethereum | eth_call_blake2f_precompile_rounds_cpu_amp | proxy | NullRabbit Labs | eth_call_blake2f_precompile_rounds_cpu_amp | - |
related (compute_amp)
cite
https://nrdax.com/techniques/NRDAX-T0389
NRDAX Registry. Technique NRDAX-T0389.
@misc{nrdax_NRDAX_T0389,
title = {Precompile Gas Underpricing CPU Burn (NRDAX-T0389)},
howpublished = {NRDAX Registry},
url = {https://nrdax.com/techniques/NRDAX-T0389},
} {
"id": "nrdax-NRDAX-T0389",
"type": "dataset",
"title": "Precompile Gas Underpricing CPU Burn (NRDAX-T0389)",
"URL": "https://nrdax.com/techniques/NRDAX-T0389",
"publisher": "NRDAX Registry"
} use from the CLI
Retrieve or cite this technique from a script or the terminal with the NRDAX Python library & CLI.
nrdax get NRDAX-T0389 nrdax cite NRDAX-T0389 --format bibtex