Management-Zusammenfassung
Peersyst kontaktierte Sayfer Security, um im August 2024 einen Penetrationstest für Peersysts MetaMask Snap durchzuführen.
Bevor wir die oben genannten Dienste bewerteten, hielten wir ein Kick-off-Meeting mit dem technischen Team von Peersyst ab und erhielten einen Überblick über das System und die Ziele dieser Untersuchung.
Im Forschungszeitraum von zwei Wochen haben wir drei Schwachstellen im System entdeckt.
Zusammenfassend lässt sich sagen, dass aufgrund des Berichts mehrere Korrekturen implementiert werden sollten, die Sicherheitslage des Systems jedoch ausreichend ist.
Nach einer Überprüfung durch das Sayfer-Team bestätigen wir, dass alle in diesem Bericht erwähnten Sicherheitsprobleme vom Peersyst-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 und 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.
Ansatz
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 sind, 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
Ergebnisse der Sicherheitsbewertung
Nutzung veralteter Funktionalitäten
| ID | SAGEN-01 |
| Status | Anerkannt |
| Risiko | Informational |
| Auswirkungen auf das Geschäft | Mögliche zukünftige Inkompatibilität. |
| Standort | – snap/src/dialog |
Beschreibung
Der Snap verwendet Methoden aus der Snaps-SDK Bibliothek, wie zum Beispiel Trennlinie, Überschrift, Panel, Text und kopierbar, die beim Erstellen von Dialogen als veraltet markiert werden.
Metamask empfiehlt, diese durch neue JSX-Komponenten zu ersetzen. Die Verwendung von Code, der vom Ersteller nicht mehr unterstützt wird, gilt als schlechte Sicherheitspraxis.
Mitigation
Wir empfehlen, den Vorschlägen von Metamask zu folgen und JSX-Komponenten zu verwenden, die sie als Teil ihres SDK unterstützen.
Fehlende Validierung im ChangeNetworkHandler
| ID | SAGEN-02 |
| Status | Behoben |
| Risiko | Informational |
| Auswirkungen auf das Geschäft | Dieser Befund dient ausschließlich Informationszwecken und hat keine Auswirkungen auf die Sicherheitslage des Snaps. |
| Standort | – src/handler/network/ChangeNetworkHandler.ts |
Beschreibung
ChangeNetworkHandler ermöglicht das Ändern der unterstützten Blockchain, überprüft jedoch nicht, ob sich das neue Netzwerk vom alten unterscheidet.
Mitigation
Wenn das alte und das neue Netzwerk identisch sind, sollte der Benutzer eine Rückmeldung erhalten, dass seine Aktion keine Auswirkung hat.




