M 4.395 Fehlerbehandlung durch Webanwendungen
Verantwortlich für Initiierung: IT-Sicherheitsbeauftragter, Leiter IT
Verantwortlich für Umsetzung: Entwickler, Administrator
Tritt während des Betriebs einer Webanwendung ein Fehler auf, sollte dieser so behandelt werden, dass ein konsistenter Zustand der Webanwendung gewährleistet ist und somit etwa der Schutz der Daten aufrechterhalten wird.
Eine Webanwendung ist in einem inkonsistenten Zustand, wenn sie aufgrund eines Fehlers in einen unerwarteten Zustand überführt wird und dadurch Daten unkontrolliert verarbeitet werden ( z. B. keine Fehlermeldung bei erfolgloser Speicherung von Daten).
Der konsistente Zustand einer Webanwendung kann u. a. durch folgende Ereignisse gefährdet werden:
- Absturz der Anwendung
- unvollständig durchgeführte Transaktionen auf Anwendungsebene
- Durchführung einer Aktion trotz Fehler (z. B. bei unvollständigen Prüfungen durch Sicherheitskomponenten)
- Verhinderung von Diensten (Denial-of-Service)
- Rechteausweitung (privilege escalation)
- Ausführen von Schadcode (code execution)
Folgende Punkte sollten bei der Fehlerbehandlung berücksichtigt werden.
Vermeidung vertraulicher Informationen in Fehlermeldungen
Die Webanwendung muss dem Benutzer im Falle es Fehlers neutrale, angepasste Fehlerseiten ausgeben, die keine vertraulichen Informationen beinhalten (siehe auch M 4.400 Restriktive Herausgabe sicherheitsrelevanter Informationen bei Webanwendungen ).
Protokollierung der Fehler
Für eine vollständige Nachvollziehbarkeit aufgetretener Fehler müssen diese als Ereignis gemäß M 4.397 Protokollierung sicherheitsrelevanter Ereignisse von Web-Anwendungen protokolliert werden.
Abbruch des Vorgangs nach Auftreten eines Fehlers
Treten Fehler im Zusammenhang mit Sicherheitskomponenten der Webanwendung auf (z. B. während der Autorisierung oder Authentisierung), muss die veranlasste Aktion abgebrochen und der Zugriff auf die angeforderte Ressource oder Funktion abgewiesen werden. Es muss gewährleistet sein, dass durch provozierte Fehler keine Sicherheitsmechanismen umgangen werden können.
Für Webanwendungen mit einem hohen Schutzbedarf sollte zusätzlich die Invalidierung einer gegebenenfalls bestehenden Sitzung in Betracht gezogen werden (siehe auch M 4.394 Session-Management bei Webanwendungen ).
Freigabe von reservierten Ressourcen
Im laufenden Betrieb belegt eine Webanwendung Ressourcen wie z. B. Netz- oder Datei-Streams, um auf Hintergrundsysteme, zwischengespeicherte Zustände oder sonstige Daten zuzugreifen. Solange die Webanwendung auf diese Ressourcen zugreift, sind diese in der Regel für deren exklusiven Zugriff reserviert und können von anderen Prozessen nicht verwendet werden.
Tritt ein Fehler auf, sollten zuvor reservierte Ressourcen (z. B. ein Datei-Handle auf eine temporäre Datei) im Rahmen der Fehlerbehandlung freigegeben werden. Darüber hinaus sind zwischengespeicherte Daten bei der Fehlerbehandlung zu löschen.
Unmittelbare Behandlung von Fehlern
Fehler in der Webanwendung sollten von der Webanwendung selbst behandelt werden. Die Weiterleitung eines unbehandelten Fehlers an andere Komponenten (z. B. Applikationsserver) kann zu einem Verlust von Informationen führen, die zur Behandlung des Fehlers notwendig sind (z. B. zur Freigabe von gebundenen Ressourcen). Daher sollten unbehandelte Fehler nicht weitergeleitet werden.
Vermeidung einer zu hohen Fehlertoleranz
Sind Ursachen von Fehlerzuständen nicht vollständig geklärt, sollte der Fehler nicht z. B. aufgrund der Bedienungsfreundlichkeit toleriert, sondern die Aktion im Zweifelsfall abgebrochen werden. Schwerwiegende Fehler sollten immer zum Abbruch der Aktion führen.
Das Ziel ist eine robuste und fehlertolerante Webanwendung, die bestimmungsgemäße Bedienung durch den Anwender von offensichtlichen Missbrauchsversuchen und schwerwiegenden Fehlern unterscheiden und dann angemessen reagieren kann.
Prüffragen:
- Werden von der Webanwendung ausschließlich Fehlermeldungen ausgegeben, die keine vertraulichen Informationen beinhalten?
- Ist eine Protokollierung von Fehlern vorgesehen?
- Wird eine veranlasste Aktion im Fehlerfall abgebrochen und in der Folge der Zugriff auf die angeforderte Ressource oder Funktion abgewiesen?
- Sieht die Fehlerbehandlung eine Freigabe gebundener Ressourcen vor?
- Werden Fehler möglichst von der gleichen Komponente behandelt, in der der Fehler aufgetreten ist?