Zehn Todsünden bei Webapplikationen

Unternehmen möchten vermehrt Applikationen ins Web portieren oder diese dort aufbauen. Ein Applikationsentwickler sollte deshalb mindestens in Bezug auf Webapplikations-Sicherheit ein Grundwissen besitzen: die OWASP Top 10.

Artikel erschienen in Swiss IT Reseller 2007/15

     

Das Open Web Application Security Project (OWASP www.owasp.org) betreut die sogenannten OWASP Top 10, welche die zehn akutesten Probleme bei Webapplika­tionen wiedergeben. Die OWASP Top 10 sind international anerkannt und werden zum Beispiel bei Sun Microsystems, IBM, Swiss Federal Institute of Technology, British Telecom und anderen bei der Applikationsentwicklung eingesetzt. Auch haben die Michigan State University (MSU) und die University of California at San Diego (UCSD) die OWASP Top 10 in den Lehrplan aufgenommen und für den Payment Card Industry (PCI) Data Security Standard gelten diese ab 2008 gar als offizielles Requirement für jegliche Security Code Reviews.

Cross Site Scripting (XSS)

Cross Site Scripting, besser bekannt unter der Abkürzung XSS, ist die momentan am weitesten verbreitete Verwundbarkeit bei Webapplikationen. XSS sind vorhanden, wenn Daten, die von einem User eingegeben werden, in ungeprüfter oder ungefilterter Form von Seiten des Servers zurückgesendet und im Webbrowser ausgegeben werden. XSS erlaubt einem Angreifer das Ausführen von Scriptcode im Webbrowser des Opfers, wodurch das Übernehmen der User Session, Defacen ­einer Website, Einfügen eigener Inhalte, Phishing-Attacken und Missbrauch des Webbrowsers zur Aus­führung von scriptbasierter Malware möglich werden. Dieser schadhafte Scriptcode wird meist mit Javascript geschrieben, jedoch ist dies mit jeder Scriptsprache möglich, welche vom Webbrowser des Opfers unterstützt wird.

Injection Flaws

Injection Flaws, hauptsächlich SQL Injections, sind eine weitverbreitete Verwundbarkeit in Webapplikationen. Solche Injections erfolgen dann, wenn an eine Applikation gesendete Daten von einem Interpreter auf Seiten des Servers als Command, Querry oder als Teil eines solchen verstanden und ausgeführt werden. Injection Flaws können es einem Angreifer erlauben, beliebige Daten und/oder Dateien zu lesen, schreiben, erweitern oder sogar auszuführen. Im schlimmsten Fall kann ein Angreifer die ganze Applikation oder gar den ganzen Server kompromittieren.

Insecure Remote File Includes

Auch Insecure Remote File Includes können in vielen Webapplikationen gefunden werden, weil Entwickler dem Input eines Benutzers vertrauen und dieser in einer File-, Include-, oder Stream-Funktion ungeprüft und/oder ungefiltert verwendet wird. Auf vielen Plattformen erlauben Frameworks das Einbinden von externen Objekten wie Websites oder auch lokalen Dateien. Wenn solche Daten ungeprüft eingelesen werden, kann dies dazu führen, dass die Daten einen Code enthalten, der beim Verarbeiten durch den Interpreter zur Ausführung kommt.

Insecure Direct Object Reference

Als Insecure Direct Object Reference bezeichnet man den Verweis auf ein Objekt wie zum Beispiel Dateien, Ordner, Datenbankeinträge oder Keys, durch welchen diese intern eingebun-den werden. Sofern kein Access Control Check implementiert wurde, kann ein Angreifer durch die Manipulation der Parameter, welche auf solche Files usw. verweisen, auf andere Ressour-cen zugreifen, ohne sich authentifizieren zu müssen.

Cross Site Request Forgery (CSRF)

Cross Site Request Forgery ist simpel und gleichzeitig kann grosser Schaden entstehen. Ein CSRF-Angriff richtet sich gegen den Webbrowser eingeloggter Nutzer einer Applikation, indem versucht wird, aus dem Browser eine Anfrage an die verwundbare Webapplikation zu senden, um die gewünschte Aktion dann mit den Berechtigungen des Benutzers auszuführen. Diese Verwundbarkeit besteht in fast jeder Webapplikation im Netz, da jede Applikation, die die Legitimität eines Requests nur anhand von automatisch übertragenen Credentials durch den Browser beurteilt, potentiell verwundbar ist. CSRF ist auch als Session Riding, One-Click Attack, Cross Site Reference Forgery, Hostile Linking und Automation Attack bekannt.

Information Leakage and Improper Error Handling

Applikationen können unbeabsichtigterweise durch verschiedenste Fehler Informationen über Konfigurationen, interne Abläufe oder Personen preisgeben. Applikationen können auch Informationen preisgeben über die Dauer der Verarbeitung von gewissen Operationen oder auch über die ver-schiedenen Antworten auf verschiedene Anfragen, so zum Beispiel den selben Error-Text, jedoch mit anderer Error-Nummer. Webapplikationen geben oft sensible Informationen in Form von teilweise sehr detaillierten (Debug-) Error Messages preis.

Broken Authentication and Session Management

Ein korrekt funktionierendes Session Management und eine saubere Authentifizierung sind kritische Faktoren. Oft bestehen Fehler in diesem Bereich darin, dass Credentials und/oder Session Tokens während deren Gültigkeit nicht ausreichend geschützt werden. Durch diese Schwächen kann es einem Angreifer möglich sein, Benutzerdaten zu stehlen oder die aktuelle Session eines Benutzers zu übernehmen. Weiter können auch Autorisationsprozesse oder Accountability Controls umgangen werden sowie Datenschutzverletzungen auftreten.

Insecure Cryptographic Storage

Webapplikationen nutzen sehr oft Kryptographie zum Schutz sensitiver Daten, häufig werden die dazu nötigen Funktionen jedoch falsch implementiert oder genutzt. Sensitive Daten einfach unverschlüsselt zu lassen, ist die wohl grösste Gefahr in diesem Bereich. Jedoch ist es nicht selten der Fall, dass entweder schwache kryptographische Algorithmen verwendet werden oder aber dass starke Verschlüsselungen falsch angewendet werden, wodurch diese ihre Wirkung verfehlen.

Insecure Communications

Oftmals wird vergessen, Netzwerk-Traffic durch die Applikation zu verschlüsseln. Verschlüsselung (meist SSL) muss für jede Verbindung verwendet werden, welche nicht sowieso jedem zugänglich ist. Besonders zu beachten ist dies bei Webseiten, die vom Internet aus erreichbar sind, doch sollten Backend-Verbindungen genauso geschützt werden, denn sonst können darüber sensible Daten wie Authentication und/oder Session Tokens preisgegeben werden. Weiter sollte Verschlüsselung auch immer dann verwendet werden, wenn sensible Daten wie Kreditkarten-Informationen oder medizinische Daten übertragen werden. Es ist auch zu beachten, dass die Applikation nicht dazu gebracht werden kann, die Verschlüsselung auszuschalten oder auf einen veralteten und unsicheren Algorithmus auszuweichen.

Failure to Restrict URL

Immer wieder kommt es vor, dass ­bestimmte Bereiche innerhalb einer Applikation nicht durch einen Login-Mechanismus geschützt sind, sondern durch das Aufrufen der korrekten URL Daten eingesehen oder gar administrative Funktionen verwendet werden können. Ein motivierter und kompetenter Angreifer kann mit etwas Glück durch Ausprobieren Zugang zu diesen versteckten Seiten erhalten.

Der Autor

Sven Vetsch ist Leader des OWASP Switzerland Local Chapter, angehender Student der Informatik sowie Security Tester, Analyst und Engineer mit Spezialisierung auf Web Technologies bei der Dreamlab Technologies Ltd. In Bern.
Www.owasp.org, www.disenchant.ch, www.dreamlab.net


Artikel kommentieren
Kommentare werden vor der Freischaltung durch die Redaktion geprüft.

Anti-Spam-Frage: Aus welcher Stadt stammten die Bremer Stadtmusikanten?
GOLD SPONSOREN
SPONSOREN & PARTNER