Preise werden geladen…

setApprovalForAll-Phishing: Wallet-Signaturen verstehen, bevor du unterschreibst

Mit setApprovalForAll kann ein Vertrag jede NFT verschieben, die du besitzt. Permit-Signaturen können Token-Ausgaben mit einem Klick autorisieren. Beide zählen 2025 zu den häufigsten Phishing-Vektoren.

setApprovalForAll-Phishing: Wallet-Signaturen verstehen, bevor du unterschreibst

Warum die meisten Krypto-Nutzer Wallet-Signaturen unterschätzen

Wallet-Pop-ups sehen alle ähnlich aus: ein Webseitenname oben, ein Methodenname in der Mitte, ein Bestätigen-Button unten. Da sich die visuelle Hülle zwischen einem 5-Dollar-Token-Swap und einer kompletten Wallet-Leerung kaum unterscheidet, klicken Nutzer sie einfach durch. Genau diese Gewohnheit nutzt Signature-Phishing aus.

Die Wahrheit ist, dass die vier häufigsten Signaturtypen, approve(), setApprovalForAll(), permit und eth_sign, radikal unterschiedliche Dinge tun. Drei davon sind gut verstanden und haben legitime Anwendungen. Einer, eth_sign, hat in modernem Ethereum keine legitime Verwendung und existiert fast ausschließlich in Phishing-Kits. Sie als austauschbar zu behandeln, ist der Grund, warum Menschen ihre Sammlungen verlieren.

Bevor wir jeden einzelnen durchgehen, hilft es, sich daran zu erinnern, dass eine Wallet-Signatur eine Autorisierung ist, nicht nur eine Authentifizierung. Wenn du mit deinem privaten Schlüssel signierst, beweist du nicht nur, wer du bist; du gibst dem Empfänger oft die Erlaubnis, einen Vermögenswert in deinem Namen zu bewegen. Die Signatur ist die Erlaubnis.

Die Signaturtypen, geordnet nach Häufigkeit von Wallet-Leerungen

Nicht jede Signatur setzt deine Gelder dem gleichen Risiko aus. So schneiden die vier Haupttypen im Vergleich ab, grob geordnet vom gefährlichsten zum harmlosesten.

eth_sign: fast immer ein Betrug

eth_sign erzeugt eine rohe ECDSA-Signatur über beliebigen Text, ohne strukturierte Daten und ohne On-Chain-Domain. Es gibt kein Standard-Nachrichtenformat, daher muss dir die Seite in einfacher Sprache mitteilen, was du signierst, und die meisten Wallets parsen es nicht einmal. Alles, was dich 2026 auffordert, eine eth_sign-Nachricht zu signieren, ist überwiegend ein Phishing-Versuch. Einige wenige legitime Tools verwenden es noch (ältere Authenticatoren, manche Debug-Konsolen), aber für den täglichen DeFi- und NFT-Gebrauch solltest du eth_sign als automatische Ablehnung behandeln.

setApprovalForAll: pauschaler NFT-Zugriff

setApprovalForAll(tokenAddress, operator, true) weist den NFT-Vertrag an, einer bestimmten Operator-Adresse zu erlauben, jede NFT zu bewegen, die du aus dieser Sammlung besitzt, sowohl aktuelle als auch zukünftige. Einen NFT-Marktplatz wie OpenSea oder Blur zu approven ist normal: Der Marktplatz muss NFTs transferieren, wenn dein Listing gefüllt wird. Das Problem ist, dass derselbe Aufruf an einen Phishing-Vertrag deine gesamte Bored-Ape-Sammlung übergibt, nicht nur ein einzelnes Token.

Der Schaden ist nicht begrenzt. Wenn du später eine neue NFT aus dieser Sammlung mintest, deckt die alte Genehmigung sie weiterhin ab. Wenn du einen Airdrop in denselben ERC-721-Vertrag erhältst, kann der Operator diese ebenfalls abziehen. Es gibt kein Ablaufdatum und keine pro-Token-Obergrenze.

Permit-Signaturen: gaslose Token-Approvals

Permit (EIP-2612) und sein Nachfolger Permit2 erlauben dir, eine ERC-20-Ausgabe mit einer Off-Chain-Signatur zu autorisieren, anstatt mit einer On-Chain-Approve-Transaktion. Der Vorteil ist real: kein Gas, reibungslosere UX, kein separater Approval-Schritt. Der Preis ist, dass eine Permit-Signatur ein Blankoscheck ist, den der Spender jederzeit vor der von dir gesetzten Frist einreichen kann.

Stablecoins sind das bevorzugte Ziel. Eine Phishing-Seite, die einen „USDC-Claim" oder „Airdrop-Checker" anbietet, kann still eine Permit anfordern, die dem Angreifer unbegrenzt USDC für die nächste Stunde oder länger gibt. Du verlässt vielleicht die Seite, gehst weg und kommst Stunden später zurück, nur um festzustellen, dass dein USDC weg ist. Die Transaktion zeigt sogar den legitimen Token und deine eigene Adresse, was sie in Block-Explorern normal aussehen lässt.

approve(): der begrenzte, aber trotzdem riskante Standard

approve(spender, amount) legt eine Token-Erlaubnis fest. Wenn der Betrag klein ist (sagen wir, 5 USDC für einen Swap), ist der Schadensradius klein. Wenn der Betrag die magische Konstante MaxUint256 (~2^256 - 1) ist, ist das Approval effektiv unbegrenzt und verhält sich ähnlich wie ein Permit.

Viele legitime DeFi-Protokolle fordern standardmäßig unbegrenzte Approvals an, weil sie nur einmal fragen müssen und später abwickeln. Diese Bequemlichkeit ist auch die Bequemlichkeit des Angreifers: Wenn die Schlüssel des Spenders leaken, verlassen deine Token mit ihnen die Wallet.

Schritt für Schritt: So liest du eine Wallet-Popup, bevor du unterschreibst

Egal welche Wallet, die Routine ist immer dieselbe. Unterschreibe niemals im Autopiloten.

Schritt 1: Lies den Funktionsnamen

Wenn du setApprovalForAll, permit oder eth_sign siehst, halte inne. Jede dieser Funktionen birgt die oben beschriebenen Risiken. Bei einem sauberen Swap steht transferFrom oder ein Swap-Router-Aufruf, nicht eine Berechtigungserteilung.

Schritt 2: Lies die Parameter

Prüfe bei Approvals, wer der Spender ist. Prüfe bei setApprovalForAll die Operator-Adresse. Vergleiche beides mit dem echten Vertrag des Protokolls (Reiter „Contract“ auf Etherscan, Projektdokumentation). Wenn die Adresse brandneu ist oder keinen öffentlichen Namen hat, behandle sie als feindlich, bis das Gegenteil bewiesen ist.

Schritt 3: Lies die Simulation

Moderne Wallets (Rabby, Frame, MetaMask mit Tenderly-Simulation) zeigen eine Vorschau der State-Changes: welche Tokens sich bewegen, in welche Richtung, über welchen Vertrag. Wenn die Simulation leer ist oder nicht lädt, ist das selbst ein Warnsignal. Legitime Signaturen erzeugen vorhersehbare Simulationen.

Schritt 4: Prüfe die Deadline

Permit-Nachrichten enthalten einen Deadline-Zeitstempel. Eine Deadline, die ein Jahr in der Zukunft liegt, ist gefährlicher als eine, die in zehn Minuten abläuft. Der signatureTransfer von Permit2 enthält zusätzliche Felder (witness, expiration), die bestimmen, wie breit die Signatur genutzt werden kann. Ungewöhnlich große Deadlines sind verdächtig.

Schritt 5: Nutze eine dedizierte Burner-Wallet

Für Airdrops, Mints und unbekannte Seiten verwende eine separate Wallet, die nur so viel Guthaben enthält, wie du zu verlieren bereit bist. Approvals auf der Burner-Wallet können deine Hauptbestände niemals berühren. Das ist die günstigste Versicherung in Krypto.

So machen Angreifer aus legitimen Signaturen einen Drain

Das Beunruhigende ist, dass der Angreifer selten irgendwelche Kryptografie brechen muss. Er muss dich nur einmal auf Bestätigen klicken lassen.

Die klassische NFT-Listing-Falle

Du landest auf einer gefälschten OpenSea-Seite, die das echte UI spiegelt. Sie bittet dich, ein „hängendes Listing zu stornieren“, indem du ein setApprovalForAll für den Marketplace-Vertrag unterschreibst. Die meisten Nutzer merken nicht, dass „Listing stornieren“ gar keine Signatur erfordert, also unterschreiben sie. Der Angreifer kontrolliert nun jede NFT in dieser Wallet für diese Kollektion, und die Approval läuft nie ab.

Seaport-Marketplace-Signaturen

Das Seaport-Protokoll von OpenSea nutzt Off-Chain-Order-Signaturen (statt On-Chain-Listings), um Offers und Listings günstiger zu machen. Eine signierte Seaport-Order ist ein Bündel von Parametern: zone, conduit, fulfilling components usw. Phishing-Seiten haben gelernt, diese Signaturen nachzuahmen, weil Nutzer „OpenSea“ in der Signatur sehen und annehmen, sie sei sicher. Lies die Parameter, nicht den Protokollnamen.

Stablecoin-Permit-Phishing

USDC und USDT unterstützen EIP-2612 Permits. Eine Seite, die „dein USDC-Guthaben verifiziert“, kann ein Permit im Sign-Button verstecken. Du bestätigst einmal, gehst weg, und die Signatur wartet im Mempool darauf, dass der Angreifer sie innerhalb des Gültigkeitsfensters einreicht. Die On-Chain-Transaktion sieht aus wie ein normales USDC TransferFrom, was es später im Block-Explorer schwerer erkennbar macht.

Address-Poisoning trifft Approvals

Einige Phishing-Kits erzeugen mittlerweile eine Vanity-Adresse, die mit denselben Zeichen beginnt und endet wie dein echter Counterparty. Wenn ein Nutzer den Empfänger überfliegt, wirkt der Prefix-Match korrekt. Derselbe Trick wird nun auf Spender-Felder bei Approvals übertragen: der bösartige Spender teilt die ersten und letzten vier Zeichen mit einem legitimen Spender, in der Hoffnung, dass du visuell approvst, statt die volle Adresse zu lesen.

Praktische Auswirkungen: So machst du deine Wallet schwerer drainbar

Signaturen lesen ist Gewohnheit, keine Begabung. Baue dir ein paar Defaults auf, die auch abends müde noch funktionieren.

  • Nutze Rabby oder Frame als tägliche Wallet. Beide parsen gängige Signaturtypen in einfaches Englisch und zeigen die tatsächlich aufgerufene Funktion, nicht nur den Methodennamen.
  • Verwende eine Hardware-Wallet für alle nennenswerten Bestände. Die Signaturschlüssel berühren nie einen internetverbundenen Rechner, sodass selbst eine bösartige Dapp keine verwertbare Signatur extrahieren kann.
  • Führe monatlich eine Approvals-Prüfung mit revoke.cash (beliebt, übersichtliche UI) oder dem Etherscan-Approval-Checker (ohne Login, Rohdaten) durch. Revoke alles, was für Verträge besteht, die du seit 90 Tagen nicht genutzt hast.
  • Ersetze Blanket-Approvals nach jedem großen Swap: Setze die Allowance zuerst auf 0 und approv dann einen kleinen Betrag erneut. Dadurch werden alte unbegrenzte Approvals ungültig.
  • Deaktiviere eth_sign in den Wallet-Einstellungen, falls die Option existiert. MetaMask, Rabby und Rainbow bieten dies in den erweiterten Einstellungen an.
  • Setze Lesezeichen für die Dapps, die du tatsächlich nutzt. Phishing erreicht die meisten Nutzer über Suchanzeigen oder Twitter-Links, nicht über Lesezeichen. Alles, was über ein Suchergebnis erreicht wird, verdient eine zusätzliche Prüfung.

Nichts davon ist ein großer Aufwand. Der Punkt ist, dass der marginale Aufwand, eine Signatur zu verifizieren, klein ist, während die Kosten des Überspringens die gesamte Wallet sind.

Häufig gestellte Fragen zu Signature-Phishing

Im Folgenden die Fragen, die Leser am häufigsten in Suchmaschinen zu Wallet-Signature-Phishing eingeben. Die Antworten bleiben bei sachlichen Fakten und sind keine Finanzberatung, da das richtige Verhalten hier vom jeweiligen Bestand und Bedrohungsmodell des Lesers abhängt.

So behältst du die Wallet-Sicherheit clever im Blick

Wallet-Signatur-Phishing ist so schnelllebig, weil sich die Angriffsfläche ständig verändert: Jede neue DeFi-Primitive bringt einen neuen Signaturtyp mit sich, und jedes neue Wallet-Feature liefert einen neuen visuellen Hinweis, den es zu deuten gilt. Genehmigungen, Betrugsmeldungen und Post-Mortems über mehrere Chains hinweg im Auge zu behalten ist ein Vollzeitjob, und die meisten Nutzer haben diese Zeit nicht.

Zippfeed bündelt Sicherheits-Schlagzeilen aus dem Ethereum-Umfeld und dem gesamten Krypto-Ökosystem, bewertet jede Meldung nach Stimmung (bullish, neutral oder bearish für das jeweils genannte Protokoll) und zeigt eine Wichtigkeitsbewertung von 0 bis 100 an. So lässt sich der Tag in wenigen Minuten überblicken, man sieht sofort, welche Signaturen und Genehmigungen aktuell missbraucht werden, und kann riskante Spender rotieren, bevor das Konto leergeräumt wird.

Häufig gestellte Fragen

Ist es sicher, setApprovalForAll für einen NFT-Marktplatz zu signieren?
Es ist sicher, wenn die Operator-Adresse der legitime Marktplatz-Vertrag ist (OpenSea, Blur, LooksRare usw.), und riskant, wenn du nicht weißt, wer der Operator ist. setApprovalForAll ist pauschal: Es deckt jede NFT in dieser Sammlung ab, einschließlich solcher, die du später mintest. Signiere es daher nur für Marktplatz-Adressen, die du unabhängig überprüft hast. Nach dem Handel solltest du die Freigabe auf revoke.cash widerrufen, um auf der sicheren Seite zu sein.
Was ist der Unterschied zwischen approve, permit und setApprovalForAll?
approve(spender, amount) legt eine begrenzte oder unbegrenzte Allowance für einen ERC-20-Token fest. permit (EIP-2612) macht dasselbe off-chain, sodass eine einzige Signatur später eine Token-Übertragung ohne On-Chain-Approval autorisieren kann. setApprovalForAll(operator, true) deckt jede NFT in einer Sammlung ab und nicht nur eine bestimmte Menge, was es deutlich mächtiger macht als approve. Keine dieser Funktionen ist grundsätzlich bösartig, doch alle drei werden regelmäßig von Phishing-Seiten missbraucht. Lies daher die Spender- bzw. Operator-Adresse sorgfältig, bevor du bestätigst.
Sollte ich jemals eine eth_sign-Nachricht signieren?
Im modernen DeFi- und NFT-Alltag praktisch nie. eth_sign erzeugt eine unstrukturierte Signatur ohne klare Parsing-Garantien, weshalb die meisten Wallets laut warnen, wenn sie auftaucht. Einige ältere Tools und Entwickler-Konsolen nutzen eth_sign zwar noch, doch für normale Nutzer gilt: Jedes eth_sign-Pop-up als Phishing-Versuch behandeln und ablehnen. Wenn ein seriöses Produkt es dennoch verlangt, überprüfe es zuerst über den offiziellen Support-Kanal des Projekts.
Was ist Permit2 und warum ist es relevant?
Permit2 ist Uniswaps General-Permit-Vertrag (Ende 2022 deployt), der jeder ERC-20 ermöglicht, permit-artige Signaturen zu nutzen, auch ohne native EIP-2612-Unterstützung. Viele Wallets und Aggregatoren leiten Approvals inzwischen standardmäßig über Permit2, was praktisch ist, aber auch die Angriffsfläche vergrößert: Eine Permit2-Signatur kann ein Witness-Feld enthalten, mit dem die dApp beliebigen Kontext (Token, Betrag, Empfänger) anhängen und gebündelte Übertragungen über viele Tokens hinweg autorisieren kann. Auch hier gilt: Parameter und Deadline genau prüfen und niemals eine Permit2-Nachricht für einen unbekannten Vertrag signieren.
Verwandte Tokens
$ETH $USDC