setApprovalForAll erklärt: Die NFT-Genehmigung, die ganze Sammlungen leert
— By Tony Rabbit in Tutorials

Ein setApprovalForAll-Betrug funktioniert, indem er Sie dazu verleitet, die Kontrolle über eine gesamte NFT-Sammlung mit einer einzigen Signatur zu gewähren. Erfahren Sie, wie die Funktion funktioniert, wie sie sich von ERC-20-Freigaben unterscheidet, wie Sie die Anfrage vor dem Signieren lesen und wie Sie sie widerrufen können.
Ein setApprovalForAll-Betrug ist die häufigste Methode, wie NFT-Sammlungen geleert werden, und er beginnt fast immer mit einer Signatur, die Sie nicht vollständig gelesen haben. Die setApprovalForAll-Funktion ist ein Standardbestandteil der ERC-721- und ERC-1155-Token-Spezifikationen. Wenn Sie sie aufrufen, benennen Sie eine andere Adresse als "Operator" und erteilen diesem Operator die Berechtigung, jedes NFT, das Sie von einem bestimmten Sammlungsvertrag halten, jetzt und in Zukunft zu verschieben. Es gibt keine Begrenzung pro Artikel und kein Mengenfeld. Sobald ein Angreifer als Ihr Operator festgelegt ist, kann er Ihre gesamte Sammlung aus diesem Vertrag in einem einzigen Durchgang übertragen, ohne Sie erneut um eine Signatur zu bitten. Dieser Leitfaden erklärt genau, was die Genehmigung bewirkt, warum sie sich mechanisch von einer Token-Freigabe unterscheidet, wie bösartige Websites die Anfrage tarnen und wie Sie sie prüfen und widerrufen können.
Wichtige Erkenntnisse
- setApprovalForAll gewährt einem Operator die Kontrolle über eine gesamte NFT-Sammlung aus einem Vertrag, nicht über einen einzelnen Artikel.
- Es hat kein Mengen- oder Betragsfeld, daher ist die Genehmigung effektiv unbegrenzt und dauerhaft, bis sie widerrufen wird.
- Gefälschte Mints und gefälschte Marktplätze fordern dies unter dem Deckmantel des "Aktivierens" oder "Listens" Ihrer NFTs an.
- Der Widerruf einer Operator-Genehmigung ist eine separate Aktion vom Widerruf von ERC-20-Token-Freigaben.
Was setApprovalForAll tatsächlich gewährt
setApprovalForAll benötigt zwei Argumente: eine Operator-Adresse und einen booleschen Wert (true oder false). Wenn Sie es mit dem Wert true signieren, zeichnet der NFT-Vertrag auf, dass der benannte Operator berechtigt ist, transferFrom und safeTransferFrom für jede Token-ID aufzurufen, die Sie innerhalb dieses Vertrags besitzen. Das ist eine sammlungsweite Berechtigung. Wenn Sie heute zehn NFTs aus einem Projekt halten und nächsten Monat fünf weitere minten, kann der Operator alle fünfzehn ohne eine neue Signatur verschieben.
Dies ist das Wichtigste, was man verstehen muss: Die Genehmigung ist an den Sammlungsvertrag und den Operator gebunden, nicht an bestimmte NFTs. Sie genehmigen nicht "diesen einen Affen". Sie genehmigen "jeder, der diesen Operator-Schlüssel besitzt, kann alles, was ich aus diesem Vertrag besitze, auf unbestimmte Zeit nehmen". Es ist das NFT-Äquivalent dazu, jemandem einen Generalschlüssel zu einem Raum zu übergeben und ihn behalten zu lassen. Diese Persistenz ist der Grund, warum setApprovalForAll hinter der Mehrheit der NFT-Wallet-Drains steckt.
Wie es sich von einer ERC-20-Ausgabenobergrenzen-Freigabe unterscheidet
Die meisten Menschen begegnen dem Wort "Genehmigung" zuerst durch ERC-20-Tokens. Dort legt die approve-Funktion eine Ausgabenobergrenze fest: eine numerische Freigabe, die ein Spender ziehen kann, wie 100 USDC. Das Risiko bei ERC-20 ist das Muster der unendlichen Genehmigung, bei dem dApps aus Bequemlichkeit eine unbegrenzte Obergrenze anfordern. Aber selbst eine unendliche ERC-20-Freigabe ist immer noch auf einen Token beschränkt. setApprovalForAll ist eine andere Art von Risiko, da es ein boolescher Schalter ist, keine Zahl, und es deckt Ihren gesamten Bestand in einer Sammlung auf einmal ab. Wenn Sie neu in diesem Konzept sind, behandelt unser Leitfaden zu Genehmigungstransaktionen die zugrunde liegende Mechanik ausführlicher.
Wie gefälschte Mints und gefälschte Marktplätze es anfordern
Angreifer fordern setApprovalForAll selten aus dem Kontext heraus an. Sie verpacken es in eine normal aussehende Aktion. Eine gefälschte Mint-Seite, die einen kostenlosen oder vergünstigten Drop verspricht, wird eine Wallet-Anfrage auslösen, sobald Sie auf "mint" klicken, und diese Anfrage ist tatsächlich setApprovalForAll für eine Sammlung, die Sie bereits besitzen. Ein gefälschter Marktplatz-Klon, oft über ein gehacktes Social-Media-Konto oder eine bezahlte Anzeige beworben, wird Sie bitten, "zu aktivieren" oder "für den Handel zu genehmigen", bevor Sie etwas listen können. Legitime Marktplätze verwenden setApprovalForAll, was genau das ist, was die gefälschte Version überzeugend macht.
Die Täuschung funktioniert, weil die erwartete Aktion (Minting, Listing, Claiming) plausibel ist und die Wallet einen Funktionsnamen anzeigt, den die meisten Benutzer nicht erkennen. Dieses Muster überschneidet sich stark mit Ice Phishing, bei dem die bösartige Transaktion eine Genehmigung und keine offensichtliche Übertragung ist, und mit breiteren Signature Phishing-Taktiken. Das Asset verlässt Ihre Wallet während des Signierschritts nie, sodass noch nichts gestohlen aussieht. Der Drain erfolgt Minuten oder Stunden später, wenn der Operator transferFrom aufruft und die Sammlung leert. Bis dahin hat die Genehmigung ihre Aufgabe bereits erfüllt.
Wie man die Anfrage vor dem Signieren liest
Die beste Verteidigung ist, zu lernen, die Wallet-Aufforderung zu lesen. Wenn eine Website eine Transaktion auslöst, zeigen moderne Wallets die aufgerufene Vertragsmethode an. Wenn Sie "setApprovalForAll" und einen auf "true" gesetzten Parameter für eine Aktion sehen, die dies nicht benötigen sollte, halten Sie inne. Fragen Sie sich, ob die vor Ihnen liegende Operation wirklich eine sammlungsweite Berechtigung erfordert. Das Beanspruchen eines Airdrops, das Anzeigen einer Galerie oder das Verbinden mit einer Website sollte dies niemals erfordern.
Überprüfen Sie drei Dinge. Erstens, den Funktionsnamen: Ist es setApprovalForAll? Zweitens, die Operator-Adresse: Stimmt sie mit dem verifizierten Vertrag der Plattform überein, die Sie verwenden wollten, oder ist es eine unbekannte Adresse? Drittens, den booleschen Wert: true bedeutet, Sie erteilen die Genehmigung, false bedeutet, Sie widerrufen sie. Viele Drainer-Seiten verlassen sich darauf, dass Sie die Aufforderung automatisch durchklicken. Ein gefälschter Marktplatz wird Sie auch oft bitten, eine Genehmigung für eine Sammlung auf einer Website zu erteilen, mit der Sie noch nie zuvor interagiert haben, was ein starkes Warnsignal ist. Wenn etwas unbekannt ist, lehnen Sie die Anfrage ab und überprüfen Sie die URL unabhängig, bevor Sie es erneut versuchen. Die meisten dieser Abläufe werden von einem handelsüblichen Wallet Drainer-Kit angetrieben, das darauf ausgelegt ist, die Aufforderung routinemäßig aussehen zu lassen.
Wie man Operator-Genehmigungen prüft und widerruft
Operator-Genehmigungen befinden sich auf einer anderen Ebene als ERC-20-Freigaben, daher kann ein Tool oder Dashboard, das nur Token-Ausgabenobergrenzen anzeigt, diese möglicherweise überhaupt nicht anzeigen. Um ordnungsgemäß zu prüfen, verwenden Sie ein Widerrufstool, das NFT-Operator-Genehmigungen explizit auflistet, oft als "approvals for all" bezeichnet oder pro Sammlung angezeigt. Verbinden Sie Ihre Wallet im Lesemodus, überprüfen Sie jede Sammlung, in der ein Operator festgelegt ist, und identifizieren Sie jede Operator-Adresse, die Sie nicht erkennen oder nicht mehr verwenden.
Zum Widerruf rufen Sie setApprovalForAll erneut für denselben Sammlungsvertrag auf, diesmal mit dem booleschen Wert false für diesen Operator. Dies ist eine On-Chain-Transaktion, kostet also Gas und muss pro Sammlung pro Operator durchgeführt werden. Es gibt keinen einzigen Button, der alle NFT-Genehmigungen auf einmal über alle Verträge hinweg löscht. Unsere schrittweise Anleitung zum Widerruf zeigt den Prozess sowohl für Token-Freigaben als auch für Operator-Genehmigungen. Machen Sie dies zu einer regelmäßigen Gewohnheit, nicht zu einer einmaligen Bereinigung, insbesondere nach der Nutzung neuer Mint-Seiten oder Marktplätze.
Gewohnheiten, um die pauschale Genehmigung unbekannter Verträge zu vermeiden
Vorbeugung ist billiger als Bereinigung. Halten Sie eine dedizierte "Minting"-Wallet bereit, die nur die Gelder und NFTs enthält, die Sie aktiv verwenden, damit eine schlechte Genehmigung Ihre langfristigen Bestände nicht gefährden kann. Behandeln Sie jede setApprovalForAll-Anfrage als bewusste Entscheidung und nicht als Formalität, und erteilen Sie sie niemals auf einer Website, die Sie über eine Anzeige, eine Direktnachricht oder einen unerwünschten Link erreicht haben. Überprüfen Sie Marktplatz- und Mint-URLs aus offiziellen Quellen, nicht aus Suchanzeigen, die routinemäßig von Drainer-Operatoren gekapert werden.
Schließlich, entwickeln Sie eine Routine: Überprüfen Sie Ihre Genehmigungen monatlich, widerrufen Sie alles Veraltete und widerrufen Sie sofort, nachdem Sie eine einmalige Mint-Seite verwendet haben. Operator-Genehmigungen laufen nicht von selbst ab, daher bleibt eine alte Genehmigung von einem vergessenen Projekt eine aktive Angriffsfläche, solange Sie sie aktiv lassen. Ein paar Minuten Prüfung schützen Assets, die weit mehr wert sein können als das Gas, das der Widerruf kostet.
Dieser Artikel dient nur zu Bildungszwecken und stellt keine Finanzberatung dar.