After a low-level call, returndata is decoded or copied without checking its length, enabling a malicious callee to return huge data (gas griefing) or malformed data that mis-decodes.
(bool ok, bytes memory d) = t.call(data); require(ok && d.length >= 32, "bad return"); uint x = abi.decode(d, (uint));
Largest recorded losses in the same failure class — related, not the same bug:
The SaferICO scanner runs 201 detectors over your Solidity source, SAFE-0092 among them. Paste an address or the source itself — a small per-scan fee, shown before you sign, or unlimited on any plan.