Am 28. Januar wurde die QBridge angegriffen und Werte im Wert von rund 80 Millionen US-Dollar gestohlen. Nach der Analyse stellten wir fest, dass die Ursache im Code die Implementierung der Funktion safeTransfer (und safeTransferFrom) ist.
Die Ursache
Erstens verwendet das Projekt nicht die beliebte OpenZeppelin SafeERC20-Bibliothek für die Token-Übertragung. Stattdessen implementierten sie eine Bibliothek namens SafeToken.
Zweitens prüft die Implementierung nicht, ob das Ziel ein gültiger Vertrag ist (oder ob es sich um eine Nulladresse handelt).
Drittens gibt der Low-Level-Aufruf der EVM keinen falschen Wert zurück, wenn der Zielvertrag Null ist. Dies widerspricht dem gesunden Menschenverstand der Entwickler.

Natürlich gab es bei dem Vorfall auch andere Gründe, z. B. dass die Nulladresse auf der Whitelist stand. Wenn der Code diesen Sonderfall jedoch ordnungsgemäß behandeln könnte, wäre er nicht anfällig gewesen.
Übrigens: Es gibt andere Projekte, die ähnlichen Code verwenden. Sie könnten anfällig für ähnliche Probleme sein.
Experiment
Um den dritten Grund zu bestätigen, dass die VM keinen falschen Wert zurückgibt, wenn der Zielvertrag Null ist, haben wir einen Testvertrag entwickelt, wie unten gezeigt.

Die Ausführung von TestSafeTransfer.test() wird nicht zurückgesetzt.

Lektionen und Risikominderung
Wir schlagen vor, dass:
- Verwenden Sie die beliebte Bibliothek, anstatt Ihr eigenes Rad neu zu erfinden, es sei denn, Sie haben einen sehr, sehr guten Grund.
- Überprüfen Sie den Saldo vor und nach der Asset-Übertragung, um sicherzustellen, dass die Anzahl der übertragenen Assets den Erwartungen entspricht. Dies kann auch das Problem von deflationären und inflationären Token vermeiden.
Über BlockSec
BlockSec ist ein führendes Blockchain-Sicherheitsunternehmen, das 2021 von einer Gruppe weltweit renommierter Sicherheitsexperten gegründet wurde. Das Unternehmen setzt sich dafür ein, die Sicherheit und Benutzerfreundlichkeit der aufstrebenden Web3-Welt zu verbessern, um deren massenhafte Adoption zu fördern. Zu diesem Zweck bietet BlockSec Dienstleistungen für die Prüfung von Smart Contracts und EVM-Chains, die Phalcon-Plattform für die sichere Entwicklung und die proaktive Abwehr von Bedrohungen, die MetaSleuth-Plattform für die Geldverfolgung und Untersuchung sowie die MetaDock-Erweiterung für Web3-Entwickler, die effizient im Krypto-Bereich unterwegs sind.
Bisher hat das Unternehmen über 300 angesehene Kunden wie MetaMask, Uniswap Foundation, Compound, Forta und PancakeSwap betreut und in zwei Finanzierungsrunden von namhaften Investoren wie Matrix Partners, Vitalbridge Capital und Fenbushi Capital Millionen von US-Dollar erhalten.
Offizielle Website: https://blocksec.com/
Offizielles Twitter-Konto: https://twitter.com/BlockSecTeam



