Back to Blog

Wenn „SafeTransfer“ unsicher wird: Lehren aus dem QBridge-Sicherheitsvorfall

Code Auditing
January 28, 2022
2 min read

Am 28. Januar wurde die QBridge angegriffen und Vermögenswerte im Wert von etwa 80 Millionen USD wurden 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 bekannte OpenZeppelin SafeERC20-Bibliothek für den Token-Transfer. 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 Null-Adresse 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 für den Vorfall auch andere Gründe, z. B. dass die Null-Adresse in die Whitelist aufgenommen wurde. Wenn der Code jedoch diesen Spezialfall ordnungsgemäß behandeln würde, wäre er nicht anfällig.

Übrigens: Es gibt andere Projekte, die ähnlichen Code verwenden. Diese könnten für das gleiche Problem anfällig sein.

Experiment

Um den dritten Grund zu bestätigen, dass die VM nicht "false" zurückgibt, wenn der Zielvertrag Null ist, haben wir einen Testvertrag entwickelt, wie unten dargestellt.

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

Lektionen und wie man das Risiko mindert

Wir schlagen vor:

  • Verwenden Sie etablierte Bibliotheken, anstatt das Rad neu zu erfinden, es sei denn, Sie haben einen sehr, sehr guten Grund dafür.
  • Überprüfen Sie den Kontostand vor und nach dem Asset-Transfer, um sicherzustellen, dass die Anzahl der übertragenen Assets den Erwartungen entspricht. Dies kann auch Probleme mit Deflations- und Inflationstokens vermeiden.

Über BlockSec

BlockSec ist ein bahnbrechendes Blockchain-Sicherheitsunternehmen, das 2021 von einer Gruppe weltweit anerkannter Sicherheitsexperten gegründet wurde. Das Unternehmen engagiert sich dafür, die Sicherheit und Benutzerfreundlichkeit für die aufstrebende Web3-Welt zu verbessern, um deren Masseneinführung zu erleichtern. Zu diesem Zweck bietet BlockSec Sicherheitsaudit-Dienste für Smart Contracts und EVM-Chains, die Phalcon-Plattform für die Sicherheitsentwicklung und proaktive Bedrohungsabwehr, die MetaSleuth-Plattform für die Nachverfolgung und Untersuchung von Geldern sowie die MetaDock-Erweiterung für Web3-Entwickler an, um effizient in der Kryptowelt zu navigieren.

Bis heute hat das Unternehmen über 300 geschätzte Kunden wie MetaMask, Uniswap Foundation, Compound, Forta und PancakeSwap betreut und zweistellige Millionenbeträge in USD in zwei Finanzierungsrunden von namhaften Investoren erhalten, darunter Matrix Partners, Vitalbridge Capital und Fenbushi Capital.

Offizielle Website: https://blocksec.com/

Offizieller Twitter-Account: https://twitter.com/BlockSecTeam

Best Security Auditor for Web3

Validate design, code, and business logic before launch. Aligned with the highest industry security standards.

BlockSec Audit