Bundesamt für Sicherheit in der Informationstechnik

M 4.399 Kontrolliertes Einbinden von Daten und Inhalten bei Webanwendungen

Verantwortlich für Initiierung: IT-Sicherheitsbeauftragter, Leiter IT

Verantwortlich für Umsetzung: Entwickler, Administrator

Eine Webanwendung erstellt zur Laufzeit Webseiten, deren Inhalte sich aus unterschiedlichen Quellen zusammensetzen können. Diese Inhalte werden z. B. in Form von Dateien dynamisch bei der Erstellung der Webseite eingebunden oder von der Webanwendung generiert. Da dem Benutzer die fertige Webseite ausgeliefert wird, ist für ihn häufig nicht ersichtlich, aus welcher Quelle die angezeigten Inhalte stammen. Daher muss die Webanwendung sicherstellen, dass ausschließlich vorgesehene Daten und Inhalte eingebunden und an den Benutzer ausgeliefert werden.

Die Inhalte können mittels unterschiedlicher Techniken eingebunden werden. Daher werden in den folgenden Abschnitten Hinweise zur sicheren Verwendung üblicher Techniken zusammengefasst.

Einbinden von Dateien (File Inclusion)

Häufig werden bei der Generierung von Webseiten durch die Webanwendung Teile der ausgelieferten Internet-Seite aus unterschiedlichen Dateien dynamisch eingebunden (z. B. eine Navigationsleiste). Hierdurch verringert sich der Wartungsaufwand bei Änderungen an der Webseite (z. B. ein neuer Navigations-Eintrag). Dabei sollten der Inhalt und der Pfad der einzubindenden Dateien ausschließlich vom Administrator oder von privilegierten Benutzern der Webanwendung geändert werden können. Gewöhnlichen Benutzern sollte es dagegen nicht möglich sein, die Dateien zur Einbindung frei zu wählen oder zu modifizieren (z. B. über veränderte Parameter). Aus diesem Grund sollte die Verarbeitung von Benutzer-Eingaben zur Einbindung von Dateien grundsätzlich vermieden werden.

Erfordert die Webanwendung Benutzer-Eingaben als Quelle zur Einbindung von Dateien, sollten die vorgesehenen Pfadangaben zu den Quell-Dateien nicht frei wählbar sein. Benutzer sollten nicht in der Lage sein, den gesamten Pfad vorzugeben, sondern stattdessen sollten Benutzer-Eingaben in vordefinierte Pfadangaben gekapselt werden.

Angriffe, wie Path Traversal, versuchen durch relative Bezüge den Pfad auf schützenswerte Dateien umzusetzen (z. B. /../../../etc/passwd) und so aus den vorgegebenen Pfadangaben auszubrechen. Zur Verhinderung derartiger Angriffe sollten daher die Benutzereingaben auf unerwünschte Zeichen zur Manipulation des Pfades (z. B. "/.." und "\..") gefiltert werden (siehe auch M 4.393 Umfassende Ein- und Ausgabevalidierung bei Webanwendungen und Web-Services ).

Bei der Auswahl der Quell-Dateien können Indizes anstelle von Dateinamen verwendet werden, denen serverseitig hinterlegte Dateinamen zugeordnet werden. Somit hat ein Angreifer keinen direkten Einfluss auf den Dateinamen und kann durch Manipulation des Index keine beliebigen Inhalte direkt einbinden.

Webanwendungen können, neben Dateien auf dem Serversystem, auch entfernt gespeicherte Ressourcen über die Netzwerkverbindung mittels URL einbinden (Remote File Inclusion). Nach Möglichkeit sollte das Einbinden entfernter Inhalte komplett unterbunden werden. Kann auf die Einbindung externer Inhalte nicht verzichtet werden, so muss die vertrauenswürdige Herkunft dieser Dateien unbedingt sichergestellt werden (z. B. auf Basis einer Whitelist mit der Limitierung auf einen Server oder eine Auflistung von absoluten URLs).

Verwendung von Datei-Uploads

Bei vielen Webanwendungen kann der Benutzer Inhalte mittels einer Upload-Funktion übermitteln. Ein typischer Anwendungsfall ist der Upload eines Profilfotos. Die hochgeladenen Daten sind auf die benötigten Dateiformate zu beschränken (z. B. sollten für das Profilfoto ausschließlich Bilddateien zugelassen werden). Hierbei sollte neben der Prüfung der Dateiendung ebenfalls der Inhalt der Datei, z. B. durch eine Auswertung des Dateiheaders, geprüft werden.

Hochgeladene Dateien sollten nach Möglichkeit in einem Verzeichnis gespeichert werden, welches nicht über die Web-Schnittstelle erreichbar ist (z. B. außerhalb des Wurzelverzeichnisses des Webservers). So wird verhindert, dass ein Benutzer auf seine hochgeladenen Dateien direkt zugreifen kann (z. B. auf schadhafte Skripte). Werden die hochgeladenen Dateien zunächst in einem temporären Verzeichnis gespeichert, so ist sicherzustellen, dass andere Benutzer nicht unerlaubt auf die Datei zugreifen dürfen.

Stellt eine Webanwendung dem Benutzer eine Upload-Funktion von Dateien zur Verfügung, so sind folgende Punkte zu beachten:

  • Die Funktionalität sollte möglichst nur angemeldeten Benutzern zur Verfügung stehen.
  • Hochgeladene Dateien dürfen nicht im Wurzelverzeichnis des Webserver-Dienstes gespeichert werden. Es sollten entweder feste Verzeichnisstrukturen vorgegeben werden, in denen Ordner und Dateien angelegt werden können oder die Speicherung in einem anderen Kontext (wie z. B. in einer Datenbank oder einem fest vorgegebenen Pfad) erfolgen. Ein Angreifer sollte nicht aus dem vorgegebenen Kontext ausbrechen können.
  • Der vorgegebene Pfad zur Speicherung der hochgeladenen Dateien darf nicht von den Benutzern geändert werden können.
  • Zum Schutz vor Denial-of-Service-Angriffen sollte die Dateigröße begrenzt werden.
  • Die Berechtigungen hochgeladener Dateien sollten restriktiv gesetzt sein, um einen unberechtigten Zugriff zu verhindern. Auf diese Weise soll unterbunden werden, dass hochgeladene Dateien eines Angreifers ausgeführt werden.
  • Ein Virenschutzprogramm sollte die hochgeladenen Dateien auf Schadsoftware untersuchen.
  • Die Wahl des Dateinamens sollte wie folgt eingeschränkt werden:
  • Der Dateiname mit der Dateiendung sollte auf eine feste Anzahl von Zeichen begrenzt werden (z. B. 200 Zeichen).
  • Alle nicht sichtbaren Zeichen (z. B. Steuerzeichen) und alle kodierten Varianten dieser Zeichen sollten vom Dateinamen entfernt werden (z. B. Unicode).
  • Alle Zeichen mit einer spezifischen Bedeutung für Interpreter sollten entfernt werden (z. B. ; : > < / \ . * % $).
  • Falls möglich sollten ausschließlich alphanumerische Zeichen und der Punkt für die Dateiendung erlaubt sein.

Einbinden von Inhalten aus übergebenen Parametern

Webanwendungen nehmen häufig Eingaben in Form von Parametern (z. B. aus Formularen) entgegen, verarbeiten diese und stellen sie erneut in der Rückantwort dar (z. B. der Suchbegriff bei einer Websuche). Ein Angreifer kann dies ausnutzen, um über ausgewählte Eingaben die Darstellung der Webseite zu manipulieren. Daher müssen alle von der Webanwendung zur Darstellung von Webseiten verwendeten Parameter gemäß M 4.393 Umfassende Ein- und Ausgabevalidierung bei Webanwendungen und Web-Services validiert werden.

Sicheres Weiterleiten von Requests (Redirect)

Die Weiterleitungsfunktion einer Webanwendung sollte nicht beliebige Webseiten als Weiterleitungsziel zulassen, sodass Benutzer ausschließlich auf vertrauenswürdige, vorgesehene Webseiten weitergeleitet werden. So sollte vermieden werden, dass Benutzer beispielsweise über einen präparierten Link auf die Weiterleitungsfunktion der Webanwendung auf eine Phishing-Seite geführt werden.

Die folgenden Punkte geben Hinweise zu Einschränkungsmöglichkeiten von Weiterleitungszielen.

  • Beschränkung auf lokale Seiten
    Wenn keine Weiterleitung auf externe Webseiten erfolgen muss, kann das Weiterleitungsziel auf externe Adressen geprüft und nur lokale Seiten zugelassen werden. Hierbei sollten ausschließlich relative Pfadangaben auf Ziele innerhalb der Webanwendung als Eingabe zugelassen und der notwendige Host-Teil nachträglich statisch hinzugefügt werden.
  • Vordefinierte Weiterleitungsziele
    Ist eine Weiterleitung ausschließlich auf bekannte, statische Ziele vorgesehen, sollten diese serverseitig in einer vordefinierten Liste mit Indizes hinterlegt werden. Den Zielen werden somit statische Index-Werte zugeordnet. Anstelle der Zieladresse übergibt der Client einen Index-Wert (z. B. aus einer Auswahlliste eines Formulars), der serverseitig einer Zieladresse aus der Liste zugeordnet wird.
  • Manuelle Bestätigung
    Der Benutzer muss vor der Weiterleitung die Zieladresse und somit die Vertrauenswürdigkeit des Weiterleitungsziels prüfen und bestätigen (z. B. über eine eingeblendete Weiterleitungsseite). Hiermit wird der Benutzer vor dem Verlassen der Webanwendung und damit des Sicherheitskontextes gewarnt.
  • Referrer-Test
    Das Refferer-Feld des HTTP -Requests kann von der Weiterleitungsfunktion als zusätzliches Merkmal für die bestimmungsgemäße Nutzung geprüft werden. Eine Weiterleitung sollte nur dann erfolgen, wenn das Referrer-Feld die Adresse zu einer Webseite der Webanwendung mit einem Verweis auf das Weiterleitungsziel enthält.

Einbindung von Inhalten Dritter

Von Partnern eingebundene Daten und Inhalte (z. B. Werbeeinblendungen) sollten grundsätzlich als weniger vertrauenswürdig eingestuft werden. Es wird daher eine starke Kontrolle dieser Inhalte empfohlen, da die Gefahr besteht, dass Schadcode oder nicht vertrauenswürdige Inhalte eingebettet werden.

Prüffragen:

  • Wird durch die Webanwendung eine Manipulation einzubindender Ressourcen verhindert (z. B. File Inclusion und Remote File Inclusion)?

  • Wird das Hochladen von Dateien über eine mögliche Upload-Funktion der Webanwendung eingeschränkt (z. B. auf notwendige Dateitypen) und werden die Zugriffs- und Ausführrechte restriktiv gesetzt?

  • Wird ein Ausbruch aus dem vorgegebenen Pfad zur Speicherung von Dateien unterbunden (z. B. durch Path Traversal)?

  • Werden die Ziele der Weiterleitungsfunktionen einer Webanwendung ausreichend eingeschränkt (z. B. nur lokale Seiten) und der Benutzer beim Verlassen der Vertrauensdomäne informiert?

Stand: 13. EL Stand 2013

Hinweis zur Verwendung von Cookies

Um unsere Webseite für Sie optimal zu gestalten und fortlaufend verbessern zu können, verwenden wir Cookies. Durch die weitere Nutzung der Webseite stimmen Sie der Verwendung von Cookies zu. Weitere Informationen hierzu erhalten Sie in unserer Datenschutzerklärung.

OK