G 4.84 Unzureichende Validierung von Ein- und Ausgabedaten bei Webanwendungen
Webanwendungen werden im Allgemeinen von generischen Clients (Web-Browsern) verwendet, sodass Benutzer beliebige Eingabedaten an den Server übermitteln können. Werden schadhafte Eingaben eines Angreifers von der Webanwendung verarbeitet, können möglicherweise Schutzmechanismen der Webanwendung umgangen werden.
Beispiele für Angriffe auf Webanwendungen, die auf einer unzureichenden Validierung von Eingabedaten beruhen, sind SQL-Injection (siehe G 5.131 SQL-Injection ), Path Traversal (siehe G 5.172 Umgehung der Autorisierung bei Webanwendungen ) und Remote File Inclusion. Diese Angriffe können Unbefugten Zugriff auf das Betriebssystem oder auf Hintergrundsysteme ermöglichen. Bei einem erfolgreichen Angriff können schützenswerte Daten unautorisiert ausgelesen oder manipuliert werden.
Nachdem die Webanwendung die Eingabedaten erfolgreich verarbeitet hat, werden üblicherweise wieder Daten ausgegeben. Die Ausgabedaten können entweder an den Browser des Benutzers ( z. B. Statusmeldungen oder ein neuer Eintrag im Gästebuch) übermittelt oder an nachgelagerte Systeme weitergereicht werden. Werden die Daten vor der Ausgabe nicht ausreichend validiert, könnten die Ausgaben Schadcode enthalten, der auf den Zielsystemen interpretiert oder ausgeführt wird.
Die folgenden Beispiele beschreiben mögliche Auswirkungen einer unzureichenden Validierung von Ein- und Ausgaben:
- Die Suchfunktion der Webanwendung verwendet die Eingaben der Benutzer ungefiltert zur Erzeugung von Datenbankabfragen. Dies kann ein Angreifer ausnutzen und eine Suchanfrage formulieren, die neben dem Suchbegriff zusätzliche Befehle für die Datenbank enthält. Durch das ungefilterte Einbetten der Suchanfrage in die Datenbankabfrage werden die Befehle von der Datenbank ausgeführt. So kann der Angreifer direkten Zugriff auf die Datenbank erhalten.
- Eine Webanwendung bietet eine Funktion zum Datei-Upload an und schränkt diese auf gewisse Dateitypen ein. Zur Bestimmung des Dateityps überprüft die Webanwendung ausschließlich die Dateiendung und berücksichtigt dabei nicht den Inhalt der Datei. Wird eine erlaubte Dateiendung für den Upload verwendet, können so Dateien mit beliebigem Inhalt zum Server übermittelt werden.
- Werden Eingabedaten durch die Filterkomponente automatisiert geändert und angepasst (Sanitizing), können die Daten durch gezielte Eingaben eines Angreifers von der Filterkomponente in einen Angriffsvektor überführt werden.
- Ein- und Ausgabedaten können in verschiedenen Kodierungen (z. B. UTF-8, ISO 8859-1) und Notationen (z. B. bei UTF-8 ist "." = "2E" = "C0 AE") vorliegen. Abhängig vom angewandten Kodierungsschema kann der gleiche Wert unterschiedlich interpretiert werden. Interpretiert die Filterkomponente die Daten anders als die verarbeitenden Komponenten der Webanwendung, so kann ein Angreifer schadhafte Daten (z. B. SQL -Anweisungen) derart kodieren, dass sie bei der Filterung nicht erkannt werden. Somit werden die vom Angreifer schadhaften Daten an die verarbeitenden Komponenten weitergereicht und aufgrund der unterschiedlichen Interpretation ausgeführt.
- Die Kommentar-Funktion einer Webanwendung erlaubt eine Formatierung der Texte durch HTML. Die Eingaben werden z. B. nicht auf spezielle HTML -Tags eingeschränkt, sodass ein Angreifer über diese Funktion beliebigen HTML-Code auf der Webanwendung platzieren kann. Dies kann ein Angreifer dazu nutzen, um Elemente der Webseite zu manipulieren oder zu überlagern und Benutzereingaben abzufangen (siehe G 5.175 Clickjacking ).