Übersicht über Sicherheitsrisiken bei Webanwendungen

Aktualisiert: November 2007

Wenn unbekannte Benutzer auf die Webanwendung zugreifen können, besteht eine sehr hohe Wahrscheinlichkeit, dass böswillige Benutzer versuchen werden, unbefugten Zugriff auf die Anwendung zu erlangen. Bei Servern, die über das Internet öffentlich zugänglich sind, wird meist täglich versucht, Sicherheitsmängel aufzuspüren. Deshalb wird empfohlen, Vorkehrungen zu treffen und in allen Webanwendungen Sicherheitsmaßnahmen zu integrieren.

Ausführlichere Informationen über bewährte Vorgehensweisen für das Schreiben von sicherem Code und zur Sicherung von Anwendungen finden Sie in dem Buch "Writing Secure Code" von Michael Howard und David LeBlanc. Auch Microsoft Patterns and Practices stellt auf diesem Gebiet eine verlässliche Informationsquelle dar.

Sicherheitstechnologien sind nur ein Teil der Lösung

Die Implementierung von Sicherheitsvorkehrungen ist nur ein Teil der Lösung. Wachsamkeit spielt ebenfalls eine wichtige Rolle. Auch wenn Ihr System mit zahlreichen Sicherheitsvorkehrungen versehen ist, sollten Sie es fortwährend überwachen. Beachten Sie dazu die nachstehenden Erläuterungen:

  • Überwachen Sie die Ereignisprotokolle Ihres Systems. Achten Sie auf wiederholte Anmeldeversuche an Ihrem System sowie auf außergewöhnlich zahlreiche Anforderungen an Ihren Webserver.

  • Halten Sie den Anwendungsserver ständig auf dem aktuellen Stand der Sicherheitsaktualisierungen für Microsoft Windows und Internetinformationsdienste (IIS) sowie aller Aktualisierungen für Microsoft SQL Server oder andere Datenquellen, die von der Anwendung möglicherweise verwendet werden.

Erstellen von Bedrohungsmodellen

Bei der Entwicklung sichererer Anwendungen sollten Sie sich vergegenwärtigen, welchen Bedrohungen diese ausgesetzt sein könnten. Microsoft hat eine Kategorisierungsmöglichkeit für Bedrohungen entwickelt: Spoofing (Vortäuschen), Tampering (Verfälschen), Repudiation (Nichtanerkennung), Information disclosure (Offenlegung vertraulicher Informationen), Denial of service (Dienstverweigerung), Elevation of privilege (Ausweitung von Berechtigungen), zusammen als STRIDE bezeichnet. Die nachstehenden Abschnitte enthalten kurze Beschreibungen dieser Bedrohungen und erläutern, wie sie sich auf Webanwendungen auswirken.

Spoofing

Als Spoofing oder Vortäuschen wird die unbefugte Verwendung der Identität von Benutzern oder Prozessen bezeichnet. Das einfachste Beispiel für Spoofing ist die unbefugte Verwendung der Anmeldeinformationen von anderen Benutzern. Böswillige Benutzer können auch den Inhalt von Cookies verändern, um eine andere Identität vorzutäuschen oder den Anschein zu erwecken, die Cookies würden von einem anderen Server stammen.

Im Allgemeinen können Sie Spoofing durch Verwenden von stringenten Authentifizierungsverfahren vermeiden. Stellen Sie sicher, dass Benutzer bei jeder Anforderung von vertraulichen Informationen ihre Identität offen legen müssen. Sie können sich gegen Spoofing auch absichern, indem Sie Anmeldeinformationen an einem sicheren Ort aufbewahren. Speichern Sie beispielsweise keine Kennwörter oder andere vertrauliche Informationen in Cookies, da sie dort von böswilligen Benutzern einfach gefunden und verändert werden können.

Verfälschungen

Als Tampering oder Verfälschen wird das unbefugte Verändern oder Löschen von Ressourcen bezeichnet. Dazu zählt beispielsweise die Manipulation einer Webseite durch einen Benutzer, der auf die Seite zugreift und Dateien ändert. Eine indirekte Art der Verfälschung ist die Verwendung von so genannten Skriptangriffen. Böswillige Benutzer bewirken die Ausführung von Code (Skripts), der als Benutzereingabe auf einer Seite oder als Link getarnt wird.

Die primäre Verteidigung gegen Verfälschungen erfolgt über die Windows-Sicherheit. Sie können damit Dateien, Verzeichnisse und weitere Windows-Ressourcen sperren. Die Anwendung sollte zudem mit minimalen Berechtigungen ausgeführt werden. Gegen Skriptangriffe können Sie sich wappnen, indem Sie Informationen grundsätzlich misstrauen, die von Benutzern oder auch Datenbanken stammen. Wenn Sie Informationen aus einer nicht vertrauenswürdigen Quelle erhalten, sollten Sie sich stets vergewissern, dass diese keinen ausführbaren Code enthalten.

Leugnung

Ein Risiko durch Repudiation oder Nichtanerkennung entsteht beim Ausführen einer Transaktion in einer Weise, bei der kein Nachweis der Hauptbeteiligten an der Transaktion möglich ist. Bei Webanwendungen bedeutet dies beispielsweise, unbefugterweise die Anmeldeinformationen eines unverdächtigen Benutzers zu verwenden. Gegen Bedrohungen durch Nichtanerkennung können Sie sich durch Verwendung von stringenten Authentifizierungsverfahren schützen. Verwenden Sie zusätzlich die Anmeldefunktionen von Windows, um alle Aktivitäten auf dem Server aufzuzeichnen.

Offenlegung vertraulicher Informationen

Als Information disclosure oder Offenlegung vertraulicher Informationen wird das Entwenden oder Abrufen von Informationen bezeichnet, die als vertraulich angesehen werden. Der Begriff umfasst beispielsweise den Diebstahl von Kennwörtern, kann jedoch auch den Zugriff auf beliebige vertrauliche Dateien oder Ressourcen auf dem Server bezeichnen.

Am besten schützen Sie sich gegen diese Bedrohung, indem Sie auf Ihrem System keine vertraulichen Daten speichern. Wenn Sie Ihre Kennwörter beispielsweise nicht speichern, können böswillige Benutzer auch nicht darauf zugreifen. Als Alternative können Sie auch lediglich den Hash von Kennwörtern speichern. Wenn Benutzer ihre Anmeldeinformationen eingeben, können Sie das Kennwort des Benutzers hashen und anschließend die beiden Hashs abgleichen. Wenn Sie vertrauliche Daten speichern, können Sie diese mithilfe der Windows-Sicherheit sichern. Wie in allen anderen Fällen sollten Sie Authentifizierungsverfahren verwenden, um sicherzustellen, dass nur berechtigte Benutzer auf geschützte Informationen zugreifen können. Wenn Sie vertrauliche Informationen verfügbar machen müssen, wird empfohlen, die gespeicherten Informationen zu verschlüsseln und zum Verschlüsseln der Informationen beim Senden vom und an den Browser Secure Sockets Layer (SSL) zu verwenden.

Denial-of-Service-Angriffe

Als Denial-of-Service-Angriff wird ein Vorgang bezeichnet, mit dem die Verfügbarkeit einer Anwendung böswillig herabgesetzt wird. Typisches Beispiel dafür ist die Überlastung von Webanwendungen, sodass Benutzeraktionen nicht mehr ordnungsgemäß verarbeitet werden können. Böswillige Benutzer können auch einfach versuchen, Ihren Server zum Abstürzen zu bringen.

Mit IIS können Sie Anwendungen beschränken, sodass diese nur eine beschränkte Anzahl von Anforderungen verarbeiten. Sie können Benutzern oder IP-Adressen, die Ihnen als böswillig bekannt sind, den Zugriff auf Ihre Anwendung verweigern. Ob die Anwendungen verfügbar bleiben, hängt davon ab, wie robust der ausgeführte Code ist. Testen Sie die Anwendung sorgfältig, und reagieren Sie bei Fehlerbedingungen möglichst immer mit entsprechenden Maßnahmen.

Ausweitung von Berechtigungen

Als Elevation of Privilege oder Ausweitung von Berechtigungen wird der Vorgang bezeichnet, sich weitergehende Berechtigungen als ursprünglich zugewiesen zu verschaffen. Bei einem erfolgreichen Angriff durch Ausweitung von Berechtigungen kann ein böswilliger Benutzer beispielsweise Administratorrechte für den Webserver erlangen und sich auf diese Weise Zugriff auf sämtliche Daten auf dem Server sowie die Kontrolle über die Serverfunktionen verschaffen.

Um sich weitgehend gegen die Ausweitung von Berechtigungen zu schützen, sollten Sie Anwendungen soweit möglich stets auf der untersten Berechtigungsebene ausführen. Es wird beispielsweise empfohlen, ASP.NET-Anwendungen nicht als SYSTEM-Benutzer (mit Administratorrechten) auszuführen.

Siehe auch

Weitere Ressourcen

Sichern von ASP.NET-Websites