FixVibe
Covered by FixVibehigh

Erkennen und Verhindern von Cross-Site-Scripting-Schwachstellen (XSS).

Cross-Site Scripting (XSS) tritt auf, wenn eine Anwendung nicht vertrauenswürdige Daten ohne ordnungsgemäße Validierung oder Codierung in eine Webseite einfügt. Dadurch können Angreifer bösartige Skripte im Browser des Opfers ausführen, was zu Sitzungs-Hijacking, unbefugten Aktionen und der Offenlegung sensibler Daten führt.

CWE-79

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 Sie Content-Type und X-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-Policy oder X-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.write oder setTimeout, die häufige Indikatoren für DOM-basiertes XSS sind [S1].