DCDROPCHECK
ToolsBetrugs-CheckAirdrop-GuidesGrundlagenÜber uns

Risiken beim Wallet-Signieren: Approval- vs. Transaktions-Signatur

Risiken beim Wallet-Signieren: Signaturanfrage mit Unterschied zwischen permit, eth_sign und Transaktion
Das Signaturfenster, das aufgeht — was signierst du da? Diese eine Zeile zu verstehen bringt mehr als jede Domain im Kopf.

Jedes Mal, wenn das Wallet eine Signaturanfrage öffnet, machen die allermeisten dasselbe: kurz drüberschauen, nicht ganz verstehen, den Schritt aber hinter sich bringen wollen — auf Bestätigen klicken. Genau darin liegt das Problem: Die Bedeutung einer Signatur schwankt gewaltig. Manche Signatur beweist nur, dass „du der Inhaber dieses Wallets bist“, und ist harmlos; eine andere kommt dem Abgeben der Berechtigung über deine Assets gleich, und sie zu signieren ist nicht anders, als den Tresor zu öffnen. Sie sehen im Fenster manchmal sehr ähnlich aus, kosten beide kein Gas und verlangen beide nur einen Klick, doch die Folgen sind völlig verschieden.

In diesem Artikel nehme ich die gängigen Wallet-Signaturen einzeln auseinander: welche nur Identitätsnachweis sind, welche wirklich ans Geld gehen, warum eine Offline-Signatur wie permit hinterhältiger ist als ein normales Approval, warum man ein eth_sign-Blind-Signing beim bloßen Anblick schließen sollte, und — am nützlichsten — wie du vor dem Klick die eine Zeile verstehst, die dir sagt, was da eigentlich verlangt wird. Die Technik erkläre ich präzise, aber in Alltagssprache. Am Ende musst du kein Entwickler werden, aber du solltest vor dem Fenster innehalten und unterscheiden können, ob es hier heißt „ich beweise, dass ich ich bin“ oder „ich gebe eine Berechtigung ab“. Wie Approvals im Detail funktionieren, liest du begleitend unter Wallet-Approvals prüfen und widerrufen.

Die gängigen Signaturarten im Wallet

Zunächst eine grobe Landkarte. Die Anfragen, die dir bei der Wallet-Nutzung begegnen, teilen sich grob in zwei große Klassen — diese Grenze zu verstehen ist die Basis für alles Weitere.

  • Transaktion (transaction). Sie verändert wirklich den Zustand auf der Kette, kostet Gas und muss auf die Kette gebracht werden. Normale Überweisung, approve und Vertragsinteraktion (Tausch, Mint usw.) gehören dazu. Kennzeichen: Es fallen Gebühren an, und das Wallet zeigt meist an, was diese Transaktion tut und wie viel sie bewegt.
  • Signatur (signature / Nachrichtensignatur). Mit deinem privaten Schlüssel wird ein Stück Daten kryptografisch signiert; das geht selbst nicht zwingend auf die Kette und kostet meist kein Gas. Es kann bloß ein Identitätsnachweis sein (etwa das Anmelden bei einer DApp), es kann eine „Ermächtigung“ sein, die das Gegenüber auf der Kette einsetzt (etwa permit), oder es können unverständliche Rohdaten sein (eth_sign-Blind-Signing).

Das gefährliche Missverständnis vieler steckt in der zweiten Klasse — „kostet ja kein Gas und ist keine Überweisung, was soll beim Signieren schon passieren“. Ganz im Gegenteil: Das versteckteste On-Chain-Phishing setzt genau darauf, dich eine scheinbar harmlose Nachricht signieren zu lassen. Zur kryptografischen Grundlage von Signaturen und zum Verhältnis von Transaktion und Signatur auf Ethereum erklärt die Transaktions-Dokumentation der Ethereum Foundation das recht systematisch.

Hinweis

Ein schlichter, aber wichtiger Ausgangspunkt: Ob Gas anfällt, sagt nichts darüber, ob es gefährlich ist. Über das Risiko entscheidet, „welche Berechtigung oder welches Asset diese Signatur bzw. Transaktion abgibt“. Nach diesem Maßstab bewerten die nächsten Abschnitte die gängigen Arten einzeln.

Normale Transaktion: die Richtung ist Abfluss

Am leichtesten zu verstehen ist die normale Überweisung. Du willst Token von deiner Adresse an eine andere schicken; das Wallet öffnet eine Transaktion und lässt dich Empfängeradresse, Betrag und ungefähres Gas bestätigen. Nach dem Signieren kommt die Transaktion auf die Kette, und die Token sind weg.

Die Risikopunkte hier sind vergleichsweise geradeaus, im Wesentlichen zwei: erstens eine falsche oder ausgetauschte Empfängeradresse — beim Einfügen von einer Clipboard-Hijacking-Software durch die Angreifer-Adresse ersetzt oder ein paar Stellen falsch abgeschrieben; zweitens ein falscher Betrag. Sie gibt keine „dauerhafte Berechtigung“ ab wie ein Approval, der Verlust ist meist einmalig und auf den gerade überwiesenen Betrag begrenzt. Weil aber direkt Geld fließt, ist es nach einem Fehler nicht zurückzuholen — deshalb ist das Prüfen der Adresse vor der Überweisung besonders wichtig. Unser Werkzeug zur Adressprüfung hilft dir zu bestätigen, dass das Adressformat stimmt und nichts vertippt ist; sich anzugewöhnen, „vor der Überweisung die ersten und letzten Stellen der Empfängeradresse einmal abzugleichen“, lohnt sich ebenfalls.

Merk dir ein Kennzeichen dieser Art: Die Richtung ist „Token fließen von dir ab“, und Betrag wie Empfänger stehen klar im Fenster. Das ist sogar eine relativ transparente Sorte — was du siehst, ist, was passiert. Hinterhältig sind erst die späteren, die „nicht so aussehen, als ob sie ans Geld gingen“.

Vertragsinteraktion: du rufst eine Funktion auf

Wenn du in einer DApp etwas tust — an einer DEX tauschen, einem Liquiditätspool Geld hinzufügen, ein NFT minten —, löst du in Wirklichkeit die Transaktion „eine bestimmte Funktion eines bestimmten Vertrags aufrufen“ aus. Das Wallet öffnet ein Bestätigungsfenster; auch das gehört zur Gas-pflichtigen Transaktionsklasse.

Das Risiko dieser Signaturen liegt darin, dass du nicht unbedingt verstehst, was du aufrufst. Ein ordentliches Wallet versucht, die Transaktion in Alltagssprache zu „dekodieren“ und dir zu sagen, mit welchem Vertrag du interagierst, was ungefähr geschieht und welche Token womöglich bewegt werden; ist der Vertrag aber nicht verifiziert oder die Interaktion komplex, zeigt das Wallet vielleicht nur eine unverständliche Datenkette. Was ein Smart Contract ist und warum man vor der Interaktion die Vertrauenswürdigkeit des Vertrags prüfen sollte, erklärt die Smart-Contract-Dokumentation der Ethereum Foundation in ihren Grundlagen.

Tipp

Bestätige vor einer Vertragsinteraktion, dass die Vertragsadresse die offiziell vom Projekt veröffentlichte ist — und nicht eine, die dir eine über DM oder Werbung angeklickte Seite untergeschoben hat. Dieselbe Aktion (etwa ein Tausch) kann auf der echten Website und auf einer Fälschung einen völlig anderen Vertrag aufrufen — letzteres ist Phishing. Über ein Lesezeichen auf die offizielle Seite zu gehen ist der günstigste Schutz.

Innerhalb der Vertragsinteraktionen muss eine Art gesondert behandelt werden: das approve, weil es die vom Phishing am häufigsten missbrauchte Form ist. Der nächste Abschnitt widmet sich ihr.

approve-Signatur: die Berechtigung abgeben

approve ist eine besondere Vertragsinteraktion: Du überweist keine Token, sondern sagst einem Token-Vertrag „ich erlaube einer Adresse (spender), höchstens N von diesem Token von meinem Namen abzubuchen“. Dieses N heißt allowance (Freigabe-Betrag). Nach der Freigabe kann, solange sie nicht aufgebraucht ist, der freigegebene Vertrag diesen Token wiederholt abbuchen, ohne dass du erneut signierst. Das ist der Grundmechanismus, mit dem DeFi automatisch läuft, und an sich unproblematisch.

Die Gefahr hat zwei Ebenen. Erstens fordern viele DApps standardmäßig ein nahezu unbegrenztes, extrem großes N (unbegrenztes Approval), aus Bequemlichkeit — das heißt aber, dass dieser Vertrag, sobald er bösartig ist oder später gekapert wird, alle deine Token dieser Art abbuchen kann. Zweitens tarnen Phishing-Seiten das „Airdrop abholen“ als ein approve auf ihren eigenen Vertrag — du glaubst, Token abzuholen, gibst aber der Betrüger-Adresse das dauerhafte Recht, eine deiner Token-Arten leerzuräumen.

Den vollständigen Mechanismus von approve, die Tücken unbegrenzter Freigaben sowie das Einsehen und Widerrufen erteilter Approvals erklärt unser Artikel Wallet-Approvals prüfen und widerrufen im Detail; hier betone ich nur eine Beurteilung: Wenn das „Abholen“ verlangt, dass du approvst, dass du die Berechtigung über Token abgibst, stimmt die Richtung nicht. Normales Abholen bedeutet, dass Token zu dir fließen und du selbst das Gas zahlst; Approval-Phishing bedeutet, dass die Berechtigung zu ihm fließt. Falsche Richtung heißt rotes Licht. Zum Widerrufen bereits erteilter Approvals halte dich an das offizielle Werkzeug revoke.cash.

Warum permit (EIP-2612) als Offline-Signatur gefährlich ist

Jetzt kommt die wichtigste Art im ganzen Artikel — permit. Sie ist gerade deshalb gefährlich, weil sie „zu harmlos aussieht“.

Zuerst die eigentliche Absicht. Ethereum hat einen Verbesserungsvorschlag namens EIP-2612, der ERC-20 eine permit-Funktion hinzufügt, damit eine Freigabe per Offline-Signatur erfolgen kann, ohne eine eigene, Gas-kostende approve-Transaktion senden zu müssen. Das heißt: Du signierst eine strukturierte Nachricht (nicht auf der Kette, kein Gas), und das Gegenüber kann mit dieser Signatur auf der Kette eine Freigabe vollziehen, die einem approve gleichkommt. Ziel war, eine Transaktion und Gas zu sparen und das Erlebnis zu verbessern. Das Format dieser strukturierten Signaturen basiert auf einem weiteren Vorschlag, EIP-712, der den Signaturinhalt in relativ lesbaren Feldern darstellt. Die Originale der beiden Vorschläge stehen unter EIP-2612 und EIP-712.

Der gefährliche Punkt: Für normale Nutzer sehen das Signieren einer permit-Nachricht und das Signieren einer gewöhnlichen Login-Nachricht im Fenster fast gleich aus, beide kosten kein Gas und verlangen nur „einen Klick zum Bestätigen“. Betrüger formulieren die Phishing-Seite als „signiere, um deinen Airdrop-Anspruch zu bestätigen“ oder „signiere, um dich anzumelden“; du glaubst, nur zu beweisen, dass du der Wallet-Inhaber bist, signierst aber in Wahrheit ein permit — und ermächtigst das Gegenüber, eine deiner Token-Arten zu bewegen. Nach dem Signieren ändert sich die Seite vielleicht gar nicht, und wenn du es bemerkst, hat das Gegenüber mit deiner Signatur die Freigabe auf der Kette schon vollzogen und die Assets abgezogen.

permit ist hinterhältiger als gewöhnliches approve-Phishing, aus drei Gründen: Es kostet kein Gas und umgeht damit die psychologische Hürde „muss zahlen, muss zweimal bestätigen“; es geht (im Moment des Signierens) nicht auf die Kette, weshalb du in deinem eigenen Transaktionsverlauf zunächst keine Spur siehst; und wenn das Wallet sein Fenster nicht sauber auflöst, ist es leicht mit einer gewöhnlichen Signatur zu verwechseln. Das ist auch der Grund, warum viele der jüngeren On-Chain-Diebstähle an Privatanlegern über Signaturen laufen und nicht über das direkte Erschwindeln des privaten Schlüssels.

Achtung

Wenn in einer „Signatur“ Felder wie Permit, spender (Freigegebener), value (Betrag) oder deadline (Gültigkeit) auftauchen, sei höchst wachsam — das ist sehr wahrscheinlich eine Offline-Signatur, die einem Approval gleichkommt, kein bloßer Login-Nachweis. Besonders wenn das im Kontext von „Airdrop abholen / Anspruch bestätigen“ erscheint: erst innehalten.

eth_sign-Blind-Signing: das Fenster, vor dem man am meisten aufpassen muss

Es gibt eine noch ursprünglichere und noch gefährlichere Anfrage: eth_sign. Damit signierst du ein Stück Daten ohne erkennbare Bedeutung (meist eine hexadezimale Hash-Kette), und das Wallet kann es nicht in Alltagssprache übersetzen, um dir zu sagen, was du da eigentlich signierst. Das ist das sogenannte „Blind-Signing“.

Das Problem: Diese unverständlichen Daten können theoretisch alles sein — ein Approval, eine Überweisung, ein permit. Signierst du, ist das, als setztest du dein Siegel unter ein inhaltlich leeres, aber rechtsgültiges Dokument, das das Gegenüber ausfüllt, wie es will. Seriöse DApps verlangen eth_sign so gut wie nie, gerade weil es zu gefährlich ist; führende Wallets (etwa MetaMask) zeigen bei solchen Anfragen standardmäßig eine deutliche Warnung, teils ist es sogar standardmäßig deaktiviert. Zu den Risiken der einzelnen Signaturmethoden und wie das Wallet damit umgeht, gilt die offizielle Dokumentation des von dir genutzten Wallets, etwa das MetaMask-Support-Center mit eigenen Erläuterungen.

Achtung

Siehst du im Wallet Warnungen wie „Dies ist eine eth_sign-Anfrage“, „nicht auflösbare Rohsignatur“ oder „Signaturinhalt kann nicht angezeigt werden“, schließe direkt und signiere nicht. Sofern du nicht zu hundert Prozent weißt, was du tust, gibt es keinen Grund, ein Blind-Signing mitzumachen. Eine Seite, die dich blind signieren lässt, ist an sich schon verdächtig.

Zum schnellen Einordnen vor dem Fenster hier die Arten im Vergleich:

TypWas im Kern geschiehtGas?Risiko
Normale ÜberweisungToken an eine Adresse sendenjamittel: Adresse und Betrag prüfen
Vertragsinteraktioneine Vertragsfunktion aufrufenjaje nach Inhalt; Vertrauen des Vertrags prüfen
approveeiner Adresse eine Freigabe erteilenjahoch: vor allem unbegrenzt + unbekannt
permit Offline-Signaturper Signatur Freigabe erteilenneinhoch: sieht wie Login aus, ist Freigabe
eth_sign-Blind-Signingunverständliche Rohdaten signierenneinsehr hoch: Inhalt unsichtbar, ablehnen

Wie man eine Signaturanfrage liest

Übertragen auf die paar Sekunden vor dem Fenster, ist dies der Gedankengang, den ich selbst vor jeder Signatur durchgehe. Er garantiert nicht, alles zu durchschauen, aber er hält das Allermeiste ab.

  • Frag zuerst: „Was glaube ich hier zu tun?“ Steht auf dem geklickten Button „Anmelden / Verbinden / Abholen / Tauschen“? Merk dir deine Erwartung und gleiche sie gleich mit dem Fensterinhalt ab.
  • Schau, ob Transaktion oder Signatur. Mit Gas und dem Wort „Transaktion bestätigen“ ist es eine Transaktion; ohne Gas und mit bloßem „Signieren“ ist es eine Nachrichtensignatur. Bei Letzterer musst du erst recht auf den Inhalt achten, lass nicht locker, nur weil es nichts kostet.
  • Lies die Schlüsselfelder. Wörter wie Permit, spender, value, approve oder setApprovalForAll bedeuten, dass du eine Berechtigung abgibst, nicht bloß Identität nachweist. Erscheint eth_sign / „Rohdaten“ / „Inhalt kann nicht angezeigt werden“, lehne ab.
  • Gleiche die Richtung ab. Du glaubst zu „abholen / anmelden“, das Fenster aber „ermächtigt / permit“ — passen Erwartung und Inhalt nicht zusammen, ist das ein Gefahrensignal.
  • Prüfe den Freigegebenen. Ist es tatsächlich eine Freigabe, schau genau, ob der spender ein von dir vertrauter, seriöser Vertrag ist, und prüf die Adresse bei Bedarf in einem Block-Explorer (etwa Etherscan) auf ihre Herkunft.
  • Passt es nicht, lehne ab. Ablehnen kostet fast nichts — schlimmstenfalls machst du diese Aktion diesmal nicht. Nur das Bestätigen ist unumkehrbar. Lieber ein paarmal zu viel ablehnen, als einmal zu wetten.

Der Kern ist eigentlich ein Satz: Nur wenn das Wallet dir in Alltagssprache klar sagen kann „du gibst gerade Berechtigung X an Y“, und genau das ist, was du tun willst, signierst du; ist der Inhalt vage oder passt er nicht zu dem, was du zu tun glaubtest, lehnst du ab. Ein ordentliches Wallet versucht, den Inhalt für dich aufzulösen, deshalb ist die Nutzung eines gut gepflegten, auflösungsstarken führenden Wallets selbst eine Schutzschicht; für die Wallet-Sicherheitseinstellungen gilt dessen offizielle Dokumentation (etwa das MetaMask-Support-Center).

Hinweis

Selbst wenn du versehentlich ein permit signiert oder ein approve erteilt hast, ist das nicht ausweglos — solange privater Schlüssel und Seed-Phrase nicht offengelegt sind, kann das Gegenüber nur die von dir freigegebene Token-Art bewegen, und du kannst das Approval widerrufen, um den Schaden zu begrenzen. Die vollständigen Widerruf-Schritte stehen in Wallet-Approvals prüfen und widerrufen. Blind-Signing und das Offenlegen der Seed-Phrase sind aber eine andere Sache, und die ist deutlich schwerwiegender.

Sichere Gewohnheiten, die man sich aneignet

Um die einzelnen Beurteilungen in Muskelgedächtnis zu verwandeln, hier ein paar Punkte, an die ich mich selbst durchgehend halte.

Vor dem Signieren drei Sekunden innehalten und einmal „was will das von mir bewegen“ durchdenken

Betrügereien setzen fast alle auf erzeugte Dringlichkeit, damit du nicht zum Nachdenken kommst. Umgekehrt: Zwingst du dich, vor jedem Bestätigen drei Sekunden innezuhalten und die Schlüsselfelder im Fenster durchzugehen — Login oder Freigabe? Stimmt die Richtung? —, hält dieses kleine Ritual die meisten „hab ohne Nachdenken geklickt“-Unfälle ab.

Wallets trennen: lass das Test-Wallet die Schläge einstecken

Halte langfristige Assets in einem „Tresor-Wallet“, das kaum je eine DApp verbindet (am besten mit Hardware-Wallet), und richte ein separates „Test-Wallet“ mit nur wenig Geld ein, das gezielt neue Seiten verbindet, Airdrops abholt und allerlei signiert. Selbst wenn das Test-Wallet einmal falsch signiert, ist der Verlust auf diesen kleinen Betrag gedeckelt. Das ist die kosteneffizienteste Verteidigungslinie. Zur passenden Aufbewahrung von privatem Schlüssel und Seed-Phrase siehe Seed-Phrase-Sicherheit.

Über Lesezeichen auf die offizielle Seite, nicht frisch suchen

Die Quelle vieler gefährlicher Signaturen ist eine gefälschte Seite. Speichere die offiziellen Seiten häufig genutzter Projekte und Werkzeuge als Lesezeichen und geh jedes Mal darüber — so umgehst du die Fälschung schon am Eingang. Mehr Maschen zum Erkennen von Fake-Airdrops und Fake-Claim-Seiten findest du unter Fake-Airdrops und Approval-Phishing.

Regelmäßig widerrufen und die abgegebenen Berechtigungen zurückholen

Signaturen (besonders die nach wirksamem approve oder permit erteilten Freigaben) häufen sich an. Gewöhne dir an, regelmäßig mit revoke.cash ungenutzte Approvals zu prüfen und zu widerrufen und längst vergessene alte Berechtigungen zurückzuholen. Erst die Grundlagen des Web3-Wallets zu klären hilft ebenfalls, siehe Web3-Wallet erklärt; wer beim Prüfen zugleich das Risiko abgleichen will, kann unseren Approval-Risiko-Check als Checkliste nutzen.

Wir haben uns später eine feste Regel gegeben: Alles, was beim „Airdrop abholen / Anspruch bestätigen“ als Signatur aufgeht, behandeln wir zunächst als permit, als Freigabe, nach dem Worst-Case-Prinzip — erst die Felder genau lesen, dann entscheiden. Diese Regel hat uns nicht wenige Signaturen ablehnen lassen, und rückblickend war an den abgelehnten meist wirklich etwas faul.

Zum Schluss. Eine Wallet-Signatur ist nicht eine Aktion, sondern eine Klasse von Aktionen, von „ich beweise, dass ich ich bin“ bis „ich gebe den Tresorschlüssel ab“. Hältst du sie auseinander — bei Transaktionen Adresse und Betrag prüfen, bei Approvals Gegenüber und Betrag prüfen, permit als unsichtbare Freigabe abwehren, eth_sign-Blind-Signing grundsätzlich ablehnen — und kombinierst das mit drei Sekunden innehalten, Wallets trennen, über Lesezeichen einsteigen und regelmäßig widerrufen, dann weißt du vor dem scheinbar beiläufigen „Bestätigen“ wirklich, was du signierst.

CM
Chen Mo
Redaktion DROPCHECK · Redakteur (Pseudonym)

Hat selbst Airdrops gesammelt und ist auf Fake-Airdrops hereingefallen; schreibt jetzt darüber, wie man sicher teilnimmt. Nur Methoden, keine Projekt-Empfehlungen, keine Kursprognosen.