Management-Zusammenfassung
PolkaGate kontaktierte Sayfer Security, um im Februar 2024 einen Penetrationstest für PolkaGate Snap durchzuführen.
Bevor wir die oben genannten Dienste bewerteten, hielten wir ein Kickoff-Meeting mit dem technischen Team von PolkaGate 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 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 PolkaGate-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 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
Ergebnisse der Sicherheitsbewertung
Keine Warnung beim Signieren beliebiger Daten
| ID | SAGEN-01 |
| Status | Behoben |
| Risiko | Niedrig |
| Auswirkungen auf das Geschäft | Erhöhtes Risiko erfolgreicher Phishing-Angriffe auf Benutzer. |
| Standort | – index.ts:24, 26 |
Beschreibung
Bei unserer Bewertung haben wir festgestellt, dass das Signieren beliebiger Daten keine zusätzliche Warnung auslöst, wie im Screenshot unten zu sehen ist.

Standardmäßig fügt Metamask eine Warnung hinzu, wenn ein Benutzer aufgefordert wird, beliebige Daten zu signieren, um Signaturdiebstahl zu verhindern. Während solche Betrugsfälle hauptsächlich auf EVM-basierten Ketten beobachtet werden, könnten ähnliche Betrugsfälle durchaus auch auf anderen Ketten durchgeführt werden.
Mitigation
Zeigt eine Warnung ähnlich der nativen Metamask an. Vielleicht so etwas wie „Achtung – fahren Sie nur fort, wenn Sie die folgende Meldung verstehen!“.
Für weitere Informationen, siehe werden auf dieser Seite erläutert.
Unvollständige Unit-Test-Abdeckung
| ID | SAGEN-02 |
| Status | Behoben |
| Risiko | Informational |
| Auswirkungen auf das Geschäft | Dies ist eine Best-Practice-Erkenntnis: Je geringer die Unit-Test-Abdeckung, desto höher die Wahrscheinlichkeit eines potenziell unerwarteten Verhaltens der Software im Einsatz. In unserem Fall wird lediglich eine der verfügbaren Funktionen nicht durch Unit-Tests abgedeckt. |
| Standort | – index.test.ts |
Beschreibung
Der Snap verarbeitet mehrere Funktionen in seinem Haupt-OnRpcRequestHandler. Alle außer setMetadata werden durch die Unit-Tests in index.test.ts abgedeckt.
Mitigation
Fügen Sie einen Unit-Test hinzu, der setMetadata abdeckt.




