A low-level call copies unbounded return data into memory. A malicious callee returns a huge byte array, forcing the caller to pay quadratic memory-expansion gas and potentially revert — griefing any flow that calls into an attacker-chosen address.
// contract Bomb { fallback() external { assembly { return(0, 3000000) } } } // caller: target.call(data) copies 3MB of returndata -> OOG revert / grief.
// assembly call that ignores returndata, or a bounded gas stipend (bool ok,) = target.call{gas: 100000}(data); // with inline asm: call(gas, target, 0, in, insize, 0, 0) // out=0
Largest recorded losses in the same failure class — related, not the same bug:
The SaferICO scanner runs 201 detectors over your Solidity source, SAFE-0125 among them. Paste an address or the source itself — a small per-scan fee, shown before you sign, or unlimited on any plan.