Am 8. Januar 2026, im Ethereum-Block 24.191.019, brach der TRU-Token von Truebit zusammen, nachdem eine Transaktion den Kaufpreis des Protokolls auf null zwang. Diese einzige Bedingung ermöglichte unbegrenztes Minting und einen schnellen Ausstieg zu ETH. Weitere Details folgen.
Der Angreifer rief getPurchasePrice auf, dann buyTRU (0xa0296215), prägte mehr TRU als das gesamte Angebot, wiederholte den Zyklus und verkaufte dann über sellTRU. Die Gesamtkosten lagen unter 40 $, und die Transaktion brachte 8.535 ETH (etwa 26 Millionen $) zurück.
Nur der TRU-Token-Proxy wurde in Sourcify verifiziert, kompiliert mit Solidity 0.5.3. Diese Ära liegt vor den integrierten Überlaufprüfungen und vielen Sicherheitsfunktionen. Alter Code kann jahrelang laufen und dann fehlschlagen, wenn ein einzelner Grenzfall eine bessere Analyse trifft.
Wir haben den nicht verifizierten Kaufvertrag dekompiliert und die Funktion getPurchasePrice in eine interne Funktion (0x1446) zurückverfolgt, die den Preis aus dem Angebot S, der Reserve R und THETA (75 zu diesem Zeitpunkt) berechnet. Safe-Math-Hilfsfunktionen wurden durch den Großteil des Pfades verwendet.
Der Fehlerpunkt war der letzte Ausdruck: v13 = _SafeDiv(v6, v12 + v9). Diese Addition war nicht überprüft, und Solidity 0.5.3 macht bei Überlauf keinen Rückfall. Bei einer ausreichend großen Eingabe überlief und die ganzzahlige Division gab null zurück.
Unser vollständiger Bericht behandelt die Ursachen und Lehren für Altsysteme:
5,31K