Bundesamt für Sicherheit in der Informationstechnik

M 4.402 Zugriffskontrolle bei Webanwendungen

Verantwortlich für Initiierung: Verantwortliche der einzelnen Anwendungen, Leiter Fachabteilung

Verantwortlich für Umsetzung: Entwickler, Administrator

Die Autorisierungskomponente einer Webanwendung muss sicherstellen, dass Benutzer nur solche Aktionen durchführen können, für die sie über ausreichende Berechtigungen verfügen. Die Zuweisung von Rechten kann dabei auf der Grundlage von Benutzer-Rollen erfolgen.

Die Autorisierungskomponente sollte alle verwalteten Ressourcen einer Webanwendung berücksichtigen. Dazu zählen z. B.

  • URL s,
  • Dateien,
  • Objektreferenzen,
  • Geschäftsfunktionen,
  • Anwendungsdaten,
  • Konfigurationsdaten und
  • Protokolldaten.

Eine Zugriffskontrolle ist möglichst auf allen Ebenen einer Webanwendung (z. B. durch die Webanwendung, den Applikationsserver, den Webserver und das Betriebssystem) umzusetzen. Demzufolge sollten neben einem Zugriffsschutz auf Webanwendungs-Ebene die Maßnahmen M 4.94 Schutz der Webserver-Dateien als auch M 5.168 Sichere Anbindung von Hintergrundsystemen an Webanwendungen und Web-Services für den Zugriffsschutz von Daten auf dem Webserver und in Hintergrundsystemen berücksichtigt werden.

Folgende Punkte sollten für eine sichere Zugriffskontrolle auf Webanwendungs-Ebene berücksichtigt werden:

Generelle Aspekte

Berechtigungen sollten restriktiv und nach dem Minimalprinzip vergeben werden. Die Benutzer der Webanwendung sollten daher nur über solche Rechte verfügen, die sie zur Bewältigung ihrer Aufgaben unbedingt benötigen.

Jeder Zugriff auf geschützte Inhalte und Funktionen sollte kontrolliert werden, bevor er ausgeführt wird. Dies gilt auch dann, wenn beispielsweise der gleiche Benutzer auf eine geschützte Ressource wiederholt zugreift. Auch automatisierte Client-Requests durch Web-Technologien (z. B. Ajax) sollten als unabhängige Requests behandelt und entsprechend kontrolliert werden.

Anforderungen an die Autorisierungskomponente

Die Nutzung von Webanwendungen erfolgt gewöhnlich über einen generischen Client, der nicht unter der Kontrolle der Webanwendung steht. Damit kann ein Angreifer die Anfrage grundsätzlich beliebig manipulieren und clientseitig umgesetzte Sicherheitsmechanismen umgehen. Aus diesem Grund muss die Autorisierung serverseitig auf einem vertrauenswürdigen IT -System umgesetzt werden.

Die Routinen zur Autorisierung sollten zentral an einer Stelle und nicht verteilt im Programmcode der Webanwendung umgesetzt werden. Auf diese Weise wird der Code der Autorisierungskomponente von der Geschäftslogik der Webanwendung getrennt und eine redundante und fehleranfällige Umsetzung vermieden. Bei der Entwicklung der Autorisierungskomponente sollte nach Möglichkeit auf Funktionen aus bereits existierenden Frameworks zurückgegriffen werden.

Kommt es zu Fehlern während der Zugriffskontrolle (z. B. weil unzureichende Informationen für die Autorisierung verwendet werden), müssen Zugriffe abgelehnt werden. Im Fehlerfall dürfen keine angeforderten Ressourcen übermittelt oder Funktionen unkontrolliert ausgeführt werden.

Kontrolle aller beteiligten Ressourcen an einer Aktion

Es darf einem Benutzer nicht möglich sein, eine Aktion auf eine Ressource durchzuführen, für die er keine ausreichenden Rechte hat. Falls z. B. ein authentisierter Benutzer einen URL-Parameter für die Zuordnung zu einem Bankkonto ändert, darf dieser dadurch keinen Zugriff auf ein fremdes Bankkonto erlangen. Werden die Rechte zur Durchführung einer Aktion geprüft, sollten daher ebenso alle an der Aktion beteiligten Ressourcen bei der Prüfung mit eingeschlossen werden.

Dies betrifft ebenfalls die Umsetzung und Konfiguration der Suchfunktion einer Webanwendung. Es sollte darauf geachtet werden, dass zugriffsgeschützte Ressourcen einem unbefugten Benutzer nicht als Suchergebnis präsentiert werden. Vor der Ausgabe der Suchergebnisse sollte daher beispielsweise geprüft werden, ob der Benutzer über ausreichende Rechte verfügt, um diese zu betrachten.

Zugriffskontrolle bei URL-Aufrufen und Objekt-Referenzen

Webseiten und andere Ressourcen der Webanwendung werden gewöhnlich über die URL identifiziert und abgerufen. Dabei ruft ein Benutzer Webseiten oder Funktionen der Webanwendung in der Regel über die angezeigten Verlinkungen auf einer bereits dargestellten Webseite der Anwendung auf.

Wenn Ressourcen der Webanwendung geschützt werden sollen, ist es nicht ausreichend, den Link auf die Ressource aus den angezeigten Webseiten zu entfernen (z. B. ein Link auf die Administrationsseite), sondern es muss auch der direkte Aufruf der Ressource über die URL geschützt werden.

Die Seiten von Webanwendungen werden häufig dynamisch anhand von Referenzen auf Objekte (z. B. die ID eines Datenbankeintrags) erstellt. Werden diese Referenzen durch die Benutzer der Webanwendung übergeben (z. B. als Parameter in der URL), kann der Parameter und somit die Referenz von einem Benutzer beliebig geändert werden.

Da es sich hierbei nicht um direkte Referenzen (z. B. auf Dateien), sondern um indirekte Referenzen (Verweise auf Objekte) handelt, sollte eine Zugriffskontrolle anhand der Referenzwerte (z. B. IDs) erfolgen. Des Weiteren sollte nach Möglichkeit eine zusätzliche Zugriffskontrolle für die angeforderten Objekte in den Hintergrundsystemen durchgeführt werden. Dies kann beispielsweise durch das Durchreichen der Benutzerauthentisierung an die Hintergrundsysteme realisiert werden (siehe auch M 5.168 Sichere Anbindung von Hintergrundsystemen an Webanwendungen und Web-Services ).

Restriktive Dateisystemberechtigungen bei der Upload-Funktion

Grundsätzlich sollte der Zugriff auf Dateien durch die Benutzer der Webanwendung durch restriktive Dateisystemberechtigungen beschränkt werden (siehe M 4.398 Sichere Konfiguration von Webanwendungen ).

Stellt die Webanwendung eine Funktionalität zum Hochladen von Dateien bereit, sollte nach dem erfolgten Hochladevorgang ausschließlich der Besitzer die Dateisystemberechtigung für den Zugriff auf die erstellten Dateien haben. In einem weiteren Schritt kann der Zugriff auf die Dateien explizit für andere Benutzer freigegeben werden. Generell ist darauf zu achten, dass hochgeladenen Dateien die Rechte für das Ausführen entzogen werden, sodass ein Angreifer hierüber keinen Schadcode zur Ausführung bringen kann (siehe auch M 4.399 Kontrolliertes Einbinden von Daten und Inhalten bei Webanwendungen ).

Schutz temporärer Dateien

Bei dynamisch erstellten Webseiten werden häufig temporäre Daten (z. B. Auswertungsgrafiken, Berichte) erzeugt. Handelt es sich dabei um schützenswerte Daten, so sollten diese nach Möglichkeit nicht im Dateisystem zwischengespeichert werden. Stattdessen sollten die Daten direkt an den Benutzer ausgeliefert werden. Falls eine Speicherung zu schützender Daten in temporären Dateien notwendig ist, sollten folgende Punkte berücksichtigt werden:

  • Die Zugriffsberechtigungen im Dateisystem sind restriktiv zu setzen, sodass der Zugriff nur befugten Benutzern und Diensten möglich ist.
  • Dateinamen sollten sich aus Zufallswerten zusammensetzen (z. B. einem Globally Unique Identifier (GUID)), sodass sie nicht leicht erraten werden können.
  • Sobald die Daten nicht mehr benötigt werden, sollten sie zeitnah gelöscht werden.
  • Es wird empfohlen, die Dateien in einem Verzeichnis zu speichern, welches nicht über den Webserver erreichbar ist (z. B. außerhalb des Wurzelverzeichnisses des Webservers).
  • Der Zugriff auf die Dateien sollte ausschließlich über solche Schnittstellen der Webanwendung möglich sein, die ausreichende Sicherheitsmechanismen bei der Zugriffskontrolle und Protokollierung umsetzen.

Prüffragen:

  • Findet eine Zugriffskontrolle bei der Webanwendung auf der Grundlage von Benutzerrollen und -rechte statt?

  • Werden alle von der Webanwendung verwalteten Ressourcen von der Autorisierungskomponente berücksichtigt?

  • Erfolgt die Autorisierung bei der Webanwendung serverseitig und zentral auf einem vertrauenswürdigen IT-System?

  • Führen Fehler während der Zugriffskontrolle bei der Webanwendung zur Ablehnung des Zugriffs?

  • Werden Zugriffsberechtigungen für direkte URL-Aufrufe und Objekt-Referenzen von der Autorisierungskomponente der Webanwendung berücksichtigt?

  • Werden Dateisystemberechtigungen bei der Webanwendung (insbesondere beim Hochladen von Dateien) restriktiv vergeben?

  • Ist ein sicherer Umgang mit temporären Dateien von der Webanwendung vorgesehen (z. B. restriktive Vergabe von Berechtigungen und zeitnahes Löschen nicht mehr benötigter Dateien)?

Stand: 13. EL Stand 2013