• CWE-79: Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')

Das Produkt neutralisiert nutzerkontrollierte Eingaben nicht oder neutralisiert diese fehlerhaft, bevor sie in eine Webseiten-Ausgabe gelangen, die anderen Nutzern präsentiert wird.

CWE-79: Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')

CWE ID: 79
Name: Improper Neutralization of Input During Web Page Generation (‘Cross-site Scripting’)

Beschreibung

Das Produkt neutralisiert nutzerkontrollierte Eingaben nicht oder neutralisiert diese fehlerhaft, bevor sie in eine Webseiten-Ausgabe gelangen, die anderen Nutzern präsentiert wird.

Risikominderungsmaßnahmen

Maßnahme (Architecture and Design)

Effektivität: Limited
Beschreibung: Es ist entscheidend, alle potenziellen Bereiche zu verstehen, in denen nicht vertrauenswürdige Eingaben in Ihre Software gelangen können: Parameter oder Argumente, Cookies, alles, was aus dem Netzwerk gelesen wird, Umgebungsvariablen, Reverse-DNS-Lookups, Abfrageergebnisse, Request-Header, URL-Komponenten, E-Mails, Dateien, Dateinamen, Datenbanken und alle externen Systeme, die Daten an die Anwendung liefern. Beachten Sie, dass solche Eingaben auch indirekt über API-Aufrufe erlangt werden können. Notizen: Diese Technik hat eine begrenzte Wirksamkeit, kann aber hilfreich sein, wenn es möglich ist, Client-State und sensible Informationen serverseitig zu speichern, anstatt in Cookies, Headern, versteckten Formularfeldern usw.

Maßnahme (Architecture and Design)

Effektivität: Unknown
Beschreibung: Bei allen Sicherheitsprüfungen, die clientseitig durchgeführt werden, ist sicherzustellen, dass diese auch serverseitig dupliziert werden, um CWE-602 zu vermeiden. Angreifer können die clientseitigen Prüfungen umgehen, indem sie Werte nach Durchführung der Prüfungen modifizieren oder den Client so verändern, dass die clientseitigen Prüfungen vollständig entfernt werden. Anschließend würden diese modifizierten Werte an den Server übermittelt.

Maßnahme (Architecture and Design)

Effektivität: Unknown
Beschreibung: Sollten diese verfügbar sein, ist die Nutzung von strukturierten Mechanismen zu empfehlen, die die Trennung von Daten und Code automatisch erzwingen. Diese Mechanismen können möglicherweise die notwendige Quoting, Encoding und Validation automatisch bereitstellen, anstatt sich darauf zu verlassen, dass der Entwickler diese Funktionalität an jedem Punkt der Ausgabe generiert.

Maßnahme (Implementation)

Effektivität: Unknown
Beschreibung: Mit Struts sollten alle Daten aus Form Beans geschrieben werden, wobei das Bean’s Filter-Attribut auf “true” gesetzt ist.

Maßnahme (Implementation)

Effektivität: Defense in Depth
Beschreibung: Um XSS-Angriffe gegen den Session-Cookie des Benutzers zu minimieren, sollte der Session-Cookie als HttpOnly gekennzeichnet werden. In Browsern, die die HttpOnly-Funktion unterstützen (wie neuere Versionen von Internet Explorer und Firefox), verhindert dieses Attribut, dass clientseitige, bösartige Skripte, die document.cookie verwenden, auf den Session-Cookie des Benutzers zugreifen können. Dies ist jedoch keine vollständige Lösung, da HttpOnly nicht von allen Browsern unterstützt wird. Noch wichtiger ist, dass XMLHTTPRequest und andere leistungsstarke Browser-Technologien Lesezugriff auf HTTP-Header ermöglichen, einschließlich des Set-Cookie-Headers, in dem das HttpOnly-Flag gesetzt wird.

Maßnahme (Architecture and Design)

Effektivität: Unknown
Beschreibung: Wenn der Satz akzeptabler Objekte, wie beispielsweise Dateinamen oder URLs, begrenzt oder bekannt ist, sollte eine Zuordnung von einem Satz fester Eingabewerte (z. B. numerische IDs) zu den tatsächlichen Dateinamen oder URLs erstellt und alle anderen Eingaben abgelehnt werden.

Maßnahme (Operation)

Effektivität: Moderate
Beschreibung: Der Einsatz einer Application Firewall, die Angriffe gegen diese Schwachstelle erkennen kann, ist empfehlenswert. Dies kann vorteilhaft sein, wenn der Code nicht behoben werden kann (weil er von einem Drittanbieter kontrolliert wird), als Sofortmaßnahme, während umfassendere Software Assurance Maßnahmen implementiert werden, oder zur Bereitstellung einer Defense in Depth. Notizen: Eine Application Firewall deckt möglicherweise nicht alle möglichen Input-Vektoren ab. Darüber hinaus existieren Angriffstechniken, die es ermöglichen, den Schutzmechanismus zu umgehen, beispielsweise durch die Verwendung von fehlerhaften Inputs, die dennoch von der empfangenden Komponente verarbeitet werden können. Je nach Funktionalität kann eine Application Firewall unbeabsichtigt legitime Requests ablehnen oder modifizieren. Schließlich kann ein gewisser manueller Aufwand für die Customization erforderlich sein.

Maßnahme (Operation)

Effektivität: Unknown
Beschreibung: Bei der Verwendung von PHP sollte die Anwendung so konfiguriert werden, dass register_globals nicht verwendet wird. Während der Implementierung ist die Anwendung so zu entwickeln, dass sie sich nicht auf diese Feature-Funktionalität stützt. Seien Sie jedoch vorsichtig bei der Implementierung einer register_globals-Emulation, die anfällig für Schwachstellen wie CWE-95, CWE-621 und ähnlichen Problemen sein kann.