Bundesamt für Sicherheit in der Informationstechnik

M 4.395 Fehlerbehandlung durch Webanwendungen und Web-Services

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

Verantwortlich für Umsetzung: Administrator, Entwickler

Tritt während des Betriebs einer Webanwendung oder eines Web-Services 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 oder ein Web-Service ist in einem inkonsistenten Zustand, wenn sie aufgrund eines Fehlers in einen unerwarteten Zustand überführt wird und dadurch Daten unkontrolliert verarbeitet werden (zum Beispiel keine Fehlermeldung bei erfolgloser Speicherung von Daten).

Der konsistente Zustand einer Webanwendung oder eines Web-Service kann unter anderem durch folgende Ereignisse gefährdet werden:

  • Absturz der Anwendung
  • unvollständig durchgeführte Transaktionen auf Anwendungsebene
  • Durchführung einer Aktion trotz Fehler (zum Beispiel 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 eines Fehlers neutrale, angepasste Fehlerseiten ausgeben, die keine vertraulichen Informationen beinhalten. Auch die Rückmeldungen von Web-Services sollten im Fehlerfall keine vertraulichen Informationen, wie etwa interne Pfade oder die Versionsnummern von verwendeten Softwarekomponenten, enthalten. Siehe hierzu auch M 4.400 Restriktive Herausgabe sicherheitsrelevanter Informationen bei Webanwendungen und Web-Services .

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 und Web-Services protokolliert werden.

Abbruch des Vorgangs nach Auftreten eines Fehlers

Treten Fehler im Zusammenhang mit Sicherheitskomponenten der Webanwendung oder des Web-Service auf (zum Beispiel 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 oder Web-Services 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 und Web-Services ).

Freigabe von reservierten Ressourcen

Im laufenden Betrieb belegen Webanwendungen und Web-Services Ressourcen wie zum Beispiel Netz- oder Datei-Streams, um auf Hintergrundsysteme, zwischengespeicherte Zustände oder sonstige Daten zuzugreifen. Solange die Webanwendung oder der Web-Service 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 (zum Beispiel 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

Interne Fehler sollten von der Webanwendung oder dem Web-Service selbst behandelt werden. Die Weiterleitung eines unbehandelten Fehlers an andere Komponenten (zum Beispiel Applikationsserver oder nachgelagerte Web-Services) kann zu einem Verlust von Informationen führen, die zur Behandlung des Fehlers notwendig sind (zum Beispiel 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 zum Beispiel aufgrund der Bedienungsfreundlichkeit toleriert, sondern die Aktion im Zweifelsfall abgebrochen werden. Schwerwiegende Fehler sollten immer zum Abbruch der Aktion führen.

Das Ziel sind robuste und fehlertolerante Webanwendungen und Web-Services, die bestimmungsgemäße Bedienung durch den Anwender von offensichtlichen Missbrauchsversuchen und schwerwiegenden Fehlern unterscheiden und dann angemessen reagieren können.

Prüffragen:

  • Werden von der Webanwendung oder dem Web-Service 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?

Stand: 14. EL Stand 2014