Metamask Snap Audit Report für Qtum

Management-Zusammenfassung

Qtum kontaktierte Sayfer Security, um im Mai 05 einen Penetrationstest für Qtums MetaMask Snap durchzuführen.

Bevor wir die oben genannten Dienste bewerteten, hielten wir ein Kickoff-Meeting mit dem technischen Team von Qtum ab und erhielten einen Überblick über das System und die Ziele dieser Untersuchung.

Während der zweiwöchigen Untersuchung entdeckten wir fünf Schwachstellen im System, keine davon kritisch.

Zusammenfassend lässt sich sagen, dass nach dem Bericht mehrere Korrekturen implementiert werden sollten, der Sicherheitsstatus des Systems jedoch angemessen ist.

Nach einer Überprüfung durch das Sayfer-Team bestätigen wir, dass alle in diesem Bericht erwähnten Sicherheitsprobleme vom Qtum-Team behoben wurden.

Risikomethodik

Bei Sayfer sind wir bestrebt, unseren Kunden Penetrationstests höchster Qualität anzubieten. Aus diesem Grund haben wir ein umfassendes Risikobewertungsmodell implementiert, um die Schwere unserer Ergebnisse zu bewerten und unseren Kunden die bestmöglichen Empfehlungen zur Risikominderung zu geben.

Unser Risikobewertungsmodell basiert auf zwei Schlüsselfaktoren: IMPACT , WAHRSCHEINLICHKEIT. Auswirkungen beziehen sich auf den potenziellen Schaden, der aus einem Problem resultieren könnte, beispielsweise finanzieller Verlust, Rufschädigung oder ein nicht betriebsbereites System. Die Wahrscheinlichkeit bezieht sich auf die Wahrscheinlichkeit, dass ein Problem auftritt, unter Berücksichtigung von Faktoren wie der Komplexität des Angriffs und der Anzahl potenzieller Angreifer.

Durch die Kombination dieser beiden Faktoren können wir ein umfassendes Verständnis des von einem bestimmten Problem ausgehenden Risikos schaffen und unseren Kunden eine klare und umsetzbare Einschätzung der Schwere des Problems liefern. Dieser Ansatz ermöglicht es uns, unsere Empfehlungen zu priorisieren und sicherzustellen, dass unsere Kunden die bestmögliche Beratung zum Schutz ihres Unternehmens erhalten.

Risiko wird wie folgt definiert:

Schwachstellen nach Risiko

Hoch – Direkte Bedrohung wichtiger Geschäftsprozesse.
Medium – Indirekte Bedrohung wichtiger Geschäftsprozesse oder partielle Bedrohung von Geschäftsprozessen.
Niedrig – Es besteht keine direkte Bedrohung. Die Schwachstelle kann mit anderen Schwachstellen ausgenutzt werden.
Informational – Dieser Befund weist nicht auf eine Schwachstelle hin, sondern gibt einen Kommentar an, der auf Designfehler und unsachgemäße Implementierung hinweist, die auf lange Sicht ein Problem verursachen könnten.

Schwere
# Probleme
Hoch
0
Medium
0
Niedrig
3
Informational
2

Ansatz

Einführung

Qtum hat Sayfer kontaktiert, um Penetrationstests für ihre MetaMask Snap-Anwendung durchzuführen.

Dieser Bericht dokumentiert die von Sayfer durchgeführte Forschung zu den im Forschungsumfang definierten Ressourcen. Insbesondere zeigt der Bericht die Sicherheitslageprüfung für die MetaMask Snap-Anwendung von Qtum sowie die zugehörige Infrastruktur und Prozessimplementierung.

Unser Projektlebenszyklus für Penetrationstests:

01

Scope-Übersicht

02

Technische Übersicht

03

Bereichsvalidierung

04

Bedrohungsmodell

05

Sicherheitsbewertung

06

Sicherheitsbewertung

Scope-Übersicht

Während unseres ersten Treffens und nachdem wir die Anforderungen des Unternehmens verstanden hatten, definierten wir den Anwendungsbereich, der sich unter den folgenden URLs befindet, als den Umfang des Projekts:

  • Qtums MetaMask Snap

Unsere Tests wurden vom 24 bis 05 durchgeführt.

Lass es nicht zu spät sein!

Starten Sie Ihr Audit mit Sayfer

Bereichsvalidierung

Wir begannen damit, sicherzustellen, dass der Umfang, der uns vom Kunden vorgegeben wurde, technisch logisch war.
Die Entscheidung, welcher Umfang für ein bestimmtes System der richtige ist, ist Teil der ersten Diskussion. Der richtige Umfang ist der Schlüssel zur Erzielung des größtmöglichen Geschäftswerts aus der Forschung.

Bedrohungsmodell

Während unserer Kickoff-Meetings mit dem Kunden haben wir die wichtigsten Vorteile der Anwendung definiert.
Wir haben festgestellt, dass die größte aktuelle Bedrohung für das System is Durchsickern vertraulicher Benutzerinformationen.

Lass es nicht zu spät sein!

Starten Sie Ihr Audit mit Sayfer

Methodik der Sicherheitsbewertung

Sayfer verwendet OWASP WSTG als unser technischer Standard bei der Überprüfung von Webanwendungen. Nachdem wir uns ein gründliches Verständnis des Systems angeeignet hatten, entschieden wir, welche OWASP-Tests erforderlich sind, um das System zu evaluieren.

Sicherheitsbewertung

Nachdem wir den Umfang verstanden und definiert, eine Bedrohungsmodellierung durchgeführt und die richtigen Tests bewertet hatten, die erforderlich waren, um die Anwendung vollständig auf Sicherheitslücken zu überprüfen, führten wir unsere Sicherheitsbewertung durch.

Beschreibung der Problemtabelle

Titel der Ausgabe

ID SAGEN-??: Eine ID zur einfachen Kommunikation zu jeder Schwachstelle
Status Offen/Behoben/Bestätigt
Risiko Stellt den Risikofaktor des Problems dar. Weitere Beschreibungen finden Sie im Schwachstellen nach Risiko .
Auswirkungen auf das Geschäft Das Hauptrisiko der Sicherheitslücke liegt auf Unternehmensebene.
Standort Die URL oder die Datei, in der dieses Problem erkannt wurde. Probleme ohne Standort haben keinen bestimmten Standort und beziehen sich auf das Produkt als Ganzes.

Beschreibung

Hier geben wir eine kurze Beschreibung des Problems und seiner Entstehung, die Schritte, die wir unternommen haben, um es zu finden oder auszunutzen, zusammen mit einem Konzeptnachweis (falls vorhanden) und wie sich dieses Problem auf das Produkt oder seine Benutzer auswirken kann.

Mitigation

Vorgeschlagene Lösungsoptionen für dieses Problem und Links zu empfohlenen Websites zur weiteren Behebung.

Sicherheitsbewertung

Die folgenden Tests wurden während der Prüfung des Systems durchgeführt

Informationsbeschaffung

Informationsbeschaffung Testname
WSTG-INFO-01 Führen Sie Search Engine Discovery Reconnaissance für Informationslecks durch
WSTG-INFO-02 Fingerabdruck-Webserver
WSTG-INFO-03 Überprüfen Sie Webserver-Metadateien auf Informationslecks
WSTG-INFO-04 Anwendungen auf dem Webserver auflisten
WSTG-INFO-05 Überprüfen Sie den Inhalt der Webseite auf Informationslecks
WSTG-INFO-06 Identifizieren Sie Einstiegspunkte für Anwendungen
WSTG-INFO-07 Ordnen Sie Ausführungspfade durch die Anwendung zu
WSTG-INFO-08 Framework für Fingerabdruck-Webanwendungen
WSTG-INFO-09 Fingerabdruck-Webanwendung
WSTG-INFO-10 Kartenanwendungsarchitektur

Konfigurations- und Deployment-Management-Tests

Konfigurations- und Deployment-Management-Tests Testname
WSTG-CONF-01 Konfiguration der Netzwerkinfrastruktur testen
WSTG-CONF-02 Testen Sie die Konfiguration der Anwendungsplattform
WSTG-CONF-03 Testen Sie die Behandlung von Dateierweiterungen für vertrauliche Informationen
WSTG-CONF-04 Überprüfen Sie alte Sicherungskopien und nicht referenzierte Dateien auf sensible Informationen
WSTG-CONF-05 Zählen Sie Infrastruktur- und Anwendungsverwaltungsschnittstellen auf
WSTG-CONF-06 HTTP-Methoden testen
WSTG-CONF-07 Testen Sie HTTP Strict Transport Security
WSTG-CONF-08 Testen Sie die domänenübergreifende RIA-Richtlinie
WSTG-CONF-09 Dateiberechtigung testen
WSTG-CONF-10 Test auf Subdomain-Übernahme
WSTG-CONF-11 Cloud-Speicher testen

Identitätsmanagement-Tests

Identitätsmanagement-Tests Testname
WSTG-IDNT-01 Rollendefinitionen testen
WSTG-IDNT-02 Registrierungsprozess für Testbenutzer
WSTG-IDNT-03 Testkonto-Bereitstellungsprozess
WSTG-IDNT-04 Testen auf Kontoaufzählung und erratbares Benutzerkonto
WSTG-IDNT-05 Test auf schwache oder nicht erzwungene Richtlinie für Benutzernamen

Authentifizierungstests

Authentifizierungstests Testname
WSTG-ATHN-01 Testen auf Anmeldeinformationen, die über einen verschlüsselten Kanal transportiert werden
WSTG-ATHN-02 Testen auf Standardanmeldeinformationen
WSTG-ATHN-03 Prüfung auf schwachen Sperrmechanismus
WSTG-ATHN-04 Testen auf Umgehung des Authentifizierungsschemas
WSTG-ATHN-05 Testen auf anfälliges Passwort merken
WSTG-ATHN-06 Testen auf Browser-Cache-Schwachstellen
WSTG-ATHN-07 Testen auf Richtlinie für schwache Kennwörter
WSTG-ATHN-08 Testen auf Schwache Sicherheitsfrage Antwort
WSTG-ATHN-09 Testen auf schwache Funktionen zum Ändern oder Zurücksetzen von Passwörtern
WSTG-ATHN-10 Testen auf schwächere Authentifizierung im alternativen Kanal

Autorisierungstests

Autorisierungstests Testname
WSTG-ATHZ-01 Testen von Directory Traversal File Include
WSTG-ATHZ-02 Testen auf Umgehung des Autorisierungsschemas
WSTG-ATHZ-03 Testen auf Rechteausweitung
WSTG-ATHZ-04 Testen auf unsichere direkte Objektreferenzen

Testen der Sitzungsverwaltung

Testen der Sitzungsverwaltung Testname
WSTG-SESS-01 Testen für das Sitzungsverwaltungsschema
WSTG-SESS-02 Testen auf Cookie-Attribute
WSTG-SESS-03 Testen auf Sitzungsfixierung
WSTG-SESS-04 Testen auf exponierte Sitzungsvariablen
WSTG-SESS-05 Prüfung auf Cross-Site-Request-Forgery
WSTG-SESS-06 Testen der Abmeldefunktion
WSTG-SESS-07 Zeitüberschreitung der Testsitzung
WSTG-SESS-08 Testen auf Session-Puzzling
WSTG-SESS-09 Testen auf Session Hijacking

Testen der Datenvalidierung

Testen der Datenvalidierung Testname
WSTG-INPV-01 Testen auf reflektiertes Cross-Site-Scripting
WSTG-INPV-02 Testen auf Stored Cross Site Scripting
WSTG-INPV-03 Testen auf HTTP-Verb-Manipulation
WSTG-INPV-04 Testen auf HTTP-Parameterverschmutzung
WSTG-INPV-05 Testen auf SQL-Injection
WSTG-INPV-06 Testen auf LDAP-Injection
WSTG-INPV-07 Testen auf XML-Injection
WSTG-INPV-08 Prüfung auf SSI-Einspritzung
WSTG-INPV-09 Testen auf XPath-Injektion
WSTG-INPV-10 Testen auf IMAP-SMTP-Injection
WSTG-INPV-11 Testen auf Code-Injection
WSTG-INPV-12 Testen auf Befehlsinjektion
WSTG-INPV-13 Testen auf Format-String-Injection
WSTG-INPV-14 Testen auf inkubierte Schwachstellen
WSTG-INPV-15 Testen auf HTTP-Splitting-Schmuggel
WSTG-INPV-16 Testen auf eingehende HTTP-Anforderungen
WSTG-INPV-17 Testen auf Host-Header-Injektion
WSTG-INPV-18 Testen auf serverseitige Vorlageninjektion
WSTG-INPV-19 Testen auf serverseitige Anforderungsfälschung

Fehlerbehandlung

Fehlerbehandlung Testname
WSTG-ERRH-01 Testen auf unsachgemäße Fehlerbehandlung
WSTG-ERRH-02 Testen auf Stack-Traces

Cryptography

Cryptography Testname
WSTG-CRYP-01 Testen auf schwache Transportschichtsicherheit
WSTG-CRYP-02 Testen für Padding Oracle
WSTG-CRYP-03 Prüfung auf sensible Informationen, die über unverschlüsselte Kanäle gesendet werden
WSTG-CRYP-04 Testen auf schwache Verschlüsselung

Testen der Geschäftslogik

Testen der Geschäftslogik Testname
WSTG-BUSL-01 Testen Sie die Datenvalidierung der Geschäftslogik
WSTG-BUSL-02 Testen Sie die Fähigkeit, Anfragen zu fälschen
WSTG-BUSL-03 Integritätsprüfungen testen
WSTG-BUSL-04 Testen Sie das Prozesstiming
WSTG-BUSL-05 Testen Sie, wie oft eine Funktion verwendet werden kann
WSTG-BUSL-06 Prüfung auf Umgehung von Arbeitsabläufen
WSTG-BUSL-07 Testen Sie Abwehrmaßnahmen gegen Anwendungsmissbrauch
WSTG-BUSL-08 Test-Upload von unerwarteten Dateitypen
WSTG-BUSL-09 Test-Upload schädlicher Dateien

Clientseitiges Testen

Clientseitiges Testen Testname
WSTG-CLNT-01 Testen auf DOM-basiertes Cross-Site-Scripting
WSTG-CLNT-02 Testen auf JavaScript-Ausführung
WSTG-CLNT-03 Testen auf HTML-Injection
WSTG-CLNT-04 Testen der clientseitigen URL-Umleitung
WSTG-CLNT-05 Testen auf CSS-Injektion
WSTG-CLNT-06 Testen auf clientseitige Ressourcenmanipulation
WSTG-CLNT-07 Testen Sie die ursprungsübergreifende Ressourcenfreigabe
WSTG-CLNT-08 Testen auf Cross-Site-Flashing
WSTG-CLNT-09 Test auf Clickjacking
WSTG-CLNT-10 Testen von WebSockets
WSTG-CLNT-11 Testen Sie Web-Messaging
WSTG-CLNT-12 Testen des Browserspeichers
WSTG-CLNT-13 Testen auf Cross-Site-Skripteinbindung

API-Tests

API-Tests Testname
WSTG-APIT-01 Testen von GraphQL

Audit bei Sayfer bestellen

    Diese Seite wird von reCAPTCHA und Google geschützt. Datenschutzbestimmungen , Nutzungsbedingungen .

    Ergebnisse der Sicherheitsbewertung

    Keine Methode zum Entfernen hinzugefügter Netzwerke

    ID SAGEN-01
    Status Behoben
    Risiko Niedrig
    Auswirkungen auf das Geschäft Es ist nicht möglich, einzelne hinzugefügte Netzwerke aus dem Snap zu entfernen.
    Standort – Pakete/Snap/src/helpers.ts:105

    Beschreibung

    Der Code ermöglicht das Hinzufügen zusätzlicher Netzwerke und erweitert deren Liste über die Standardliste hinaus. Es wurde jedoch darauf hingewiesen, dass diese nur durch eine Neuinstallation des Snaps entfernt werden können. Diese Funktionalität war wahrscheinlich geplant, da es zwar eine Funktion removeNetwork() gibt, diese aber nicht über öffentlich verfügbare Methoden aufgerufen werden kann.

    export const networks = {
        get: getNetworks,
        setCurrent: setCurrentNetwork,
        add: addNetwork,
        remove: removeNetwork,
    };

    Mitigation

    Wir empfehlen, diese Methode zu implementieren, wie es wahrscheinlich beabsichtigt war.

     

    Fehlende Bestätigungsaufforderung zum Exportieren privater Schlüssel

    ID SAGEN-02
    Status Behoben
    Risiko Niedrig
    Auswirkungen auf das Geschäft Es besteht das Risiko, dass der private Schlüssel preisgegeben wird, wenn er irrtümlicherweise auf einem Bildschirm angezeigt wird, beispielsweise an einem öffentlichen Ort.
    Standort – Pakete/Snap/src/index.ts:145

    Beschreibung

    Bei den meisten kritischen Funktionen im Snap wird ein Dialogfeld angezeigt, das den Benutzer über die ausgeführte Aktion informiert und um seine Zustimmung bittet.

    Diese Sicherheitsmaßnahme fehlt jedoch in der Methode WalletExportPrivateKey, die zur Anzeige des privaten Schlüssels auf dem Snap-Bildschirm verwendet wird. Bei einem versehentlichen Aufruf würde der private Schlüssel sofort angezeigt.

    Mitigation

    Fügen Sie vor der Anzeige des privaten Schlüssels eine Bestätigungsaufforderung hinzu, in der Sie die Zustimmung des Benutzers einholen.

     

    Mehrere nicht implementierte Methoden

    ID SAGEN-03
    Status Behoben
    Risiko Niedrig
    Auswirkungen auf das Geschäft Es besteht das Risiko, dass einige der nicht implementierten Methoden für die Funktionalität des Snaps wichtig sein könnten und versehentlich übersehen wurden.
    Standort – Pakete/Snap/src/index.ts:163, 169, 260, 266, 272, 278, 284, 290, 296, 302, 308, 314, 320, 326, 472, 509, 541, 568, 574, 580, 586, 592, 609, 615, 637, 643, 649, 655, 696, 735, 741, 747, 753, 759, 765, 771, 777, 783

    Beschreibung

    Ein großer Teil der im Snap vorhandenen Methoden scheint ungenutzt zu bleiben. Es existiert lediglich der sie umgebende Boilerplate-Code, jedoch keine konkrete Logik.

    Mitigation

    Wir empfehlen, die Methoden, die Sie in Ihrem Snap implementieren möchten, zu überprüfen und sicherzustellen, dass sie alle tatsächliche Logik enthalten. Der Benutzer sollte nicht unnötige Methoden aufrufen können, die Sie nicht implementieren möchten.

     

    Redundanter Code

    ID SAGEN-04
    Status Behoben
    Risiko Informational
    Auswirkungen auf das Geschäft Methoden, die dasselbe tun und dieselben Daten zurückgeben, vergrößern die Codebasis des Snaps unnötig.
    Standort – Pakete/Snap/src/index.ts:332, 338

    Beschreibung

    Während unserer Analyse haben wir festgestellt, dass zwei RPC-Methoden, EthRequestAccounts und EthAccounts, scheinbar dasselbe tun und dieselben Werte zurückgeben.

    case RPCMethods.EthRequestAccounts: {
        const wallet = await getWallet();
        return [wallet.address];
    }
    case RPCMethods.EthAccounts: {
        console.log('RPCMethods.EthAccounts');
        console.log('request.params', JSON.stringify(request.params));
        const wallet = await getWallet();
        return [wallet.address];
    }

    In beiden Fällen rufen diese Methoden die Daten der aktiven Wallet mithilfe von getWallet() ab und geben anschließend deren Adresse zurück. Der einzige Unterschied besteht derzeit darin, dass EthAccounts protokolliert, EthRequestAccounts hingegen nicht.

    Mitigation

    Erwägen Sie, entweder eine der Methoden zu entfernen oder eine zu ändern, um sie von den anderen zu unterscheiden

     

    Übrig gebliebene TODO-Kommentare

    ID SAGEN-05
    Status Behoben
    Risiko Informational
    Auswirkungen auf das Geschäft TODO-Kommentare und kommentierte Codeabschnitte können potenziellen Angreifern wertvolle Informationen liefern und wirken zudem unprofessionell.
    Standort – Pakete/Snap/src/index.ts:460, 550
    – Pakete/Snap/src/polyfill.ts:7
    – Pakete/Snap/src/Helfer/Parser/tx.ts:55

    Beschreibung

    Die Codebasis enthält mehrere TODO-Kommentare und auch Abschnitte mit auskommentiertem Code, der nicht mehr verwendet wird.

    Dies ist zwar in einer Testumgebung akzeptabel, sollte aber in der Produktion vermieden werden. Solche Kommentare können potenziellen Stakeholdern wertvolle Informationen über fehlende Funktionen, Sicherheitsmaßnahmen und die Gedanken der Entwickler liefern, die zur Profilierung von Angriffen genutzt werden können.

    Mitigation

    Wir empfehlen, als TODO gekennzeichnete Kommentare und nicht verwendete Codefragmente in Ihrem Produktionszweig zu entfernen.

    Weitere Informationen dazu finden Sie in unserem Blog

    Sayfers Blog konzentriert sich auf Web3, Sicherheit und Schwachstellenforschung. Wir glauben, dass es in der Cybersicherheitsbranche entscheidend ist, über die neuesten Trends und Fortschritte auf dem Laufenden zu bleiben. Derzeit erforscht unser Team erfahrener Forscher gerne hochmoderne Blockchain- und Web3-Technologien.
    Kontaktiere uns

    Im Kontakt bleiben

    Telefonnummer
    Standort
    Tel Aviv, Israel
    Boten:
    Bitte zögern Sie nicht, uns zu kontaktieren, wir antworten gerne!

      Diese Seite wird von reCAPTCHA und Google geschützt. Datenschutzbestimmungen , Nutzungsbedingungen .
      Zum Inhalt