Die zehn schlimmsten Sicherheitslöcher

07.11.2007
Das Internet stellt die IT-Sicherheit vor große Probleme. Das Open Web Application Security Project (Owasp) beschreibt die aktuell größten Schwachstellen in Web-Anwendungen - und wie sie sich vermeiden lassen.

Entwickler von Web-Anwendungen widmen dem Thema Security zu wenig Aufmerksamkeit.

Mehr zum Thema

www.computerwoche.de 597613: Ajax macht Hacker glücklich;

590824: Kritisches Leck in Web 2.0;

590348: Die meistenWebsites sind verwundbar.

"Das Problem ist, dass IT-Sicherheit zum Zeitpunkt der Entstehung einer Web-Applikation schlicht nicht berücksichtigt wird", bemängelt Forrester-Analyst Khalid Kark.

Statt Sicherheitsaspekte schon in der De-signphase einer Web-Anwendung zu bedenken, würden sie meist erst dann thematisiert, wenn ei-ne Web-Seite bereits steht. Aufgrund dieser Nachlässigkeit sei das Gros der Sites anfällig für Hacker-Attacken. Auch IT-Berater Joel Snyder kritisiert die Zunft der Programmierer, die das Thema Web Application Security seiner Beobachtung nach völlig ignoriert. Als größtes Manko erachtet er, dass Designer auf applikationsinterne Schutzwälle verzichteten, die es ermöglichen würden, zwischen den einzelnen Programmteilen hin- und herwandernde Daten zu isolieren und zu bewerten.

Um die Lösung dieses Problems bemüht sich auch das Owasp. Ziel der internationalen Non-Profit-Community ist es, Web-Entwickler mit der jährlich aktualisierten Liste "The Ten Most Critical Web Application Security Vulnerabilites" über die jeweils größten Sicherheitsrisiken zu informieren. Laut Jeff Williams, Owasp-Chairman und CEO von Aspect Security, hat sich die Lage seit der Erstveröffentlichung der Schwachstellenliste im Jahr 2004 kaum verbessert. Vielmehr hätten neue Techniken wie Ajax und Rich Internet Applications, die das Äußere der Sites und deren Bedienung verbessern, zusätzliche Angriffsflächen geschaffen. Die CW-Schwesterpublikation "Network World" hat die jüngste Ausgabe des Owasp-Reports zusammengefasst:

Cross Site Scripting (XSS)

Problem: XSS-Lücken gehören zu den gängigsten und gefährlichsten Schwachstellen in Web-Anwendungen. Sie entstehen, wenn eine Applikation von Nutzern stammende Daten an einen Web-Browser schickt, ohne die Inhalte zuvor zu überprüfen oder zu verschlüsseln. XSS ermöglicht Hackern, bösartige Skripte im Browser des Opfers auszuführen und darüber Nutzer-Sessions zu kapern, Schadcode zu injizieren und Phishing- beziehungsweise Malware-Attacken zu fahren. Die Angriffe werden in der Regel mittels Javascript ausgeführt, im Prinzip ist aber jede vom Browser unterstützte Script-Sprache anfällig für diese Art von Attacke.

Basisschutz: Laut Owasp empfiehlt es sich, sämtliche eingehenden Daten mit Hilfe einer Whitelist zu überprüfen. Anders als beim Black-Listing, das lediglich nachweislich "schlechten" Input blockiert, lehnt das Whitelist-Verfahren alles ab, was in der Liste nicht explizit als "gutartig" aufgeführt ist. Der gesamte Daten-Output wiederum sollte verschlüsselt sein. Mittels Validierung lassen sich Attacken aufspüren und vereiteln, während Verschlüsselung verhindert, dass erfolgreich injizierter Schadcode im Browser laufen kann.

Injection-Fehler (etwa SQL-Injection)

Problem: Werden von Nutzern stammende Daten als Teil eines Befehls oder einer Anfrage an einen Interpreter gesendet, können ihn Hacker mit Hilfe manipulierter Daten dazu bringen, unerwünsch-te Befehle auszuführen oder Daten zu modifizieren. Injection-Fehler ermöglichen es Angreifern, beliebige, für die Applikation verfügbare Daten zu erstellen, zu lesen, zu aktualisieren oder auch zu löschen. Im schlimmsten Fall kann ein Angreifer die komplette Anwendung sowie die darunterliegenden Systeme kompromittieren und dabei sogar Firewall-Umgebungen umgehen.

Basisschutz: Laut Report ist die Nutzung von Interpretern zu vermeiden. Ist der Aufruf eines Interpreters unumgänglich, sollten ausschließlich sichere APIs (Application Programming Interfaces) verwendet werden dazu zählen die Experten streng typisierte parametrisierte Queries und ORM-Libraries (Object Relational Mapping).

Die Ausführung bösartiger Dateien

Problem: Hacker können aus der Ferne Schadcode zur Ausführung bringen, Rootkits installieren oder ein komplettes System kompromittieren. Für die so genannte Remote File Inclusion (RFI) ist im Prinzip jede Web-Applikation oder jedes Framework anfällig, das Dateien oder Dateinamen von Nutzern akzeptiert.

Basisschutz: Gemäß Owasp sollte Nutzer-Input zur Konstruktion von Dateinamen für Server-basierende Ressourcen im Skript vermieden werden. Auch sind Firewall-Regeln so zu setzen, dass sie neue Verbindungen zu externen Websites oder internen Systemen verhindern.

Unsichere Direct-Object-Referenz

Problem: Angreifer manipulieren Direct-Object-References, um unautorisiert auf andere Objekte zugreifen zu können. Möglich ist dies, wenn URLs oder Formparameter Hinweise auf interne Objekte wie Dateien, Verzeichnisse, Datenbankeinträge oder Schlüssel enthalten. So wird auf Banken-Sites häufig die Kontonummer als primärer Datenbank-index verwendet oder auch direkt im Web-Interface genutzt. "Hinweise auf Datenbankschlüssel liegen häufig offen", so der Report. Demnach kann ein Hacker durch intelligentes Raten oder einfaches Suchen weitere Schlüssel finden und so an fremde Daten gelangen.

Basisschutz: Um die Offenlegung von Direct Object References zu vermeiden, empfiehlt die Owasp, einen Index, eine indirekte Referenzierung oder eine andere indirekte, leicht zu validierende Methode zu verwenden. Sind direkte Referenzen erforderlich, müssen für deren Nutzung sichernde Autorisierungsmechanismen eingeführt werden.

Cross Site Request Forgery (CSRF)

Problem: CSRF-Attacken, auch "Session Riding" oder "One Click Attacks" genannt, sind nicht neu, aber einfach - und potenziell verheerend. Bei dieser Angriffsart übernimmt der Hacker die Kontrolle über den Browser seines Opfers, sobald sich dieser bei einer Web-Seite eingeloggt hat, und sendet in dessen Namen bösartige Anfragen an die Web-Applikation. Web-Seiten sind dadurch extrem verwundbar, weil sie Requests in der Regel auf Basis von Session-Cookies oder über die "Remember-me"-Funktion autorisieren.

Basisschutz: Laut Owasp gilt es zu gewährleisten, dass sich Applikationen nicht auf automatisch vom Browser übermittelte Daten oder Tokens verlassen. Die einzige Lösung aus Sicht der Experten: Die Verwendung nutzerspezifischer Tokens, die der Browser nicht speichert.

"Indiskrete" Fehlerbehandlung

Problem: Von Applikationen erzeugte Fehlermeldungen, die sensible Daten oder Informationen etwa über ihre Konfiguration preisgeben, sind für Hacker ein gefundenes Fressen. Viele Anwendungen liefern mit detaillierten Error- oder Debug-Meldungen unbeabsichtigt aufschlussreiche Anhaltspunkte zu ihren Interna - etwa über die zur Verarbeitung bestimmter Operationen benötigte Zeit oder ihre Reaktionen auf verschiedenen Input. Übeltäter können diese Informationen nutzen, um Angriffe zu lancieren oder sogar zu automatisieren.

Basisschutz: Die Experten empfehlen den Einsatz eines Test-Tools wie des Owasp-eigenen "Webscarab Project", um zu eruieren, welche Fehlermeldungen die Applikation erzeugt. Zudem gilt es, das detaillierte Error-Handling zu deaktivieren oder zumindest einzuschränken. Auch sollten Debug-Informationen für Nutzer nicht sichtbar sein.

Fehler bei Authentifizierung und Session-Management

Problem: Wenn Applikationen Zugangsdaten und Session-Tokens nicht angemessen, sprich: über den gesamten Lebenszyklus hinweg schützen, können Angreifer Kontrollen hinsichtlich Autorisierung und Verantwortlichkeiten unterwandern und Nutzerkonten sowie administrative Accounts kapern. Fehler sind in den tragenden Authentifizierungsmechanismen nicht selten, häufiger, so der Report, entstehen die Schwachstellen jedoch durch zusätzliche Authentifizierungsfunktionen wie Logout, Passwort-Management, Timeout, "remember me", geheime Fragen sowie Account-Updates.

Basisschutz: Kommunikations- und Zugangsdaten müssen sicher gespeichert werden. Das Verschlüsselungsprotokoll SSL (Secure Sockets Layer) sollte für Anwendungskomponenten, die eine Authentifizierung erfordern, die einzige Option sein. Die Zugangsdaten gilt es, als Hash-Wert oder verschlüsselt zu speichern. Ferner rät Owasp, kundenspezifische Cookies für die Authentifizierung oder das Session-Management abzuschaffen.

Unzureichend codierte Datenablage

Problem: Verschlüsselung zum Schutz vertraulicher Daten ist mittlerweile ein Kernbestandteil der meisten Web-Anwendungen. Dennoch werden sensible Informationen häufig uncodiert abgelegt, und wo Verschlüsselung betrieben wird, weist sie oft erhebliche Designschwächen auf. Probleme bereitet es unter anderem, wenn eigenentwickelte Algorithmen eingesetzt, starke Algo-rithmen unfachgemäß oder schwache Algorithmen wie MD5, SHA-1 und RC3/4 überhaupt verwendet werden. Das kann die Offenlegung sensibler Daten sowie Verstöße gegen Compliance-Vorschriften zur Folge haben.

Basisschutz: Vom Einsatz selbst gebastelter oder schwacher Verschlüsselungsalgorithmen ist dringend abzuraten. Ferner sollten Schlüssel generell offline erzeugt und private Keys nur über abgesicherte Kanäle übermittelt werden.

Unsichere Kommunikation

Problem: Häufig verschlüsseln Web-Applikationen den Netzverkehr nicht, so dass vertrauliche Kommunikation ungeschützt ist. Angreifer können sich so Zugriff auf die Konversationsinhalte sowie übermittelte Zugangsdaten und sensible Informationen verschaffen.

Basisschutz: Bei jeder Übermittlung sensibler Daten ist SSL zu ver-wenden. Auch Online-Zugriffe durch Kunden, Mitarbeiter oder Administratoren sollten durch SSL oder ein vergleichbares Verschlüsselungsprotokoll geschützt sein. Wichtig ist zudem, die Kommunikation zwischen Infrastrukturelementen wie Web-Servern und Da-tenbanken mittels Transport Layer Security oder Verschlüsselung auf Protokollebene abzusichern.

Uneingeschränkter Zugriff auf URLs

Problem: Manche Web-Seiten sollen nur für eine kleine Gruppe privilegierter Nutzer etwa Administratoren zugänglich sein. Doch häufig verfügen diese Sites über keine echte Zugangskontrolle, so dass versierte Hacker die URLs ausfindig machen können. Die primäre Angriffsmethode, die diese Schwäche nutzt, nennt sich "Forced Browsing" und beinhaltet das Erraten von Links sowie Brute-Force-Techniken zum Aufspüren ungeschützter Seiten.

Basisschutz: Alle URLs und Business-Funktionen sind durch einen effektiven Zugangskontrollmechanismus zu schützen, der Nutzerrollen und -privilegien verifiziert. (kf)u Die Langfassung dieses Beitrags inklusive spektakulärer Angriffs-beispiele lesen Sie unter www.computerwoche.de/582260.