Auswirkungen
Ein Angreifer, der eine Cross-Site-Scripting-Schwachstelle (XSS) erfolgreich ausnutzt, kann sich als Opferbenutzer ausgeben, jede Aktion ausführen, zu der der Benutzer berechtigt ist, und auf alle Daten des Benutzers zugreifen ([S1]). Dazu gehört der Diebstahl von Sitzungscookies, um Konten zu kapern, das Erfassen von Anmeldeinformationen über gefälschte Formulare oder die Durchführung virtueller Verunstaltungen [S1][S2]. Wenn das Opfer über Administratorrechte verfügt, kann der Angreifer die volle Kontrolle über die Anwendung und ihre Daten erlangen [S1].
Grundursache
XSS tritt auf, wenn eine Anwendung vom Benutzer steuerbare Eingaben empfängt und diese ohne ordnungsgemäße Neutralisierung oder Kodierung in eine Webseite einfügt. [S2]. Dadurch kann die Eingabe vom Browser des Opfers als aktiver Inhalt (JavaScript) interpretiert werden, wodurch die Same Origin Policy umgangen wird, die darauf ausgelegt ist, Websites voneinander zu isolieren [S1][S2].
Schwachstellentypen
- Reflektiert XSS: Schädliche Skripte werden von einer Webanwendung an den Browser des Opfers reflektiert, typischerweise über einen URL-Parameter [S1].
- Gespeichert XSS: Das Skript wird dauerhaft auf dem Server gespeichert (z. B. in einer Datenbank oder im Kommentarbereich) und den Benutzern später bereitgestellt [S1][S2].
- DOM-basiert XSS: Die Sicherheitslücke besteht vollständig im clientseitigen Code, der Daten aus einer nicht vertrauenswürdigen Quelle auf unsichere Weise verarbeitet, z. B. beim Schreiben in
innerHTML[S1].
Konkrete Korrekturen
- Daten bei der Ausgabe kodieren: Konvertieren Sie vom Benutzer steuerbare Daten in eine sichere Form, bevor Sie sie rendern. Verwenden Sie die HTML-Entitätskodierung für den HTML-Text und die entsprechende JavaScript- oder CSS-Kodierung für diese spezifischen Kontexte [S1][S2].
- Eingabe bei Ankunft filtern: Implementieren Sie strenge Zulassungslisten für erwartete Eingabeformate und lehnen Sie alles ab, was nicht [S1][S2] entspricht.
- Sicherheitsheader verwenden: Setzen Sie das
HttpOnly-Flag für Sitzungscookies, um den Zugriff über JavaScript [S2] zu verhindern. Verwenden SieContent-TypeundX-Content-Type-Options: nosniff, um sicherzustellen, dass Browser Antworten nicht fälschlicherweise als ausführbaren Code [S1] interpretieren. - Inhaltssicherheitsrichtlinie (CSP): Stellen Sie ein starkes CSP bereit, um die Quellen einzuschränken, aus denen Skripte geladen und ausgeführt werden können, und stellen Sie so eine Tiefenverteidigungsebene bereit. [S1][S2].
Wie FixVibe darauf testet
FixVibe konnte XSS durch einen mehrschichtigen Ansatz erkennen, der auf etablierten Scan-Methoden basiert. [S1]:
- Passive Scans: Identifizieren fehlender oder schwacher Sicherheitsheader wie
Content-Security-PolicyoderX-Content-Type-Options, die darauf ausgelegt sind, XSS [S1] zu entschärfen. - Aktive Sonden: Einfügung eindeutiger, nicht schädlicher alphanumerischer Zeichenfolgen in URL-Parameter und Formularfelder, um festzustellen, ob sie ohne ordnungsgemäße Codierung [S1] im Antworttext wiedergegeben werden.
- Repo-Scans: Analysieren von clientseitigem JavaScript auf „Senken“, die nicht vertrauenswürdige Daten unsicher verarbeiten, wie z. B.
innerHTML,document.writeodersetTimeout, die häufige Indikatoren für DOM-basiertes XSS sind [S1].
