Am 28. Januar wurde die QBridge angegriffen und Vermögenswerte im Wert von rund 80 Millionen US-Dollar gestohlen. Nach der Analyse stellten wir fest, dass die Grundursache im Code die Implementierung der Funktion safeTransfer (und safeTransferFrom) ist.
Die Grundursache
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 nicht false zurück, wenn der Zielvertrag Null ist. Dies widerspricht dem gesunden Menschenverstand der Entwickler.

Natürlich gibt es bei dem Vorfall auch andere Gründe, z. B. die Aufnahme der Nulladresse in die Whitelist. Wenn der Code diesen Sonderfall jedoch ordnungsgemäß behandeln kann, ist er nicht anfällig.
Übrigens: Es gibt andere Projekte, die ähnlichen Code verwenden. Diese können für ähnliche Probleme anfällig sein.
Experiment
Um den dritten Grund zu bestätigen, dass die VM keinen false-Wert zurückgibt, wenn der Zielvertrag Null ist, haben wir einen Testvertrag entwickelt, wie im Folgenden gezeigt.

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

Lehren und Risikominimierung
Wir schlagen vor, dass
- die beliebte Bibliothek verwendet wird, anstatt sein eigenes Rad neu zu erfinden, es sei denn, es gibt einen sehr, sehr guten Grund.
- das Guthaben vor und nach der Vermögensübertragung geprüft wird, um sicherzustellen, dass die Anzahl der übertragenen Vermögenswerte 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 hat sich der Verbesserung der Sicherheit und Benutzerfreundlichkeit für die aufstrebende Web3-Welt verschrieben, um deren Massenadoption zu fördern. Zu diesem Zweck bietet BlockSec Audits für Smart Contracts und EVM-Ketten, die Phalcon-Plattform für die sichere Entwicklung und proaktive Abwehr von Bedrohungen, die MetaSleuth-Plattform für die Verfolgung und Untersuchung von Geldern sowie die MetaDock-Erweiterung für Web3-Entwickler, die effizient im Krypto-Bereich surfen.
Bis heute hat das Unternehmen über 300 angesehene Kunden wie MetaMask, Uniswap Foundation, Compound, Forta und PancakeSwap betreut und in zwei Finanzierungsrunden von namhaften Investoren, darunter Matrix Partners, Vitalbridge Capital und Fenbushi Capital, zweistellige Millionenbeträge erhalten.
Offizielle Website: https://blocksec.com/
Offizieller Twitter-Account: https://twitter.com/BlockSecTeam



