Ein MetaMask-Benutzer verbindet sich mit einer Decentralized Finance (DeFi)-Plattform, um Token zu tauschen oder Liquidität bereitzustellen. Das Protokoll fordert eine sogenannte Approval-Transaktion an, die dem Smart Contract erlaubt, Token aus dem Wallet des Benutzers zu bewegen. Diese Genehmigung wird genehmigt, die DeFi-Transaktion wird durchgeführt, und der Benutzer denkt, dass das Problem gelöst ist. Tatsächlich hat dieser Genehmigungsprozess ein fundamentales Sicherheitsrisiko geschaffen: Der Smart Contract könnte theoretisch unbegrenzt viele Token abheben, nicht nur die für die aktuelle Transaktion erforderliche Menge.

Die Approval-Mechanik ist eine Konsequenz von Ethereums ERC-20-Standard und der Art, wie Smart Contracts mit Token-Transfers interagieren. Im Gegensatz zu nativen ETH-Transfers, die direkt in einer Transaktion erfolgen, müssen ERC-20-Token durch eine explizite Genehmigung freigegeben werden. Der Standard sieht vor, dass ein Benutzer einem Contract mitteilt: „Du darfst bis zu X Token von meinem Wallet ausgeben.” Diese Nachricht wird auf der Blockchain registriert und bleibt bestehen, bis der Benutzer sie explizit widerruft. Das Sicherheitsrisiko entsteht, wenn Benutzer unbegrenzte Genehmigungen (praktisch 2^256 – 1 Token) vergeben, weil das komfortabler ist als eine Genehmigung pro Transaktion.

MetaMask Approval-Benutzeroberfläche zeigt Genehmigungsverlauf und unbegrenzte Tokenzugriffe auf DeFi-Plattformen

Die technische Struktur von Token-Approvals verstehen

Wenn ein Benutzer mit einem Smart Contract auf der Ethereum-Blockchain oder einer kompatiblen Kette interagiert, führt MetaMask eine sogenannte Approval-Transaktion durch. Diese Transaktion ruft die `approve()`-Funktion des Token-Vertrags auf und speichert einen neuen Wert in einer Mapping-Datenstruktur: `allowed[userAddress][spenderAddress] = amount`. Dieser Wert wird unveränderlich auf der Blockchain registriert und kann von jedem eingesehen werden, der die Blockchain abfragt.

Die technische Besonderheit besteht darin, dass die Approval-Transaktion selbst keine Token bewegt. Sie erstellt nur eine Genehmigung, die der Smart Contract später verwenden kann. Wenn ein Benutzer beispielsweise einen Uniswap-Token-Tausch durchführt, läuft der Prozess in zwei Schritten ab: Zuerst wird eine Approval-Transaktion eingereicht, um dem Uniswap-Router-Vertrag Zugriff zu gewähren. Dann wird eine separate Transaktion eingereicht, die den eigentlichen Tausch ausführt. Beide Transaktionen müssen gebilligt und in die Blockchain eingebunden werden, was bedeutet, dass der Benutzer zwei Mal Gasgebühren zahlt.

MetaMask zeigt während des Approval-Prozesses an, wie viele Token der Vertrag verwenden darf. Moderne Implementierungen der MetaMask-Benutzeroberfläche bieten drei Optionen: eine spezifische Menge (häufig der Betrag der aktuellen Transaktion), eine benutzerdefinierte Menge oder eine unbegrenzte Menge. Die unbegrenzte Option ist standardmäßig oft vorgewählt oder wird empfohlen, da sie zukünftige Transaktionen mit demselben Vertrag vereinfacht. Der Benutzer müsste dann nicht jedes Mal eine neue Approval-Transaktion einreichen, wenn er denselben Service nutzen möchte.

Die Gefahren dieser Vereinfachung sind erheblich. Ein kompromittierter oder böswilliger Smart Contract könnte alle genehmigten Token sofort oder später abheben. Ein Protokoll-Update könnte die Approval-Logik ändern und plötzlich Zugriff auf große Vermögen haben. Ein Fehler im Vertrag könnte zu unerwarteten Token-Transfers führen. Der Benutzer, der die unbegrenzte Genehmigung vergeben hat, trägt das Risiko allein.

Warum unbegrenzte Genehmigungen praktiziert werden

Die Verbreitung unbegrenzter Approvals ist das Ergebnis eines wirtschaftlichen Kompromisses. Jede Approval-Transaktion kostet Gasgebühren. Bei hohen Ethereum-Gaspreisen können diese Gebühren erheblich sein – mehrere Dollar oder mehr, je nach Netzwerkauslastung. Ein Benutzer, der sich mit dem Curve-Protokoll verbindet, um Stablecoin-Swaps durchzuführen, könnte DeFi Plattformen häufig nutzen. Wenn er jedes Mal eine neue Approval-Transaktion einreichen müsste, würden sich die Gebühren summieren.

DeFi-Plattformen haben deshalb ein wirtschaftliches Interesse, Benutzer zu ermutigen, unbegrenzte Genehmigungen zu erteilen. Eine UI-Standardeinstellung oder eine Empfehlung reduziert Friction für Anfänger. Weniger Transaktionen bedeuten auch, dass der Smart Contract schneller mit den tatsächlichen Operationen beginnen kann. Ein Benutzer, der eine einzelne Approval-Genehmigung erteilt hat, kann diese später mehrmals verwenden, ohne weitere Genehmigungen zu benötigen.

Auf Seite-Chains und alternativen Netzwerken wie Polygon oder Optimism sind die Gasgebühren oft niedriger. Das reduziert den wirtschaftlichen Druck, unbegrenzte Genehmigungen zu akzeptieren. Dennoch bleibt die Praktik weit verbreitet, da viele Benutzer den Unterschied zwischen einer spezifischen und einer unbegrenzten Genehmigung nicht verstehen oder dem Protokoll vertrauen, dass es korrekt implementiert ist.

Ein weiterer Grund ist das Nutzungserlebnis. Wenn MetaMask beim Verbinden mit dApps eine Approval-Transaktion anfordert, kann der Benutzer verwirrt sein. Muss ich das genehmigen, um die App zu nutzen? Ist das sicher? Wird mein Geld gestohlen? Diese Unsicherheit führt oft dazu, dass Benutzer einfach die vorgesehene Option akzeptieren, ohne die Auswirkungen zu überdenken. Die Wallet Sicherheit hängt also auch davon ab, wie transparent die Interface diese Wahlmöglichkeiten darstellt.

Verständnis von Vertragsverfallsdaten und historischen Genehmigungen

MetaMask und andere Wallets können alle erteilten Approvals anzeigen, die unter einer bestimmten Adresse registriert sind. Diese Informationen sind vollständig öffentlich, da die `approve()`-Transaktionen auf der Blockchain gespeichert sind. Ein Benutzer kann unter dem Reiter „Genehmigungen” oder über externe Tools wie Etherscan oder Revoke.cash sehen, welche Verträge Zugriff auf welche Token haben und wie viele.

Das Problem der Vertragsverfallsdaten bezieht sich auf die Tatsache, dass eine erteilte Genehmigung nicht automatisch abläuft. Im Gegensatz zu einer kreditkartengebundenen Autorisierung, die nach einem bestimmten Zeitraum verfällt, oder einer Software-Lizenz, die nach einem Jahr erneuert werden muss, bleibt eine Blockchain-basierte Genehmigung auf unbestimmte Zeit bestehen. Sie verfällt nicht, wenn der Benutzer das Protokoll verlässt oder die DeFi-Plattform schließt.

Dies führt zu einer stillen Ansammlung von Approvals über die Zeit. Ein Benutzer könnte vor zwei Jahren eine Approval für ein Uniswap-ähnliches Protokoll erteilt haben, das später eingestellt wurde. Die Genehmigung existiert noch und könnte in ein böswilliges Protokoll übertragen oder durch einen Sicherheitsverlust offengelegt werden. Ein anderer Benutzer könnte sich mit einer kleinen DeFi-Plattform verbunden haben, ohne danach zu überprüfen, ob diese Plattform gehackt wurde.

Die langfristige Risikoakkumulation ist subtil aber wichtig. Jede neue Approval vergrößert die Angriffsfläche. Ein Benutzer mit 30 aktiven Approvals für verschiedene Token und Verträge läuft Risiko, wenn auch nur ein einziger dieser Verträge kompromittiert wird. Das Risiko ist nicht proportional zur Summe der Genehmigungen – es ist eher kumulativ. Ein kompromittierter Smart Contract kann nicht nur die genehmigten Token dieses Vertrags abheben, sondern auch potenzielle Lücken in der Logik des Wallets selbst ausnutzen.

Häufige Angriffsvektoren durch Approvals

Der häufigste Angriffsvektor ist ein gezielter Hack einer DeFi-Plattform oder ein Sicherheitsleck im Smart Contract selbst. Ein Entwickler könnte einen Fehler in der `approve()`-Logik übersehen, die es böswilligen Akteuren ermöglicht, Tokens zu stehlen. Beispiele aus der jüngsten Vergangenheit zeigen, dass sogar Plattformen mit Sicherheitsaudits anfällig sein können. Ein Benutzer, der eine unbegrenzte Genehmigung erteilt hat, verliert potenziell seinen ganzen Token-Bestand auf der Blockchain, nicht nur den Betrag der aktuellen Transaktion.

Ein anderer Angriffsvektor ist der sogenannte „Approval Phishing”. Ein Angreifer betreibt eine betrügerische Website oder dApp, die echt aussieht. Der Benutzer wird aufgefordert, eine Approval-Transaktion zu unterzeichnen, glaubt aber, dass er sich mit einem legitimen Protokoll verbindet. Sobald die Approval erteilt ist, können die Token des Benutzers abgezogen werden. Dies ist eine Form des Phishings, die speziell auf Approvals abzielt und schwer zu erkennen ist, da die Transaktion selbst legitim aussieht. Phishing vermeiden erfordert, dass Benutzer die URL überprüfen, Lesezeichen für offizielle Websites verwenden und niemals auf Links aus verdächtigen Nachrichten klicken.

Ein dritter Vektor ist die Eröffnung eines Wallets mit gestohlenen oder unsicheren Seed Phrases. Wenn ein Benutzer seine Recovery-Phrase Online speichert oder auf einem ungesicherten Gerät notiert, könnte ein Angreifer das Wallet importieren und alle bestehenden Approvals nutzen. Anders als bei einem traditionellen Passwort, das man ändern kann, können die zugrunde liegenden privaten Schlüssel nicht einfach zurückgesetzt werden. Der Benutzer müsste ein völlig neues Wallet mit neuer Adresse erstellen und alle Token migrieren.

Ein vierter Vektor betrifft Browser-Erweiterungen und Man-in-the-Middle-Attacken. Wenn MetaMask über eine gefälschte oder modifizierte Browser-Erweiterung installiert wird, könnte der Angreifer Approval-Transaktionen ändern, Ziel-Adressen anpassen oder Seeds abfangen. Offizielle Downloads sollten nur von sites.google.com/kryptowallets.app/metamask-wallet-extension-app oder den offiziellen Browser-Stores erfolgen, um solche Risiken zu minimieren.

Strategien zum Widerrufen und Minimieren von Approvals

Der erste Schritt zur Risikominderung ist die regelmäßige Überprüfung bestehender Approvals. MetaMask bietet die Möglichkeit, unter Einstellungen oder über externe Tools wie Revoke.cash alle aktiven Genehmigungen anzusehen. Ein Benutzer sollte in dieser Liste nach Verträgen suchen, die er nicht mehr nutzt oder nicht erkennt. Diese sind Kandidaten für einen sofortigen Widerruf.

Das Widerrufen einer Genehmigung ist technisch eine neue Approval-Transaktion mit einer Menge von Null oder durch die Festlegung einer neuen, niedrigeren Grenze. Dies kostet wiederum Gasgebühren, aber es ist notwendig, um das Risiko zu reduzieren. Eine beste Praktik ist, Genehmigungen regelmäßig zu überprüfen, zum Beispiel monatlich oder vor großen Marktbewegungen. Ein Benutzer mit hohem Vermögen sollte diesen Prozess routinemäßig durchführen.

Die zweite Strategie ist die Verwendung von begrenzten Approvals anstelle von unbegrenzten. MetaMask ermöglicht es dem Benutzer, eine spezifische Menge anzugeben, z. B. den genauen Betrag der aktuellen Transaktion oder einen leicht erhöhten Betrag. Dies reduziert die Exposition erheblich. Zwar sind mehrere Approval-Transaktionen unangenehm, aber die Sicherheit ist das Risiko wert. Ein Benutzer könnte zum Beispiel entscheiden: Ich genehmige immer nur den Betrag, den ich diese Woche ausgeben werde, nicht mehr.

Eine dritte Strategie ist die Verwendung von Spezialisierten Tools wie Revoke.cash, die automatisch Genehmigungen anzeigen und es dem Benutzer ermöglichen, mehrere Widerrufe in einer einzelnen Transaktion zu bündeln. Dies reduziert die Gaskosten gegenüber dem Widerrufen jeder Genehmigung einzeln. Solche Tools sollten jedoch nur von vertrauenswürdigen, open-source-basierten Seiten verwendet werden, da sie selbst zum Phishing-Ziel werden können.

Best Practices beim Verbinden mit dApps und Sichern des Wallets

Wenn ein Benutzer sich zum ersten Mal mit einer DeFi-Plattform über MetaMask verbindet, sollte er bewusst entscheiden, welche Genehmigung er erteilt. Die Faustregel lautet: Geben Sie nie mehr Genehmigung, als Sie für die unmittelbare Transaktion benötigen. Wenn Sie 100 USDC tauschen möchten, genehmigen Sie genau 100 USDC oder möglicherweise 110 USDC als Puffer für Slippage, nicht eine unbegrenzte Menge.

Zweitens sollte der Benutzer die URL des Protokolls überprüfen, bevor er seine Wallet verbindet. Tippfehler in der Domain oder ähnlich aussehende Websites sind häufig Phishing-Versuche. Ein Benutzer sollte in seinen Browser-Lesezeichen ein Lesezeichen der legitimen Website erstellen und dieses immer verwenden, anstatt auf Links zu klicken. Diese einfache Gewohnheit verhindert einen großen Teil der dApps-basierten Angriffe.

Drittens sollte die Seed Phrase und der private Schlüssel niemals online oder auf einem Cloud-Dienst gespeichert werden. MetaMask zeigt die Seed Phrase bei der Wallet-Erstellung oder beim Wechsel zu einem anderen Gerät. Diese sollte auf Papier notiert und an einem sicheren, physischen Ort aufbewahrt werden. Eine Kopie im E-Mail-Postfach oder in einer Notiz-App ist ein Sicherheitsrisiko ersten Grades.

Viertens sollten Benutzer regelmäßig überprüfen, ob ihre MetaMask-Erweiterung noch korrekt installiert ist und keine verdächtigen Symbole oder Verhaltensweisen aufweist. Ein Trick von Angreifern besteht darin, eine fast identische Browser-Erweiterung zu erstellen, die neben der echten MetaMask-Erweiterung läuft. Ein Benutzer könnte versehentlich beide installiert haben und die falsche Version verwenden, ohne es zu merken.

Die Rolle von MetaMask beim Schutz vor Approval-Missbrauch

MetaMask hat in den letzten Jahren mehrere Sicherheitsverbesserungen implementiert, um Benutzer vor Approval-Missbrauch zu schützen. Die Benutzeroberfläche zeigt mittlerweile deutlich an, wenn eine unbegrenzte Genehmigung erteilt wird, und warnt den Benutzer vor den Risiken. Diese Warnungen sind jedoch nur dann wirksam, wenn der Benutzer sie liest und versteht.

Ein neuere Entwicklung ist die Option, spezifische Genehmigungen direkt in MetaMask zu verwalten. Der Benutzer kann in den erweiterten Kontrolloptionen sehen und widerrufen, welche Verträge Zugriff auf welche Token haben. Dies macht den Prozess weniger abhängig von externen Tools, reduziert das Phishing-Risiko und erhöht die Kontrolle des Benutzers.

MetaMask hat auch Funktionen zur Simulation von Transaktionen integriert. Bevor ein Benutzer eine Transaktion unterzeichnet, kann MetaMask anzeigen, was diese Transaktion tatsächlich tun wird. Dies hilft, böswillige oder unerwartet Transaktionen zu erkennen, bevor sie eingereicht werden. Ein Benutzer könnte sehen: „Diese Transaktion wird 1000 Token an Adresse XYZ transferieren”, und wenn das nicht das ist, was er beabsichtigt hat, kann er abbrechen.

Zukunftsperspektiven und Standardisierungsbestrebungen

Die Blockchain-Gemeinschaft arbeitet an mehreren Standards, um die Approval-Problematik zu adressieren. Ein vielversprechender Ansatz ist das ERC-7045-Konzept, das zeitgebundene Approvals ermöglicht. Statt einer unbegrenzten oder auf unbestimmte Zeit geltenden Genehmigung würde eine Approval nach einem bestimmten Datum oder Block automatisch verfallen. Dies würde die Akkumulation von alten, ungenutzten Genehmigungen verhindern.

Ein anderer Ansatz ist die Implementierung von Approval-Plugins, die es dem Benutzer ermöglichen, benutzerdefinierte Regeln zu definieren. Ein Benutzer könnte beispielsweise festlegen: „Dieser Vertrag darf maximal 10.000 USDC pro Woche abheben, nicht mehr.” Dies würde ein Sicherheitsnetz bieten, selbst wenn der Smart Contract kompromittiert wurde. Solche Systeme sind jedoch kompliziert und erfordern tiefere Integrationen in Wallets und Blockchains.

Die realistische Zukunft ist wahrscheinlich eine Mischung aus besserer Benutzerbildung, verbesserten Wallet-Interfaces und gradueller Adoption neuer Standards. Während diese Verbesserungen implementiert werden, bleibt die Verantwortung beim Benutzer, Genehmigungen bewusst zu verwalten, alte Genehmigungen zu überprüfen und vertrauenswürdige DeFi Plattformen auszuwählen.

Häufig gestellte Fragen

Was ist der Unterschied zwischen einer Approval-Transaktion und einem echten Token-Transfer?

Eine Approval-Transaktion gibt einem Smart Contract die Berechtigung, Token zu einem späteren Zeitpunkt zu bewegen, übergibt aber keine Token selbst. Ein echtes Token-Transfer bewegt sofort Token von einer Adresse zur anderen. Die Approval ist eine Genehmigung, während der Transfer die eigentliche Bewegung ist. Beide müssen auf der Blockchain registriert werden und kosten Gasgebühren.

Warum sollte ich meine Genehmigungen regelmäßig überprüfen?

Jede erteilte Genehmigung bleibt auf unbestimmte Zeit bestehen und könnte genutzt werden, wenn der Smart Contract kompromittiert wird oder die Plattform gehackt wird. Ein Benutzer mit 20 verschiedenen Approvals läuft Risiko, wenn auch nur eine dieser Plattformen ein Sicherheitsleck hat. Regelmäßige Überprüfungen und das Widerrufen ungenutzter Genehmigungen reduzieren diese Exposition erheblich.

Kostet das Widerrufen einer Genehmigung Gasgebühren?

Ja, das Widerrufen einer Genehmigung ist technisch eine Approval-Transaktion mit einer Menge von Null und kostet daher Gasgebühren wie jede andere Transaktion. Bei hohen Gaspreisen kann dies teuer sein. Tools wie Revoke.cash können jedoch mehrere Widerrufe in einer Transaktion bündeln, um Gebühren zu sparen. Der Sicherheitsvorteil überwiegt normalerweise die Kosten.