Zurück zum Blog

"Nachrichten"-Replay-Angriffe auf EthereumPoW enthüllen

Code Auditing
19. September 2022
3 Min. Lesezeit

Am 16. September 2022 stellten wir fest, dass einige Angreifer durch das Wiederabspielen der Nachricht (d. h. des Calldata) der PoS-Kette auf EthereumPoW (auch bekannt als die PoW-Kette) erfolgreich viele ETHW ernteten. Die Hauptursache für die Ausnutzung ist, dass die Omni-Bridge auf der PoW-Kette die alte chainId verwendet und nicht korrekt die tatsächliche chainId der Cross-Chain-Nachricht verifiziert.

Wir kontaktierten sofort das offizielle Team von EthereumPoW. Das Team war aktiv bereit, Maßnahmen zu ergreifen, und sie versuchten auch mit der Omni Bridge zu kommunizieren.

Da jedoch immer mehr Angriffe beobachtet wurden, glaubten wir, dass das Risiko der Öffentlichkeit mitgeteilt werden sollte, und veröffentlichten am 18. September 2022 den Alarm.

Da immer noch ein gewisses Missverständnis über diese Angriffe besteht, d. h. über das Wiederabspielen der Transaktion anstatt der Nachricht. In diesem Bericht möchten wir eine detaillierte Analyse bereitstellen, um dies zu klären.

Angriffsanalyse

Hier ist ein Beispiel für Ausnutzungstransaktionen:

Beachten Sie, dass diese beiden Transaktionen unterschiedlich sind, aber das Calldata (oder die Eingabedaten) dieser beiden Transaktionen ist exakt gleich*:

0x23caab4900000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000180000000000000000000000000000000000000000000000000000000000000011500050000a7823d6f1e31569f51861e345b30c6bebf70ebe7000000000000e0f6f6a78083ca3e2a662d6dd1703c939c8ace2e268d88ad09518695c6c3712ac10a214be5109a655671000927c00101806401867f7a4d000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000a6439ca0fcba1d0f80df0be6a17220fed9c9038a0000000000000000000000000000000000000000000000ad78ebc5ac62000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000001482faed2da812d2e5cced3c12b3baeb1a522dc67700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000105041c1b1c1c981df6cdaf073d55b78d7f0c7e2b421a569bff677a9464d1d5203672d7b5a3d6af658d14ebc11c26f2547fd0aed01750cca58753a0a79b297bad8a62a71eb6b7ac2099611604eff316e7fe733e9981c1b3890cb04ff9d43612e6f2687227f0226cfa27e4b6cd96a10865e04aa9e0f369dda7548771a094f69bf0a9fa6c27257e22d2b1bbb84beb52ad3966592037b328d352fce375a1fa75cb3fbfd18166f4177a19ad2cc74ce67da68f5ce17b857e6382c3ebf20f76482534135f426f4a74222daa07d9f401cb8baca4339ecd44e285df0e0cb88447a31d08b673cecc67d22c7e6e0ce5afd2ac9439c5a8b68f05077b850cdfdfb79cdaefc5b103bb693609440000000000000000000000000000000000000000000000000000

Es ist lediglich die Eingabe zur Ausführung der Funktion safeExecuteSignaturesWithAutoGasLimit.

Offensichtlich hat der Angreifer (0x82fae) zuerst 200 WETH über die Omni-Bridge der Gnosis-Kette transferiert und dann dieselbe Nachricht auf der PoW-Kette wieder abgespielt und zusätzliche 200 ETHW erhalten. Dadurch konnte das Guthaben des auf der PoW-Kette bereitgestellten Chain-Vertrags geleert werden.

Schwachstellenanalyse

Nach der Analyse des Quellcodes der Omni-Bridge stellen wir fest, dass die Logik zur Verifizierung der chainId tatsächlich existiert.

    function _isDestinationChainIdValid(uint256 _chainId) internal returns (bool res) {
        return _chainId == sourceChainId();
    }

Leider stammt die verwendete verifizierte chainId aus dem Wert, der im Speicher namens unitStorage gespeichert ist:

    /**
     * Internal function for retrieving chain id for the source network
     * @return chain id for the current network
     */
    function sourceChainId() public view returns (uint256) {
        return uintStorage[SOURCE_CHAIN_ID];
    }

Es handelt sich NICHT um die tatsächliche chainId, die über den CHAINID-Opcode abgerufen wird, wie er in EIP-1344 vorgeschlagen wurde. Dies liegt wahrscheinlich daran, dass der Code ziemlich alt ist (er verwendet Solidity 0.4.24). Der Code funktionierte immer einwandfrei, bis zum Fork der PoW-Kette.

Kurz gesagt, die Hauptursache für die Ausnutzung ist, dass die Omni-Bridge auf der ETHW-Kette die alte chainId verwendet und nicht korrekt die tatsächliche chainId der Cross-Chain-Nachricht verifiziert. Darüber hinaus können ähnliche Probleme in anderen Protokollen bestehen.

Die Auswirkungen

Die offensichtlichen Auswirkungen sind, dass der oder die Angreifer viele ETHW (und auch andere Token, die der Bridge auf der PoW-Kette gehören) ernten und auf einigen Marktplätzen (z. B. einigen CEXs) handeln konnten. Dadurch könnte der Preis von ETHW aufgrund der erhöhten Liquidität beeinflusst werden. Daher sollten Benutzer/Investoren vorsichtig beim Handel dieser Token auf der PoW-Kette sein.

Fazit

Solidity-Entwickler sollten besondere Aufmerksamkeit darauf richten, wenn sie mit chainIds umgehen, die vom Vertrag selbst verwaltet werden sollen.

Über BlockSec

BlockSec ist ein wegweisendes Blockchain-Sicherheitsunternehmen, das 2021 von einer Gruppe weltweit herausragender Sicherheitsexperten gegründet wurde. Das Unternehmen engagiert sich für die Verbesserung der Sicherheit und Benutzerfreundlichkeit der aufkommenden Web3-Welt, um deren Massenadoption zu fördern. Zu diesem Zweck bietet BlockSec Smart Contract- und EVM-Ketten-Sicherheitsaudits, die Phalcon-Plattform für Sicherheitsentwicklung und proaktive Bedrohungsabwehr, die MetaSleuth-Plattform für Fondstracking und -untersuchung sowie die MetaDock-Erweiterung für Web3-Entwickler an, um effizient im Krypto-Bereich zu navigieren.

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/

Offizielles Twitter-Konto: https://twitter.com/BlockSecTeam

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
"Nachrichten"-Replay-Angriffe auf EthereumPoW enthüllen