Dne 8. ledna 2026 na bloku Ethereum 24,191,019 se token TRU od Truebitu zhroutil poté, co transakce donutila cenu protokolu klesnout na nulu. Tato jediná podmínka umožňovala neomezené mintování a rychlý odchod z ETH. Podrobnější informace následují.
Útočník nazval getPurchasePrice, poté buyTRU (0xa0296215), vydělal více TRU než celkovou nabídku, cyklus opakoval a poté prodával přes sellTRU. Celkové náklady byly pod 40 dolarů a transakce přinesla 8 535 ETH (asi 26 milionů dolarů).
Pouze proxy tokenu TRU byl ověřen v Sourcify, zkompilovaný ve Solidity 0.5.3. Tato éra předchází vestavěným kontrolám přetečení a mnoha bezpečnostním prvkům. Starý kód může běžet roky a pak selhat, když se jediný okrajový případ setká s lepší analýzou.
Dekompilovali jsme neověřenou kupní smlouvu a vystopovali jsme položku getPurchasePrice do interní funkce (0x1446), která počítá cenu z nabídky S, rezervy R a THETA (tehdy 75). Na většině cesty byli použiti bezpečnostní matematickí pomocníci.
Bod selhání byl konečný výraz: v13 = _SafeDiv(v6, v12 + v9). Toto přidání nebylo kontrolováno a Solidity 0.5.3 se při přetečení nevrátí zpět. Při dostatečně velkém vstupu se to zavinilo a celočíselné dělení vrátilo nulu.
Náš kompletní přehled pokrývá základní příčinu a poučení pro starší systémy:
5,06K