alex_aldo - Fotolia

Fünf häufige Schwachstellen bei Webapplikationen und wie man sie vermeidet

Ist der Code bei Webapplikationen unsicher, nutzen Cyberkriminelle diesen Umstand gnadenlos aus. Wir geben Tipps, wie Sie Fehler vermeiden.

OWASP (Open Web Application Security Project) hat schon im Jahre 2013 eine Liste zu den zehn wichtigsten Security-Fehlern bei Webapplikationen veröffentlicht. Eine deutsche Version ist als PDF verfügbar. Die immer noch aktuelle Liste hatte sich leider im Vergleich zu 2010, 2007 und 2004 wenig verändert.

Die OWASP-Liste beweist, dass die Verantwortlichen für das Design und die Entwicklung der Applikationen noch immer gut bekannte und dokumentierte Fehler machen. Viele der häufig vorkommenden Schwachstellen bei Webapplikationen sind so verbreitet, dass sie sogar in sogenannten Crimeware Kits aufgenommen sind. Man kann danach suchen und sie sofort ausnutzen. Selbst Angreifer mit wenig Fachwissen haben hier leichtes Spiel.

In diesen Tipp sehen wir uns fünf häufig auftauchende Schwachstellen bei Webapplikationen an. Außerdem besprechen wir, wie Unternehmen die ursprünglichen Probleme beheben können. Weiterhin verraten wir, wie man Angreifer abwehrt, die die Schwachstellen ausnutzen wollen.

Injection-Schwachstellen und Cross-site Scripting

Es handelt sich hier um die am häufigsten auftauchenden und schwerwiegendsten Fehler, die bei Webapplikationen auftreten. Es gibt verschiedene Formen von Injection-Angriffen. Dazu gehören SQL Injection, Einspeisungen via Betriebssystem, E-Mail und LDAP. Sie alle funktionieren, indem man schädliche Daten als Teil eines Befehls oder einer Abfrage an die Applikation schickt. Speziell manipulierte Daten können eine Applikation austricksen und sie führt danach Befehle unbeabsichtigt aus oder greift auf unautorisierte Daten zu. SQL Injection tritt dann auf, wenn sich ein Angreifer Seiten zunutze macht, die SQL Queries mit vom Anwender eingegebenen Daten erstellen. Dabei prüft die Applikation allerdings nicht, ob die Daten auch gültig sind. Somit können Angreifer schädliche SQL Queries absetzen und Befehle direkt an die Datenbank schicken. Man geht davon aus, dass Sony im Jahre 2011 Opfer eines solchen Angriffs wurde. Durch eine SQL Injection wurde auf Sonys PlayStation-Datenbank zugegriffen und unautorisierten Code eingepflanzt.

Viele Schwachstellen in Webapplikationen sind so weit verbreitet, dass Crimeware-Kits automatisch danach suchen und Tools zu deren Ausnutzung bereitstellen.

Angriffe mittels Cross-site Scripting (XSS) zielen auf die Anwender einer Applikation ab und injizieren Code. In der Regel ist das ein clientseitiges Skript wie zum Beispiel JavaScript, das in die Ausgabe einer Webapplikation eingespeist wird. Immer wenn eine kompromittierte Ausgabe oder Seite angesehen wird, führt der Browser diesen Code aus. So kann der Angreifer die Sitzung eines Anwenders kapern, den Nutzer auf eine schädliche Website umleiten oder die Seite ganz einfach verunstalten. Angriffe durch XSS sind innerhalb der Inhalte einer dynamisch erzeugten Seite möglich, wann immer eine Webanwendung vom Nutzer eingegebene Daten beinhaltet, die nicht ausreichend überprüft oder bereinigt wurden.

Um sowohl Angriffe durch Injection als auch XSS zu vermeiden, sollte eine Applikation Daten so behandeln, als kämen sie von einer nicht vertrauenswürdigen Quelle. Dabei ist es unwichtig, ob die Daten aus einem Formular, einer URL, einem Cookie oder sogar der eigenen Datenbank kommen. Überprüfen Sie jede Stelle, an der vom Anwender eingegebene Daten verarbeitet werden. Stellen Sie absolut sicher, dass die Software die Daten überprüft. Funktionen zur Validierung müssen sämtliche Zeichen oder Zeichenketten bereinigen, die potenziell schädlich sein könnten. Erst danach darf man sie an Skripte und Datenbanken weitergeben. Die Eingaben müssen auf Typ, Länge, Format und Umfang überprüft werden. Entwickler sollten dabei auf existierende Bibliotheken für die Kontrolle setzen. Möglichkeiten an dieser Stelle sind OWASPs Enterprise Security API oder Microsofts Anti-Cross Site Scripting Library. Damit müssen Sie nicht eigenen Prüfroutinen für eine Validierung schreiben. Stellen Sie außerdem sicher, dass alle vom Client akzeptierten Werte überprüft, gefiltert und kodiert werden, bevor diese zurück an den Anwender gehen.

Defekte Authentifizierung und Session-Management

Webapplikationen müssen Authentifizierung von Anwendern verarbeiten und Sessions oder Sitzungen etablieren, damit sie die Anfragen der Anwender verfolgen können. Reines HTTP bietet dieses Leistungsmerkmal nicht. Wenn die Anmeldedaten und die Session-Identifikatoren nicht allzeit durch Verschlüsselung geschützt sind, kann ein Angreifer eine aktive Sitzung kapern und die Identität eines Anwenders annehmen. Das geht auch dann, wenn die entsprechenden Daten durch andere Fehler wie XSS exponiert werden. Nehmen wir an, dass ein Angreifer eine Session entdeckt, wobei sich der ursprüngliche Anwender nicht abgemeldet hat (ein sogenannter Walk-by-Angriff). Nun sollten alle Funktionen für das Kontomanagement und die Transaktionen eine erneute Authentifizierung verlangen. Das gilt auch dann, wenn der Anwender eine gültige Session-ID hat. Bei brisanten Transaktionen sollte man außerdem Zwei-Faktor-Authentifizierung ins Auge fassen.

Will ein Unternehmen Probleme bei der Authentifizierung und dem Session-Management aufdecken, kann es sowohl den Code inspizieren als auch Penetrationstests durchführen. Entwickler haben die Möglichkeit, automatisierte Code- und Schwachstellenscanner zu bemühen, um potenzielle Sicherheitsprobleme aufzudecken. Die nachfolgenden Bereiche benötigen normalerweise etwas mehr Aufmerksamkeit. Wir sprechen hier davon, wie Session-Identifikatoren behandelt werden und den Methoden, die für das Ändern der Anwenderdaten zuständig sind. Lässt das Budget keine Anschaffung kommerzieller Versionen zu, dann sehen Sie sich die zahlreichen Alternativen auf dem Open-Source-Markt und die Lite-Versionen an. Diese markieren Stellen, an denen ein genauerer Blick auf den Code oder die Prozesse notwendig ist.

Unsichere Direkte Referenzen auf Objekte

Das ist ein weiterer Fehler, der durch schlechtes Design der Applikation ausgelöst wird. Man geht hier fälschlicherweise von der Annahme aus, dass sich die Anwender grundsätzlich an die Richtlinien der Applikation halten. Wird zum Beispiel die Konto-ID des Anwenders in der URL der Seite oder einem versteckten Feld angezeigt, dann könnte ein böswilliger Nutzer möglicherweise die ID eines anderen Nutzers erraten. Nun lässt sich eine Anfrage abermals einreichen, um Zugriff auf die gewünschten Daten zu bekommen. Das ist vor allen Dingen dann denkbar, wenn die ID ein voraussagbarer Wert ist. Diese Schwachstellen verhindern Sie am besten, wenn Sie zufällige und nicht berechenbare IDs verwenden. Das gilt auch für die Namen der Dateien und Objekte. Exponieren Sie außerdem niemals die richtigen Namen von Objekten. Häufig anzutreffende Orte, an denen diese Daten zur Schau gestellt werden, sind URLs und Links, versteckte Formularfelder, ungeschützter Ansichtszustand bei ASP.NET, Dropdown-Listen, JavaScript Code und Objekte auf der Seite des Clients wie zum Beispiel Java Applets. Immer wenn auf sensible Dateien oder Inhalte zugegriffen wird, sollten Sie verifizieren, dass der Anwender auch tatsächlich darauf zugreifen darf.

Fehlkonfiguration bei der Security

Die unterstützende Infrastruktur für die Webapplikationen umfasst eine komplexe Vielfalt an Geräten und Software. Dazu gehören Server, Firewalls, Datenbanken, Betriebssysteme und Software für die Applikation. All diese Elemente muss man sicher konfigurieren und auch warten. Dabei sollte die Applikation mit so wenig Rechten wie notwendig laufen. Dennoch gibt es viele Systeme, die nicht komplett abgehärtet sind. Ein hauptsächlicher Grund dafür ist die dürftige Administration des Systems. Das liegt möglicherweise daran, dass die für die Webapplikation und die dazugehörige Infrastruktur verantwortlichen Personen niemals die notwendigen Schulungen erhalten haben.

Die Bereitstellung von adäquatem Training und entsprechenden Ressourcen für das Tagesgeschäft und das Management der Applikation ist entscheidend. Es ist genauso wichtig wie die Priorisierung der Security und der Datenschutz während der Entwicklung. Zum Schluss sollten Sie noch einen Penetrationstest für Webapplikationen ansetzen, die in irgendeiner Form sensible Daten verarbeiten. Das ist eine proaktive Methode für die Bewertung, ob man einem Angriff standhalten kann. Außerdem finden Sie auf diese Weise die Schwachstellen vor einem böswilligen Hacker.

Fazit

Die hier genannten fünf häufig auftauchenden Schwachstellen bei Webapplikationen knechten die Security-Teams in den IT-Abteilungen schon lange. Sie sind nicht neu und es ist schon lange bekannt, wie man sie aus der Welt schaffen kann. Solange das Thema Sicherheit für Webapplikationen nicht oberste Priorität hat, werden Angreifer weiterhin mit Diebstahl, Betrug und Cyberspionage weitermachen wie bisher. Sie werden die hier beschriebenen Fehler gnadenlos ausnutzen.

Folgen Sie SearchSecurity.de auch auf Twitter, Google+ und Facebook!

Über den Autor:
Michael Cobb ist CISSP-ISSAP und ein bekannter Security-Autor mit über 20 Jahren Erfahrung. Zu seiner Leidenschaft gehört, Best Practises bezüglich IT-Security verständlich und begreifbar zu machen. Seine Website http://www.hairyitdog.com bietet freie Security-Poster an, um die Anwender auf die Gefahren und die Datensicherheit im Unternehmen aufmerksam zu machen. Er war Co-Autor des Buches IIS Security und hat für viele führende IT-Publikationen Artikel verfasst. Mike war außerdem Microsoft Certified Database Manager und registrierter Consultant bei CLAS (CESG Listed Advisor Scheme).

Artikel wurde zuletzt im Oktober 2015 aktualisiert

Pro+

Premium-Inhalte

Weitere Pro+ Premium-Inhalte und andere Mitglieder-Angebote, finden Sie hier.

Erfahren Sie mehr über Sicherheit von Webanwendungen

Diskussion starten

Schicken Sie mir eine Nachricht bei Kommentaren anderer Mitglieder.

Mit dem Absenden dieser Daten erklären Sie sich bereit, E-Mails von TechTarget und seinen Partnern zu erhalten. Wenn Ihr Wohnsitz außerhalb der Vereinigten Staaten ist, geben Sie uns hiermit Ihre Erlaubnis, Ihre persönlichen Daten zu übertragen und in den Vereinigten Staaten zu verarbeiten. Datenschutz

Bitte erstellen Sie einen Usernamen, um einen Kommentar abzugeben.

- GOOGLE-ANZEIGEN

SearchStorage.de

SearchNetworking.de

SearchEnterpriseSoftware.de

SearchDataCenter.de

Close