Preise werden geladen…

Smart-Contract-Freigaben widerrufen (und warum das wichtig ist)

Inaktive Token-Freigaben sind eines der größten Einfallstore für Angriffe. Hier finden Sie eine monatliche Routine, um riskante Allowance auf Ethereum und L2s zu finden, einzustufen und zu widerrufen.

Smart-Contract-Freigaben widerrufen (und warum das wichtig ist)

Was eine Token-Genehmigung tatsächlich ist und warum sie den Trade überdauert

Wenn du einen Token auf einer dezentralen Börse tauschst, Vermögenswerte auf einem Geldmarkt verleihst oder über ein DeFi-Dashboard stakst, übergibst du deine Token nicht an eine Person. Du signierst eine Nachricht, die den Smart Contract des Tokens auffordert, einem anderen Smart Contract zu erlauben, eine bestimmte Anzahl deiner Token in deinem Namen zu bewegen. Diese signierte Nachricht ist die Genehmigung, und sie lebt unbegrenzt on-chain, bis du oder jemand anderes sie ausdrücklich widerruft.

Genau hier liegt das Missverständnis der meisten Einsteiger. Die Genehmigung ist nicht an einen einzelnen Trade gebunden. Sie ist eine dauerhafte Erlaubnis. Die DEX oder das Lending-Protokoll, mit dem du 2023 interagiert hast, kann prinzipiell auch heute noch Token aus deiner Wallet bewegen, weil der Token-Vertrag selbst festgehalten hat, dass er dazu berechtigt ist.

Es gibt zwei Varianten, die du in einem Tool wie Etherscan siehst. Eine „begrenzte" Genehmigung setzt eine Obergrenze, zum Beispiel 100 USDC, nach der der Vertrag dich erneut um eine Signatur bitten muss. Eine „unbegrenzte" Genehmigung (technisch der maximal in einem uint256 darstellbare Wert, also einer 256-Bit-Ganzzahl ohne Vorzeichen, oder eine Zahl, die so groß ist, dass sie praktisch unbegrenzt ist) setzt keine Obergrenze. Die meisten DeFi-Frontends verwenden standardmäßig unbegrenzte Genehmigungen, weil sie dem Nutzer bei jedem künftigen Trade eine zusätzliche Signatur ersparen und weil es sich verschwenderisch anfühlt, zweimal Gas für dieselbe dapp zu zahlen.

Der Kompromiss ist real: Eine unbegrenzte Genehmigung ist bequem für dich, und sie ist ebenso bequem für jeden, der später die Kontrolle über diesen Vertrag übernimmt.

Das Risiko: Wie eine vergessene Genehmigung zum Diebstahl wird

Das Fehlermuster ist selten ein neuer, raffinierter Hack. Es ist fast immer eines von drei älteren Mustern, und alle werden durch Genehmigungen verschlimmert, die seit Monaten on-chain schlummern.

1. Der Vertrag selbst wird kompromittiert. Ein Entwickler-Schlüssel wird durch Phishing gestohlen, eine Multisig-Wallet wird übernommen, oder das Protokoll wird Opfer eines Governance-Angriffs, bei dem Angreifer einen Vorschlag durchbringen, der die Verträge auf eine bösartige Version aktualisiert. Sobald der Vertrag feindlich gesteuert wird, ist jede noch aktive Genehmigung, die er hält, eine scharf geladene Waffe, die auf die Wallet des Nutzers zeigt. Der Nutzer muss mit nichts Neuem interagieren. Der Vertrag ruft einfach selbst transferFrom auf.

2. Das Protokoll wird aufgegeben, aber der Vertrag wird nicht pausiert. Viele DeFi-Projekte werden veröffentlicht, sammeln Geld ein, verlieren das Interesse und wickeln sich leise ab. Die Verträge laufen weiter. Wird später eine Schwachstelle gefunden und gibt es kein Team, das sie patcht, können Angreifer jede Wallet leerräumen, die diese Adresse jemals genehmigt hat. Das ist wiederholt mit alten Staking- und Yield-Aggregator-Verträgen aus dem Zyklus 2020 bis 2021 passiert.

3. Du hast eine Phishing-Seite genehmigt, die wie eine echte dapp aussah. Eine gefälschte Uniswap- oder Aave-Oberfläche signiert eine Genehmigung für einen Vertrag, den der Angreifer kontrolliert. Der Nutzer glaubt zu traden, hat aber in Wirklichkeit einem Fremden die Erlaubnis erteilt, einen bestimmten Token abzuziehen. In diesem Fall ist ein Widerruf dringend, und er ist zugleich die einzige Lösung, da die signierte Genehmigung bereits on-chain ist.

Beachte, was in dieser Liste fehlt: Du musst nicht erneut „gehackt" werden, damit der Diebstahl passiert. Die Schwachstelle ist die Genehmigung selbst, die in kühler Lagerung auf der Blockchain darauf wartet, durch ein künftiges Ereignis aktiviert zu werden.

So sehen Sie, was Sie bereits genehmigt haben

Der erste Schritt ist eine Bestandsaufnahme. Verbinden Sie Ihre Wallet mit einem von drei Tools, die alle dieselben zugrunde liegenden Blockchain-Daten lesen und sie auf leicht unterschiedliche Weise darstellen.

Revoke.cash ist am einsteigerfreundlichsten. Sie rufen die Seite auf, verbinden Ihre Wallet, und das Tool listet jede Genehmigung auf, die Sie über die unterstützten Chains hinweg signiert haben. Dazu gehören heute Ethereum, Arbitrum, Optimism, Base, Polygon, BNB Chain und die meisten anderen großen EVM- (Ethereum Virtual Machine) Netzwerke. Jede Zeile zeigt den Token, den Spender (den Vertrag, der den Token bewegen darf), das Allowance (wie viel er bewegen darf) und eine Schaltfläche „Revoke“. Außerdem kennzeichnet es Verträge, die lange nicht mehr genutzt wurden, als potenziell inaktiv.

Das Etherscan-Token-Approval-Tool finden Sie unter etherscan.io/tokenapprovalchecker. Es ist etwas weniger poliert als Revoke.cash, wird aber von einem Team mit langer öffentlicher Erfolgsbilanz betrieben und findet manchmal Randfälle, die Revoke.cash übersieht. Der Ablauf ist derselbe: verbinden, prüfen, widerrufen.

Rabbys integrierter Approval-Manager ist die einzige On-Chain-Option, die keinen Besuch einer Drittanbieterseite erfordert. Rabby ist eine Wallet (Browser-Erweiterung und mobile App), die Ihre Genehmigungen selbst liest und eine Liste „gefährlicher Genehmigungen“ in der Wallet-Oberfläche anzeigt. Wenn Sie Rabby bereits nutzen, ist dies der Weg mit dem geringsten Aufwand. Die Daten sind dieselben; die Benutzeroberfläche befindet sich lediglich an einem Ort, dem Sie bereits vertrauen.

Welches Tool Sie auch wählen, verwenden Sie pro Sitzung nur eines. Das Risiko beim Jonglieren mit mehreren Tabs für Genehmigungsprüfer besteht darin, dass Sie den Überblick verlieren, welche Seite mit Ihrer Wallet verbunden ist, was an sich ein leichtes Phishing-Risiko darstellt.

So erkennen Sie, welche Genehmigungen tatsächlich gefährlich sind

Sobald Sie die Liste haben, müssen Sie nicht alles widerrufen. Ein guter erster Durchgang priorisiert die riskantesten Einträge.

Unbegrenzte Genehmungen zuerst. Sortieren oder filtern Sie die Liste nach Zeilen, die eine riesige Zahl anzeigen, oft in wissenschaftlicher Notation wie 1.15792e+59, was die codierte Form des maximalen uint256 ist. Dies sind die wirkungsvollsten Bereinigungen. Jede davon ist ein Vertrag, der 100 Prozent dieses Tokens aus Ihrer Wallet bewegen kann, ohne erneut zu fragen.

Begrenzte Genehmungen an Verträge, die Sie nicht mehr nutzen, sind als Nächstes dran. Wenn Sie vor zwei Jahren einen Staking-Vertrag für genau 500 Token genehmigt haben und ihn nicht mehr verwenden, ist diese Genehmigung weiterhin aktiv. Der Wirkungsbereich ist kleiner als bei einer unbegrenzten Genehmigung, aber es ist trotzdem eine geladene Waffe, die auf einen Vertrag zeigt, den Sie nicht überwachen.

Inaktive Verträge verdienen besondere Aufmerksamkeit. Die meisten Genehmigungs-Tools zeigen einen Zeitstempel der letzten Nutzung an oder markieren Verträge, die seit über einem Jahr keine Transaktion mehr getätigt haben. Dabei handelt es sich am ehesten um Genehmigungen für aufgegebene Projekte, und aufgegebene Projekte sind die Genehmigungen, die später am ehesten ausgenutzt werden. Widerrufen Sie diese.

Aktive Verträge, die Sie weiterhin nutzen, können warten. Wenn Sie aktiv auf Uniswap handeln und auf Aave verleihen, können Sie diese Genehmungen offen lassen. Jeden Handel zu widerrufen und neu zu genehmigen, verschwendet Gas und verursacht Signaturmüdigkeit, was ein eigenes Sicherheitsrisiko darstellt. Ziel einer monatlichen Bereinigung sind nicht null Genehmigungen, sondern null veraltete Genehmigungen.

Die Mechanik des Widerrufs und was er tatsächlich kostet

Ein Widerruf ist selbst eine On-Chain-Transaktion. Sie rufen die Approve-Funktion im Token-Vertrag auf und setzen Ihr Allowance für diesen Spender auf null. Der Token-Vertrag speichert das neue Allowance, und ab diesem Block kann der Spender Ihre Token nicht mehr bewegen.

Auf der Ethereum-Mainnet kostet ein einzelner Widerruf je nach Auslastung typischerweise zwischen einem und fünf Dollar an Gas. Wenn Sie zwanzig veraltete Genehmigungen haben, ist das eine nicht unerhebliche Rechnung. Auf Layer-2-Netzwerken (L2s) wie Base, Arbitrum oder Optimism kostet derselbe Aufruf Centbeträge, manchmal Bruchteile eines Cents, da L2s Transaktionen bündeln und die Sicherheit von Ethereum erben, dabei aber deutlich geringere Gebühren verlangen. Wenn Sie entscheiden, wo Sie Ihre monatliche Bereinigung durchführen, ist es fast immer richtig, dies auf dem L2 zu tun, den Sie tatsächlich nutzen.

Es gibt eine kleine, aber reale Stolperfalle. Wenn Sie eine Widerrufstransaktion absenden, muss die Wallet Gas bezahlen, und das Gas muss aus dem nativen Vermögenswert dieser Chain stammen, also ETH auf Ethereum und Arbitrum, MATIC auf Polygon, BNB auf BNB Chain. Wenn Ihre Wallet nur Stablecoins hält und der Saldo des nativen Vermögenswerts null ist, schlägt der Widerruf fehl. Halten Sie einen kleinen Betrag des nativen Tokens in jeder Wallet, die Sie bereinigen möchten, in der Größenordnung von wenigen Dollar.

Eine weitere Stolperfalle: Ein Widerruf ist insofern unumkehrbar, als Sie das Gas nicht zurückerhalten, aber er ist insofern trivial umkehrbar, als Sie denselben Vertrag am nächsten Tag einfach erneut genehmigen können. Es gibt keine Strafe dafür, einen Vertrag zu widerrufen, den Sie später doch wieder nutzen möchten; Sie müssen lediglich eine neue Genehmung signieren, Gas dafür bezahlen und weitermachen.

Was ein Widerruf nicht bewirkt

Ein Widerruf verhindert zukünftige Abflüsse von dem Vertrag, den Sie widerrufen haben. Er kann einen bereits geschehenen Abfluss weder rückgängig machen noch ungeschehen machen. Wenn Ihre Wallet im März leergeräumt wurde und Sie im Mai widerrufen, sind die Token aus März weg, und die Widerrufstransaktion steht in keiner rechtlichen, forensischen oder wiederherstellbaren Beziehung zum Diebstahl.

Ein Widerruf schützt Sie auch nicht vor einer neuen Genehmigung, die Sie morgen signieren. Wenn Sie eine Phishing-Seite besuchen, eine Genehmigung für einen bösartigen Vertrag signieren und dann versuchen, aufzuräumen, ist die neue Genehmigung das Problem, und das Widerrufen Ihrer alten Uniswap-Allowance behebt es nicht.

Ein Widerruf bewegt Ihre Token nicht. Er erfordert keinen Swap, keine Signatur eines Dritten und keine Interaktion mit dem Spender-Vertrag. Es ist ein einzelner Funktionsaufruf an den Token-Vertrag selbst, der ihm mitteilt, eine Zeile in seinem Allowance-Ledger auf null zu setzen.

Eine monatliche Routine, die du wirklich durchhalten kannst

Der wichtigste Grund, warum Menschen Freigaben nie widerrufen, ist, dass es sich wie eine einmalige Pflicht anfühlt, was garantiert, dass es nie erledigt wird. Die zuverlässigste Lösung ist, sie an einen Kalendertermin zu binden. Der erste Sonntag im Monat ist eine beliebte Wahl, weil das Wochenende ruhig ist und du seltener mitten in einem Trade steckst; manche wählen aus demselben Grund den Tag, an dem ihre Kreditkartenabrechnung erstellt wird. Der konkrete Tag spielt keine Rolle. Die Wiederholung schon.

Am Aufräumtag ist der Ablauf kurz. Öffne Revoke.cash, Etherscan oder deinen Rabby-Freigaben-Manager. Verbinde die Wallet, die du aktiv nutzt. Sortiere zuerst nach unbegrenzten Freigaben und widerrufe diese. Scanne dann nach ruhenden Verträgen, die das Tool normalerweise markiert, und widerrufe auch diese. Lass aktive Verträge, die du weiterhin nutzt, in Ruhe. Bestätige jede Transaktion, warte, bis sie abgeschlossen ist, und schließe den Tab.

Zeitaufwand auf einem L2: ungefähr fünf bis zehn Minuten. Zeitaufwand auf Mainnet: ähnlich, plus ein paar Dollar an Gas. Ist die Gewohnheit erst einmal verankert, kostet sie weniger Zeit als das Prüfen deines Kontoauszugs und zahlt sich beim ersten Mal, wenn sie einen Drain blockiert, von selbst.

So verfolgst du Wallet-Security-News auf smarte Weise

Wallet-Security-Vorfälle entwickeln sich schnell, und der Unterschied zwischen einem „beherrschbaren Hack" und einem „Totalverlust" ist fast immer, wie schnell ein Nutzer von einem anfälligen Vertrag erfährt und seine Freigabe widerruft, bevor ein Angreifer sie leerzieht. Jedes Governance-Forum, jeden Audit-Bericht und jeden Post-Mortem jedes Protokolls von Hand zu verfolgen ist ein aussichtsloses Spiel. Zippfeed liefert Wallet-Security- und DeFi-Exploit-Schlagzeilen mit Sentiment-Bewertung (bullish, neutral oder bearish) und einer Wichtigkeitsstufe, damit du die richtigen Freigaben widerrufen kannst, bevor der nächste Drain zuschlägt, und nicht erst danach.

Häufig gestellte Fragen

Ist die Nutzung von Revoke.cash sicher?
Revoke.cash ist eines der am weitesten verbreiteten Werkzeuge zur Verwaltung von Freigaben und arbeitet standardmäßig nur lesend: Wenn Sie Ihre Wallet verbinden, kann die Seite Ihre Freigaben lesen, aber keine Gelder ohne eine von Ihnen signierte Transaktion bewegen. Allerdings gelten die üblichen Risiken jeder dapp. Überprüfen Sie daher immer die URL, legen Sie sie als Lesezeichen an, statt danach zu suchen, und signieren Sie niemals eine Transaktion, die Sie nicht verstehen. Bildung statt Finanzberatung: Ein seriöses Werkzeug zu nutzen ist eine gute Gewohnheit, aber kein Tool ersetzt das Lesen dessen, was Sie gerade signieren.
Wie funktioniert eine ERC-20-Freigabe eigentlich?
Wenn Sie eine Freigabe signieren, rufen Sie die approve-Funktion im Smart Contract eines Tokens auf und erlauben damit einer bestimmten Spender-Adresse, eine festgelegte Menge Ihrer Tokens zu bewegen. Der Token-Contract speichert diese Allowance, und der Spender kann transferFrom in Ihrem Namen bis zu diesem Limit aufrufen. Die Freigabe bleibt so lange on-chain bestehen, bis Sie sie wieder auf null setzen. Deshalb ist eine Freigabe für einen längst aufgegebenen Contract auch Jahre später noch ein konkretes Risiko.
Sollte ich jede Freigabe widerrufen, die ich habe?
Sie müssen nicht jede Freigabe widerrufen, und der Versuch, alles zu widerrufen, vergeudet meist Gas und führt zu Signature-Müdigkeit. Priorisieren Sie unbegrenzte Freigaben für Contracts, die Sie nicht mehr nutzen, danach inaktive Contracts und schließlich begrenzte Freigaben für alte Protokolle. Lassen Sie Freigaben für Protokolle offen, die Sie aktiv verwenden, denn ständiges Widerrufen und erneutes Freigeben kostet Geld und bringt keinen echten Sicherheitsvorteil. Ziel einer Bereinigung ist null veraltete Freigaben, nicht null Freigaben insgesamt.
Widerruft eine Freigabe meine Verluste, wenn ich bereits geleert wurde?
Nein. Eine Freigabe zu widerrufen ist eine vorausschauende Maßnahme: Sie verhindert, dass der widerrufene Contract Ihre Tokens in Zukunft bewegen kann, kann aber bereits gestohlene Tokens nicht rückgängig machen, zurückerstatten oder wiederbeschaffen. Wenn Ihre Wallet geleert wurde, ist der richtige Weg die Reaktion auf den Vorfall, nicht die Freigaben-Bereinigung: Verschieben Sie verbliebene Mittel auf eine neue Wallet, dokumentieren Sie die Transaktionen und melden Sie den Vorfall dem betroffenen Projekt sowie Blockchain-Analyseunternehmen. Freigaben-Hygiene ist Prävention, kein Rückerstattungsmechanismus.