Management-Zusammenfassung
Tezos kontaktierte Sayfer Security, um ein Sicherheitsaudit von Tezos MetaMask Snap durchzuführen.
Bevor wir die oben genannten Dienste bewerteten, hielten wir ein Kickoff-Meeting mit dem technischen Team von Tezos ab und erhielten einen Überblick über das System und die Ziele dieser Forschung.
Im Forschungszeitraum von 2 Wochen haben wir 4 Erkenntnisse im System entdeckt.
Zusammenfassend lässt sich sagen, dass nach dem Bericht mehrere Korrekturen implementiert werden sollten, der Sicherheitsstatus des Systems jedoch angemessen ist.
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 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 | Die OWASP-ID des Problems. Zusätzliche Tests, die wir durchführen und nicht in der OWASP-Tabelle enthalten sind, erhalten die Sayfer-ID. Beispiel-ID: WSTG-INFO-002 WSTG – Leitfaden zum Web-Sicherheitstest. INFOS – Eine Abkürzung für das Thema, zu dem die Ausgabe gehört. 002 - Ausgabe Nummer. |
| Risiko | Stellt den Risikofaktor des Problems dar. Weitere Beschreibungen finden Sie im Schwachstellen nach Risiko . |
| Erforderliche Fähigkeiten | Beschreibt das erforderliche Fähigkeitsniveau, um eine erfolgreiche Ausbeutung durchzuführen. Je niedriger die Fähigkeitsstufe, desto einfacher ist der Ausbeutungsprozess. |
| OWASP Literaturhinweis |
Ein Link zur entsprechenden OWASP-Seite für weitere Informationen. |
| Standort | Die URL, in der dieses Problem erkannt wurde. Probleme ohne Standort haben keinen bestimmten Standort und beziehen sich auf das Produkt als Ganzes. |
| Zubehör | Die zur Erkennung des Problems verwendeten Tools. |
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
Abhängigkeiten mit bekannten Schwachstellen
| ID | SAGEN-01 |
| Status | Behoben |
| Risiko | Niedrig |
| Standort | - |
| Auswirkungen auf das Geschäft | Die Verwendung anfälliger Versionen von Knotenmodulen könnte den Dienst verschiedenen Angriffen aussetzen, von denen einige weniger kritisch, andere jedoch schwerwiegend sind. |
Beschreibung
Das NPM-Audit gibt mehrere Ergebnisse für bekannte Schwachstellen in den installierten Paketen zurück:
npm audit
# npm audit report
engine.io 5.1.0 - 6.4.1
Severity: moderate
engine.io Uncaught Exception vulnerability -
https://github.com/advisories/GHSA-q9mw-68c2-j6m5
fix available via `npm audit fix`
node_modules/engine.io
socket.io 4.1.0 - 4.6.0-alpha1
Depends on vulnerable versions of engine.io
node_modules/socket.io
gatsby 1.9.130 - 4.25.7 || 5.4.0-next.0 - 5.9.1
Depends on vulnerable versions of gatsby-cli
Depends on vulnerable versions of latest-version
Depends on vulnerable versions of socket.io
node_modules/gatsby
got <11.8.5
Severity: moderate
Got allows a redirect to a UNIX socket -
https://github.com/advisories/GHSA-pfrx-2q88-qq97
fix available via `npm audit fix`
node_modules/package-json/node_modules/got
package-json <=6.5.0
Depends on vulnerable versions of got
node_modules/package-json
latest-version 0.2.0 - 5.1.0
Depends on vulnerable versions of package-json
node_modules/latest-version
update-notifier 0.2.0 - 5.1.0
Depends on vulnerable versions of latest-version
node_modules/update-notifier
gatsby-cli 1.1.27 - 4.25.0
Depends on vulnerable versions of update-notifier
node_modules/gatsby-cli
13
request *
Severity: moderate
Server-Side Request Forgery in Request -
https://github.com/advisories/GHSA-p8p7-x288-28g6
fix available via `npm audit fix`
node_modules/request
node-gyp <=7.1.2
Depends on vulnerable versions of request
node_modules/@npmcli/run-script/node_modules/node-gyp
@npmcli/run-script 1.1.1 - 1.8.6
Depends on vulnerable versions of node-gyp
node_modules/@npmcli/run-script
@lavamoat/allow-scripts <=2.3.0
Depends on vulnerable versions of @npmcli/run-script
node_modules/@lavamoat/allow-scripts
socket.io-parser 4.0.4 - 4.2.2
Severity: high
Insufficient validation when decoding a Socket.IO packet -
https://github.com/advisories/GHSA-cqmj-92xf-r6r9
fix available via `npm audit fix`
node_modules/socket.io-parser
webpack 5.0.0 - 5.75.0
Severity: high
Cross-realm object access in Webpack 5 -
https://github.com/advisories/GHSA-hc6q-2mpp-qw7j
fix available via `npm audit fix`
node_modules/webpack
yaml 2.0.0-5 - 2.2.1
Severity: high
Uncaught Exception in yaml - https://github.com/advisories/GHSA-f9xv-q969-pqx4
fix available via `npm audit fix`
node_modules/yaml-loader/node_modules/yaml
Wir haben jeden einzelnen davon validiert, um sicherzustellen, dass er sich nicht auf den Produktionsaufbau auswirkt, und haben festgestellt, dass selbst die schwerwiegendsten Fehler keinen direkten Einfluss auf Tezos Snap haben. Obwohl dies bedeutet, dass derzeit kein Sicherheitsrisiko besteht, könnten in Zukunft neue Funktionen oder neue Schwachstellen auftreten.
Mitigation
Der erste Schritt bestünde darin, die Pakete nach Möglichkeit auf die neuesten Versionen zu aktualisieren. Im Großen und Ganzen besteht Bedarf an einem automatisierten System, das vor neuen Schwachstellen warnt, und es sollte ein Prozess vorhanden sein, um diese zu entschärfen, wenn kritische Schwachstellen auftreten.
Magische Zahlen
| ID | SAGEN-02 |
| Status | Behoben |
| Risiko | Informational |
| Standort | - |
| Auswirkungen auf das Geschäft | Magische Zahlen wirken sich auf die Lesbarkeit des Codes aus. Ohne Insiderwissen wirken sie eher willkürlich. |
Beschreibung
Bei unserer Untersuchung ist uns die Verwendung scheinbar willkürlicher Konstanten ohne erklärende Kommentare aufgefallen:

Im obigen Fall ist es schwer zu erraten, was der Grund für die Division durch 1000 oder die Multiplikation mit 257 ist, ohne zu wissen, wie das Protokoll und die Blockchain selbst funktionieren
Mitigation
Es gilt als gute Praxis, solchen hartcodierten Konstanten beschreibende Namen zu geben und bei Bedarf erläuternde Kommentare hinzuzufügen.
Alarmierende Metamask-Eingabeaufforderung
| ID | SAGEN-03 |
| Status | Behoben |
| Risiko | Informational |
| Standort | - |
| Auswirkungen auf das Geschäft | Eine solche Aufforderung kann Benutzer davon abhalten, Snap zu installieren |
Beschreibung
Bei der Installation von Snap erscheint die folgende schwer verständliche Metamask-Eingabeaufforderung:

Mitigation
Es ist für Tezos möglicherweise nicht möglich, diese ziemlich beängstigende Aufforderung zu ändern. Da es jedoch von Interesse sein könnte, haben wir uns entschieden, dieses Problem nur zu Informationszwecken aufzunehmen.
Alarmierende Metamask-Eingabeaufforderung
| ID | SAGEN-04 |
| Status | Behoben |
| Risiko | Informational |
| Standort | - |
| Auswirkungen auf das Geschäft | Keine Präsentation |
Beschreibung
Während unserer Bewertung ist uns dieser Kommentar aufgefallen, der eine gewisse Unsicherheit impliziert, die auf ein zugrunde liegendes größeres Problem hinweisen könnte

Wir haben es untersucht und konnten nicht feststellen, wo das Problem liegt, auf das sich der Kommentar bezieht.
Mitigation
Diese Kommentare sollten in der Release-Version geändert oder entfernt werden. Wenn es hier ein tieferes Problem gibt, sollten die Entwickler die Logik aktualisieren, warum dies der Fall ist
Anhang A: Fixes zur Sicherheitsbewertung
Nach einer Prüfung durch das Sayfer-Team können wir bestätigen, dass alle Schwachstellen vom Tezos-Team behoben wurden
Erster Commit-Hash: 0e0d653b85cbd11365771ad9c2ee5726b10a7d26
Behebt Commit-Hash: 0d0c9381a1107c54647d927d4fe99694f332e24d




