Zum Inhalt springen
Boring Security
Profil
Unterschriften und Genehmigungen

Alles über Genehmigungen!

Übersetzt vonScali
TEILEN

Alles über Approvals oder Genehmigungen bringen Schwung in die Kiste!

Approvals (Genehmigungen) werden im NFT-Bereich oftmals verteufelt. Community-Mitglieder fordern von den Wallet Anbietern noch größere, fettgedruckte, rote Warnmeldungen und erwarten weitere Sicherheitsmaßnahmen von den Marktplätzen. Verständlicherweise entstehen dadurch jede Menge Angst und Verunsicherung.

Aber ganz ehrlich: Ohne Approvals wäre Web3 kaum möglich. Wenn ihr jemals einen Verkauf auf einer NFT-Plattform getätigt oder ein Angebot auf eine NFT-Kollektion abgegeben habt, dann seid ihr bereits in den Genuss von Approvals gekommen. Mithilfe von Genehmigungen könnt ihr off-chain Bedingungen festlegen. Wenn diese erfüllt sind, dann werden Eure Transaktionen sofort ausgeführt. Zum Beispiel, wenn Euer gewünschter Verkaufspreis erreicht wird oder jemand Euer wETH-Angebot akzeptiert hat.

Dadurch könnt ihr auch andere Dinge mit den Assets anstellen (z.B. den Besitz nachweisen) oder auch auf anderen Marktplätzen anbieten. Wenn es keine Approvals gäbe, bräuchte man eine Plattform, die entweder Zahlungsmittel, NFTs oder beides vollständig verwaltet. In diesem Fall wärt ihr nicht in der Lage, auf mehreren Marktplätzen zu listen und alle Besitzvorteile des Assets zu nutzen!

Was genau bewirkt also eine Genehmigung? Approvals geben smart contracts die Möglichkeit, mit Euren Tokens (ERC-20, NFTs, etc.) zu interagieren. Basierend auf den im smart contract festgelegten Parametern, können sie diese nach Belieben abrufen.

Set Approval For All (SAFA)


NFT-Kollektionen mit den Standards ERC-1155, ERC-721 oder ERC-721a verwenden alle die nachfolgenden Approval-Mechanismen. Diese verfügen in der Regel sowohl über eine „Approval“- als auch über eine „Set Approval for All“-Methode (SAFA). Leider verwenden sowohl Betrüger als auch Marktplätze die gefährlichere Variante der beiden Methoden.

Set Approval for All: erlaubt es, alle Assets einer bestimmten Wallet Adresse für eine gesamte NFT-Collection an eine einzige Adresse zu übertragen (in der Regel ein contract/NFT-Marktplatz)

Approval: erlaubt es, ein einzelnes Assett einer bestimmten Wallet Adresse aus einer NFT-Kollektion an eine einzelne Adresse zu übertragen (wird bei NFTs nicht oft verwendet).

Die Betrugsmaschen im Zusammenhang mit diesen Approvals konzentrieren sich auf zwei Dinge:

·         Man versucht Euch auf eine unseriöse Website zu locken, um eine bösartige Genehmigungstransaktion zu unterzeichnen. Diese ermöglicht einem Angreifer Zugriff auf Eure Assets.

·         Man versucht Euch auf eine unseriöse Website zu locken, um eine bösartige Signatur zu unterschreiben, die Ihre legitimen Genehmigungen ausnutzt.

Hinweis: Der Grund dafür, dass zuerst nach Unterschriften gefragt wird, bevor Transaktionen durchgeführt werden, liegt darin, dass viele nicht wissen, dass ihr Vermögen mit einer schädlichen Unterschrift (gasfree), die ihre rechtmäßigen Genehmigungen ausnutzt, gestohlen werden kann.

Erkennt ihr das Muster? Im ersten Schritt wird versucht, Euch auf eine unseriöse Website zu locken! In unserem Artikel „Ein Wallet für jede Gelegenheit“ betonen wir, dass ihr niemals mit Eurer Sell-Wallet auf eine nicht vertrauenswürdige Website gehen solltet, und dass ihr mit Eurer Vault-Wallet (eine Wallet, die keine Approvals hat) nur gas-free Signaturen durchführen solltet, wie in unserem Artikel „Safe Signing 101“ ausführlich beschrieben.

Was passiert eigentlich, wenn Du eine Genehmigung erteilst?

Was passiert nun eigentlich, wenn Du eine Genehmigung erteilst? Wir rufen die "Approve"-Methode genauso auf, wie wir es in Etherscan tun würden (übrigens haben wir hier einen tollen Artikel über die Grundlagen von Etherscan). Werfen wir einen Blick auf den Apecoin-Vertrag, um uns zu verdeutlichen, was hier passiert:

approve.jpg

Jedes Mal, wenn Du eine Genehmigung erteilst, fügst du eigentlich nur einen weiteren autorisierten Spender zu den Deiner Wallet vorhandenen Assets hinzu. Standardmäßig hast Du, der Wallet-Besitzer, Zugang zum Senden/Empfangen von Tokens innerhalb Deiner Wallet, wenn die Token einem weithin akzeptierten Token-Standard wie ERC-20, ERC-721 oder ERC-1155 entsprechen. Wie unsere 102 Studenten jedoch schnell lernen, kann man Token-Verträge erstellen, für die andere Regeln gelten können 😈.

Hier ist eine Liste, wie die verschiedenen Genehmigungsmethoden für jeden Vertragstyp funktionieren:

ERC-721 (Profilbild/Unique Collection NFT):

Funktion: Approve

  • Spender: Der Spender, dem Du Zugang erteilst (wie Opensea oder ein Marktplatz)
  • Token/TokenID: Die TokenID, auf die Du Zugriff gewährst. Beispiel: BAYC #4014

Funktion: SetApprovalForAll

  • Operator: Dies ist derselbe wie der Spender, der Zugang zu Deinem Tokens hat
  • Genehmigt: Dies ist ein einfaches true/false. Bei Genehmigung hat der Operator/Spender Zugriff auf alle Token in der Sammlung (wenn Du also mehrere BAYCs hast - auf alle).

Beispiele: BAYC, Azuki, Doodles

ERC-1155 (Semi-Fungible NFT):

Funktion: SetApprovalForAll

  • Operator: Dies ist derselbe wie Spender, der Zugriff auf Deine Tokens hat
  • Genehmigt: Dies ist ein einfaches true/false. Bei Genehmigung hat der Operator/Spender Zugriff auf alle Token in der Sammlung (wenn Sie also mehrere BAYCs haben, auf alle).

Hinweis: Im ERC-1155-Standard gibt es keine Genehmigungsmethode. Das bedeutet, dass Du, wenn Du einen ERC-1155-Vertrag genehmigst, diesen für ALLE Tokens genehmigst. Mir scheint dies ein Versehen zu sein, aber ich kann es einordnen.

Beispiele: Boring Security, Adidas: Into The Metaverse

ERC-20 (Fungible Token):

Funktion: Approve

  • Spender: Der Spender, dem Du Zugang gewährst (wie Opensea oder ein Marktplatz)
  • Betrag: Wie viel des Tokens dem Vertrag zur Verfügung gestellt wird. Der Betrag bleibt aktiv und kann mit der Zeit "aufgebraucht" werden. Dookey Dash-Süchtige werden sich vielleicht daran erinnern, dass eine 800-Dollar-Freigabe festgelegt wurde und man irgendwann eine weitere Freigabe vornehmen musste!

Funktion: IncreaseAllowance (Nicht alle ERC-20 Token haben diese Funktion).

  • Spender: Der Spender, dem Du Zugang gewährst (z.B. Opensea oder ein Marketplace)
  • Betrag: Der Betrag, um den der Freibetrag erhöht wird.

Hinweis: "Increase Allowance" kann oft aufgerufen werden, wenn für die Adresse des Spenders keine Genehmigung vorliegt, so dass es wie eine Genehmigung funktioniert. Vorsicht in diesem Fall!

Beispiele: Apecoin, Wrapped Ethereum, AAVE (Proxy)

Fälle, in denen diese Betrugsmasche auftritt

Approval-Betrug ist derzeit die häufigste Betrugsmasche im NFT-Bereich und taucht hier am häufigsten auf:

  • NFT-Trading-Betrug, bei dem ein Betrüger Euch auf eine gefälschte Trading-Website lockt, um dort bösartige Genehmigungen zu nutzen oder zu initiieren.
  • NFT-Airdrop-Betrug, bei dem der Betrüger Euch auf eine gefälschte Collection-Website lockt, um dort böswillige Genehmigungen zu nutzen oder zu initiieren.
  • Eine gefälschte NFT-Derivat-Website, auf der der Betrüger versucht, böswillige Genehmigungen zu nutzen oder zu initiieren.
  • Ein gefälschter Marktplatz, auf dem.... nun ja... ihr wisst schon.

ElaineFake.gif

Man merkt, dass sich bei all diesen Betrügereien ein Muster abzeichnet, bei dem (rechtmäßige oder böswillige) Genehmigungen arglistig ausgenutzt werden. Zu einem Großteil dieser Betrügereien zählt auch Phishing. Ihr denkt vielleicht, dass ihr zu Opensea geleitet werdet, aber werft am besten einen Blick auf unseren Artikel "Phishing & Taktiken von Betrügern", um mehr über die schmutzigen Vorgehensweisen zu erfahren, um an Eure schwer verdienten Tokens zu gelangen!

Ihr habt noch nicht genug von Approvals und möchtet noch mehr erfahren oder denkt, dass ihr vielleicht zu viele Approvals habt? Dann lest am besten als nächstes diesen Artikel von Revoke.Cash über den Widerruf von Genehmigungen!

Ihr habt weitere Fragen? Möchtet mehr über Web3 Security erfahren? Wollt über die aktuellen Sicherheitsinformationen, Betrügereien und Taktiken auf dem Laufenden bleiben? Dann besucht unseren Discord Channel unter: https://discord.gg/boringsecurity_._ BoringSecurityicon.png

Artikel