Zum Inhalt springen

Die Sicherheitslandschaft von MetaMask Snaps navigieren

Dieser Blog untersucht das Vertrauensmodell von MetaMask Snaps und beschreibt häufige Sicherheitsprobleme sowie Best Practices für Entwickler im Web3-Ökosystem.

5 Min. Lesezeit
Die Sicherheitslandschaft von MetaMask Snaps navigieren

MetaMask Snaps ist ein Open-Source-System, das es Nutzern ermöglicht, die Funktionalität von MetaMask sicher zu erweitern und neue Wallet-Erlebnisse zu bieten. Im Kern ist ein Snap ein JavaScript-Programm, das innerhalb von MetaMask in einer isolierten Umgebung ausgeführt wird.

In diesem Blog erkunden wir die Sicherheitslandschaft von MetaMask Snaps. Als Blockchain-Sicherheitsprüfer von Consensys Diligence sind wir auf Smart-Contract-Sicherheit spezialisiert. Consensys Diligence ist ein Blockchain-Sicherheitsunternehmen mit einem umfassenden Smart-Contract-Audit-Service, der Projekten im gesamten Web3-Bereich hilft, sichere Dapps zu entwickeln.

Das Vertrauensmodell von MetaMask Snap verstehen

Jeder Snaps-Entwickler muss das Vertrauensmodell verstehen, das MetaMask Snaps zugrunde liegt. Dieses Vertrauensmodell definiert die Vertrauensgrenzen zwischen den verschiedenen Akteuren. Die wichtigste Botschaft lautet: Endnutzer vertrauen MetaMask, aber nicht den Dapps.

Wir haben das Vertrauensmodell im folgenden Diagramm formalisiert und zusammengefasst. Dieses Diagramm zeigt die verschiedenen Vertrauensgrenzen, die Entwickler beim Entwickeln von Snaps im Hinterkopf behalten müssen:

Drei zentrale Vertrauensgrenzen für Web3-Dapps, Nutzer und MetaMask

Erstens gibt es eine Vertrauensgrenze zwischen dem Nutzer und der Dapp. Nutzer vertrauen Dapps grundsätzlich nicht. Dapps können nämlich bösartig oder kompromittiert sein. Sie können Nutzer glauben lassen, dass sie eine bestimmte Payload signieren, obwohl sie in Wirklichkeit etwas anderes signieren.

Zweitens gibt es eine Vertrauensgrenze rund um MetaMask und seine Erweiterungen. Während Nutzer Dapps nicht vertrauen, vertrauen sie MetaMask. MetaMask ist die einzige verlässliche Informationsquelle für den Nutzer. Die Payload, die innerhalb von MetaMask angezeigt und signiert wird – ob über das Kernmodul oder über Snaps – ist das, was zählt.

Drittens gibt es auch eine Vertrauensgrenze zwischen dem MetaMask-Kernmodul und dem Snap. Snaps-Entwickler können über die Snaps-API mit dem Kernmodul von MetaMask interagieren. Diese API implementiert ein Berechtigungssystem, was bedeutet, dass Entwickler Berechtigungen anfordern müssen, bevor sie auf eingeschränkte API-Funktionen zugreifen können. Mit den entsprechenden Berechtigungen können Snaps jedoch kritische Aktionen ausführen, wie z. B. den Zugriff auf die Root-Entropie von MetaMask, das Signieren von Daten oder die Kommunikation mit externen APIs.

Im Wesentlichen ist das Leitprinzip für Endnutzer im MetaMask-Ökosystem einfach, aber tiefgründig: Endnutzer sollten nur den Informationen und Interaktionen vertrauen müssen, die im MetaMask- und MetaMask-Snap-Kontext stattfinden, bekannt als das Trust Module.

Häufige Probleme in MetaMask Snaps entschlüsseln

Das MetaMask-Vertrauensmodell ermöglicht einen strukturierten Prüfansatz und hilft Prüfern, Sicherheitsprobleme zu identifizieren. Während unserer Snaps-Audits haben wir verschiedene Kategorien von Problemen identifiziert. Wir waren neugierig auf weitere potenzielle Kategorien und führten daher eine umfassende Analyse von 40 Snaps durch, die von 9 Prüfungsunternehmen geprüft wurden. Wir erstellten eine Klassifikation und kategorisierten die Probleme entsprechend. Im Folgenden heben wir einige interessante Kategorien mit Beispielen hervor. Diese Liste ist nicht vollständig.

Validierung von Nutzereingaben:

  1. Markdown & Steuerzeicheninjektion: Dies beinhaltet das Risiko, dass unerwünschter Code oder Befehle durch Markdown oder Steuerzeichen in Nutzereingaben eingeschleust werden.

  2. Bereinigung & Validierung von Nutzereingaben:- Typprüfung/Typverwechslung und Parsing-Probleme

  • API lehnt ungültige RPC-Parameter nicht ab: Dieses Problem tritt auf, wenn die API ungültige Parameter wie falsche Chain-IDs, Adress-Checksummen oder Gebührenstrukturen nicht ablehnt.

  • Unsachgemäße URI-Validierung: Dieses Problem kann auftreten, wenn bei der Validierung von URIs zu laxe Regex-Ausdrücke verwendet werden.

Probleme mit Nutzerzustimmung & Benutzeroberfläche:

  1. Verletzung etablierter MetaMask-UX-Muster: Dieses Problem tritt auf, wenn Anwendungen von den etablierten Nutzererfahrungsmustern von MetaMask abweichen.- Keine Aufforderung zur Kontozugriffserteilung: MetaMask fordert den Nutzer immer auf, bevor ein Konto mit einer Dapp verbunden wird. Snaps-Entwickler sollten dasselbe Muster befolgen.

  • Kontoenumeration: Ein Datenschutzproblem, bei dem die Anwendung Nutzerkonten ohne angemessene Zustimmung aufzählen oder auflisten könnte.

  1. Keine Einholung der Nutzerzustimmung:- Beim Signieren von Payloads: Dies bezieht sich auf Fälle, in denen die Anwendung signierungsbezogene Aktionen ohne ausdrückliche Nutzergenehmigung durchführt.

  • Anzeige privater Schlüssel ohne Sichtbarkeitsumschalter: Private Schlüssel werden angezeigt, ohne eine Klick-zum-Anzeigen-Komponente mit einem Hinweistext zu verwenden. Dies kann problematisch sein, wenn sich der Nutzer beispielsweise in einer öffentlichen Umgebung befindet.

  1. Undurchsichtige Snap-Dialoge: Dies sind Dialoge, denen Transparenz oder Klarheit fehlt.- Transaktionssignierungsdialog mit fehlenden Informationen: Ein Fall, in dem wesentliche Informationen in Transaktionssignierungsdialogen fehlen oder die dem Nutzer präsentierten Informationen nicht menschenlesbar sind.

  • Ungenauigkeiten bei der Gebührenrundung: Dies betrifft Ungenauigkeiten oder mangelnde Präzision bei der Berechnung und Anzeige von Gebühren.

  • Anzeige des Ursprungs: Der Snap zeigt den Ursprung einer Aktion nicht an. Dies kann den Nutzer dazu verleiten zu glauben, die Aktion wurde von einer Dapp initiiert, obwohl sie tatsächlich von einer anderen Dapp stammt.

Abhängigkeitsprobleme:

  1. Anfällige/nicht vertrauenswürdige Abhängigkeiten.

  2. Supply-Chain-Angriffe: Eine Abhängigkeit kann kompromittiert werden, entweder durch direkte oder indirekte Angriffsvektoren.

  3. Veraltete Abhängigkeiten: Das Verlassen auf veraltete Abhängigkeiten kann schwerwiegende Sicherheitsfolgen haben, da diese Abhängigkeiten möglicherweise Schwachstellen enthalten.

Berechtigungs- und Autorisierungsprobleme:

  1. Überflüssige Berechtigungen: Das Gewähren zu vieler Berechtigungen führt zu verringerter Sicherheit.

  2. Zugriff auf Low-Level-Berechtigungen: Unsachgemäßes Verwalten der MetaMask-Root-Key-Entropie für Ethereum beispielsweise.

  3. Leckage von kryptografischem Material:- Dapp fordert privaten Schlüssel an: Private Schlüssel dürfen MetaMask niemals verlassen!

  • Kontoverwaltung: Der Snap sollte den Nutzer auffordern, bevor er beim ersten Verbindungsaufbau ein Konto verbindet.

Wir verfeinern derzeit die Ergebnisse unserer Analyse und identifizieren neue Erkenntnisse. Mehr folgt in Kürze. Bleibt dran :)

Wichtige Erkenntnisse für Snap-Entwickler

Sei dir bewusst, dass du ein Trust Module entwickelst! Nutzer vertrauen MetaMask, aber nicht der Dapp. Der Nutzer muss jede Aktion bestätigen und sollte alle Informationen zur Verfügung haben, um eine fundierte Entscheidung zu treffen. Schlüssel verlassen MetaMask niemals. Als Snaps-Entwickler kannst du daher:

  1. Minimale Berechtigungen anfordern: Snaps sollten nur Zugriff auf die spezifischen Funktionen oder Daten anfordern, die für ihren Betrieb notwendig sind, um die Angriffsfläche zu minimieren.

  2. Eingaben validieren und bereinigen: Injektionsangriffe oder die Ausführung von nicht vertrauenswürdigem Code vermeiden. Angesichts der Fähigkeit des Snaps, die Funktionalität der Wallet eines Nutzers zu erweitern, ist es entscheidend, dass alle Eingaben sicher und frei von Exploits sind, um sowohl die Integrität der Wallet als auch die Vermögenswerte des Nutzers zu schützen.

  3. Supply Chain verwalten: Abhängigkeiten sorgfältig auswählen und aktualisieren, um Schwachstellen zu vermeiden.

Diese Prinzipien und die zugrunde liegenden häufigen Probleme während der Entwicklung im Hinterkopf zu behalten, macht die Zukunft von Snaps für die nächste Milliarde Nutzer deutlich sicherer.

Consensys Diligence hat einer Vielzahl von Projekten im gesamten Blockchain-Ökosystem geholfen, sicherzustellen, dass ihre Protokolle startbereit sind und zum Schutz der Nutzer entwickelt wurden. Consensys Diligence prüft deinen Snap gerne auf diese und weitere Schwachstellen in einem individuellen Audit. Melde dich und hol dir ein Angebot!

Martin Ortner (tintinweb)

Valentin Quelquejay

Martin und Valentin, Sicherheitsexperten bei Consensys Diligence, stehen an der Spitze der Snap-Sicherheitsforschung und arbeiten unermüdlich daran, die Sicherheit der Plattform zu verbessern.

KI-übersetzt. Kann Fehler enthalten. Bitte überprüfen Sie die Informationen stets.

Bewerten Sie die Übersetzung

Dieser Artikel wurde verfasst von: