Zurück zum Blog

Wenn „SafeMint“ unsicher wird: Lehren aus dem HypeBears-Sicherheitsvorfall

Code Auditing
3. Februar 2022
2 Min. Lesezeit

Am Morgen des 3. Februar (Zeitzone +8) meldete unser System eine Angriffstransaktion 0xfa97c3476aa8aeac662dae0cc3f0d3da48472ff4e7c55d0e305901ec37a2f704 auf den HypeBears NFT-Vertrag. Nach der Untersuchung stellten wir fest, dass es sich um einen Re-entrancy-Angriff handelte, der durch die _safeMint-Funktion von ERC721 verursacht wurde.

Die Hauptursache

Das Projekt hat eine Begrenzung für die Anzahl der NFTs, die ein Konto prägen kann. Grundsätzlich gibt es eine Map addressMinted, die protokolliert, ob ein Konto NFTs geprägt hat.

Beim Prägen von NFTs verwendet der Code die _safeMint-Funktion der OZ-Referenzimplementierung. Diese Funktion ist "sicher", da sie prüft, ob der Empfänger ERC721-Token empfangen kann. Dies kann den Fall verhindern, dass ein NFT an einen Vertrag geprägt wird, der keine ERC721-Token verarbeiten kann. Laut der Dokumentation:

Wenn to sich auf einen Smart Contract bezieht, muss dieser IERC721Receiver.onERC721Received implementieren, der bei einer sicheren Übertragung aufgerufen wird. Der folgende Code zeigt die OZ-Implementierung der _safeMint-Funktion.

Dieser externe Funktionsaufruf schafft jedoch eine Sicherheitslücke. Insbesondere kann der Angreifer innerhalb des onERC721Received-Callback einen Reentrant-Aufruf durchführen. Zum Beispiel kann der Angreifer im anfälligen HypeBears-Vertrag die mintNFT-Funktion im onERC721Received-Callback erneut aufrufen (da addressMinted noch nicht aktualisiert wurde).

Der Angriff

Der folgende Screenshot zeigt die Angriffstransaktion.

Lektionen

Das von SafeMint ausgehende Risiko wurde von Sicherheitsexperten diskutiert link1 link2. Dennoch sind anfälliger Code und Angriffe in freier Wildbahn immer noch zu beobachten. Wie in der safeTransfer im QBridge-Sicherheitsvorfall gezeigt, garantiert die Verwendung einer sicheren Funktion keinen sicheren Vertrag 😃.

Für die neuesten Informationen anmelden
Über die sichere Speicherung hinaus, Teil 2: Wallet-Kryptografie sicher implementieren
Security Insights

Über die sichere Speicherung hinaus, Teil 2: Wallet-Kryptografie sicher implementieren

Kann ein Angreifer einen privaten Schlüssel rekonstruieren, ohne dessen geschützte Kopie auszulesen? Teil 2 von Beyond Secure Storage untersucht sechs Vorfälle, bei denen schwache Zufallszahlen, Entropieverlust oder Fehler bei Signatur-Nonces Schlüssel vorhersagbar oder rekonstruierbar machten. Daraus leitet er Anforderungen an die Implementierung der Schlüsselerzeugung und des Signierens ab und erläutert anschließend, wie Zahlungsinstitute deren Einhaltung durch Code-Reviews und Tests des produktiv eingesetzten Systems überprüfen können.

Über sichere Speicherung hinaus, Teil 1: Sichere Zahlungs- und Signaturabläufe gestalten
Security Insights

Über sichere Speicherung hinaus, Teil 1: Sichere Zahlungs- und Signaturabläufe gestalten

Wie kann ein nicht autorisierter Vorgang eine gültige Signatur erhalten, ohne dass der Angreifer den privaten Schlüssel stiehlt? Teil 1 von Beyond Secure Storage untersucht anhand von Vorfällen bei Bitget, Bybit und Binance Autorisierungsfehler bei Zahlungsanforderungen, der Erstellung, Signierung und Ausführung von Transaktionen sowie bei deren Abwicklung. Daraus leitet er Gestaltungsprinzipien ab, um nicht autorisierte Vorgänge zu verhindern und Verluste zu begrenzen. Anschließend erläutert er, wie Überprüfungen, Audits, Penetrationstests und Übungen diese Schutzmaßnahmen verifizieren können.

NEAR-Intents-Exploit: Fehler bei der Rückerstattung und Lehren für die Sicherheit
Security Insights

NEAR-Intents-Exploit: Fehler bei der Rückerstattung und Lehren für die Sicherheit

Beim Exploit von NEAR Intents wurden überdimensionierte Rückerstattungsereignisse genutzt, um interne Guthaben zu erhalten, nachdem die eingezahlten Vermögenswerte zurückgegeben worden waren. Diese Analyse rekonstruiert den Ablauf der Receipts und sieben Auszahlungen auf der BNB Chain in Höhe von insgesamt 3.865.021 USDT. Sie unterscheidet diese Mittelabflüsse von der vom Projekt gemeldeten vollständigen Rückgewinnung der Mittel und erläutert Sicherheitsaspekte bei der Entwicklung und Prüfung von NEAR-Smart-Contracts.

Der beste Sicherheitsauditor für Web3

Lassen Sie Design, Code und Geschäftslogik vor dem Launch prüfen. Nach den höchsten Sicherheitsstandards der Branche.

BlockSec-Audit
Wenn „SafeMint“ unsicher wird: Lehren aus dem HypeBears-Sicherheitsvorfall