Webanwendungssicherheit:
Software wird zunehmend zu webbasierten Diensten. Die Zahl der Beispiele aus der Praxis wächst täglich: Online-Banking, E-Commerce, E-Government, E-Demokratie, E-Healthcare, CRM, soziale Netzwerke, Content-Anbieter usw., und sogar Cloud Computing (XaaS, wobei X für Infrastruktur, Plattform, Software usw. stehen kann). Anwendungen, die auf Webservern gehostet werden, nehmen stetig zu und werden in einer Vielzahl von Sprachen geschrieben, darunter PHP, Java, Perl, Python, C und ASP. Websicherheit steht bei Softwarearchitekten und -designern selten im Vordergrund. Folgende Schwachstellen lassen sich identifizieren: (i) Schlecht geschriebene Skripte (ein Skript ist eine Reihe von Anweisungen, die Aufgaben automatisieren und Hilfsprogramme erstellen) mit unzureichender Eingabevalidierung. (ii) Sensible Daten werden unverschlüsselt in Dateien gespeichert, die für jeden lesbar sind. (iii) Unverschlüsseltes Senden von Passwörtern und Verwendung von HTTP anstelle von HTTPS (SSL/TLS) usw. Visa und Mastercard haben mit dem PCI-DSS-Standard erhebliche Anstrengungen unternommen, die Datensicherheit zu verbessern. Es ist jedoch wichtig zu beachten, dass sorgfältige IT-Compliance nicht immer gleichbedeutend mit gutem Sicherheitsmanagement in einem Unternehmen ist. Webanwendungen laufen entweder auf einem Webserver (physisch, virtuell, eigenständig oder in einer Serverfarm) oder auf einem Anwendungsserver. Sie erfassen Eingaben von Webnutzern über den Webserver und interagieren mit Backend- und Drittanbieterdatenbanken. Webanwendungen bereiten Ergebnisse auf und liefern sie über den Webserver an die Nutzer aus. Dabei lassen sich zwei Schlüsselaspekte identifizieren: (i) Sie generieren dynamisch HTML-Seiten. (ii) Sie enthalten Inhalte aus vielen verschiedenen Quellen, oft von regulären Nutzern: Blogs, soziale Netzwerke, Websites zum Teilen von Fotos, Musik usw. Die Websicherheit lässt sich in zwei Hauptbereiche unterteilen: (1) Webbrowser (wie Microsoft Internet Explorer 8, Mozilla Firefox 3.5.13, Safari 5 (für PC/MacOS), Netscape 9.0, Opera 9.10, Google Chrome 4.0, Micro-Browser für PDAs usw.). Diese können von jeder besuchten Website angegriffen werden. Angriffe können zur Installation von Schadsoftware (in Form von Keyloggern, die Tastatureingaben aufzeichnen; dies kann durch virtuelle Bildschirmtastaturen verhindert werden), Botnetzen, Spyware usw. führen. Beispielsweise könnten Nutzer dazu verleitet werden, Codec-Software herunterzuladen und auszuführen, um ein interessantes Video anzusehen. Weitere Risiken sind Dokumenten- und Identitätsdiebstahl, Verlust privater Daten usw. (2) Webanwendungen. Diese Anwendungen laufen auf Webseiten (wie Online-Banking-Plattformen, Blogs, Online-Shops, Google Apps usw.) und sind in PHP, ASP, JSP, Ruby usw. geschrieben. Sie weisen zahlreiche potenzielle Schwachstellen (oder Bugs) auf, wie z. B. XSS (Cross-Site Scripting), SQL-Injection (SQL-Injection) usw. Darüber hinaus ermöglichen diese Angriffe Kreditkartenbetrug, die Verunstaltung von Webseiten (wie im Fall der Webseite www.eu-2010.es, wo das Bild von ZP durch das des Komikers Mr. Bean ersetzt wurde. Dies hätte durch eine ordnungsgemäße Code-Prüfung zur Vermeidung von XSS verhindert werden können) usw.
Web-Bedrohungen/Angreifermodelle.
Web-Angreifer können sehr vielfältig sein: (i) Sie kontrollieren schädliche Websites und können sogar SSL/TLS-Zertifikate für ihre Seiten erlangen. Die Gründe, warum ein Benutzer diese schädlichen Websites besuchen könnte, sind vielfältig: Erhalt einer Phishing-E-Mail, Auffinden besonders attraktiver Inhalte (aus privater oder beruflicher Sicht), Suchergebnisse einer Suchmaschine, Platzierung in einem Werbenetzwerk, Pech usw. (ii) Der Angreifer hat keinen weiteren Zugriff auf den Rechner des Benutzers. (iii) Gadget-Angreifer. Zum Beispiel ein schädliches Gadget, das in ein legitimes Mashup eingebunden ist. Ein Gadget ist ein Programmobjekt/eine Mini-Anwendung, die dynamische Dienste bereitstellt; Gadgets befinden sich in Windows 7/Vista in der Seitenleiste. (iv) Netzwerk-Angreifer. Sie können passiv (durch heimliches drahtloses oder kabelgebundenes Abhören mit Sniffern) oder aktiv (durch einen manipulierten Router, DNS-Poisoning oder Pharming) sowie durch ARP-Poisoning für Man-in-the-Middle-Angriffe usw. erfolgen. (v) Malware-Angreifer. Der Angreifer erlangt auf verschiedene Weise die Kontrolle über den Rechner des Benutzers: (a) Ausnutzen von Anwendungs- oder Betriebssystemfehlern (z. B. Pufferüberlauf) aufgrund fehlender Code-Überprüfung und Betriebssystem-Patches. (b) Verleiten des Benutzers zur Installation schädlicher Inhalte, beispielsweise durch die Nutzung eines kostenlosen Antivirenprogramms oder die Installation eines speziellen Codecs zur Wiedergabe eines Videos in einem neuen Format usw. (vi) XSS/CSS-Risiken (Cross-Site-Scripting). XSS ist eine Art Reflexangriff; der Benutzer wird dazu verleitet, eine schlecht programmierte Website zu besuchen. Ein Fehler im Code der Website führt zu deren Anzeige, und der Browser des Benutzers führt ein beliebiges Angriffsskript aus. Es kann: (a) den Inhalt der betroffenen Website verändern, indem es DOM-Komponenten (Document Object Model) manipuliert (die HTML-Seite besteht aus strukturierten Daten, und das DOM stellt diese Hierarchie dar), falsche Informationen anzeigen, sensible Daten anfordern und Formularfelder auf dieser und verlinkten Seiten kontrollieren. Beispielsweise schleust ein Phishing-Angriff auf MySpace.com das Passwortfeld ein, sodass das Passwort an einen böswilligen Freund gesendet werden kann. (b) Es kann den Browser des Benutzers dazu veranlassen, andere Websites anzugreifen.

Das Wesen der Informationssicherheit. Fehler. Generationen von Bedrohungen.
Informationssicherheit lässt sich als kontinuierlicher Prozess definieren; sie ist eine geschäftliche Angelegenheit (nicht bloß eine Compliance-Frage und Aufgabe der IT-Abteilung); sie verbessert das Image und den Ruf des Unternehmens; sie stärkt Vertrauen und Glaubwürdigkeit; sie steigert die Produktivität; sie ist eine gerechtfertigte und nützliche, aber unsichtbare Notwendigkeit; sie ist eine Investition; sie ist ein Wettbewerbsvorteil; sie hat Priorität; sie ist der Fokus auf die Stärkung der Resilienz des Unternehmens; sie beugt Unternehmensrisiken und finanziellen Verlusten vor; sie ist eine echte Unterstützung für die Geschäftsziele; sie ist die tragende Säule des Managements jedes Unternehmens; Sicherheit unterstützt und schützt die Geschäftsziele; sie ist ein geschäftliches Problem, für das das Management des Unternehmens verantwortlich ist. Im Laufe der Jahre wurden zahlreiche schwerwiegende Missverständnisse über Informationssicherheit identifiziert: (i) Wenn unser Unternehmen über Antivirensoftware und/oder eine Firewall verfügt, sind wir sicher. (ii) Die meisten schwerwiegenden Bedrohungen kommen von außen. (iii) Unser Unternehmen muss sich keine Sorgen um die Sicherheit machen, da wir täglich Datensicherungen erstellen. (iv) Die Verantwortung für die Sicherheit liegt beim IT-Sicherheitspersonal. Sollten Mitarbeiter Probleme haben (diese können über das Webportal von GP oder telefonisch für eine schnellere Bearbeitung gemeldet werden), werden diese vom IT-Sicherheitspersonal behoben. (v) Manche CEOs behaupten fälschlicherweise, ihr Unternehmen habe Budgetbeschränkungen und stellen daher die Notwendigkeit des Sicherheitsbudgets infrage, solange die notwendigen Maßnahmen ergriffen werden. Darüber hinaus ist es ein schwerwiegender Fehler anzunehmen: (a) Unternehmenssicherheit sei lediglich ein Produkt, das man kauft, eine Technologie, die man einsetzt, eine Richtlinie, die man vereinbart, oder eine bestimmte Zeitinvestition. Man sollte bedenken, dass der Mensch das schwächste Glied in der Kette ist. Sicherheit umfasst alle Aspekte des Unternehmens, durchdringt alles, untersucht, welche Vermögenswerte und Risiken gefährdet sind, und legt fest, wie diese Risiken zu beheben sind. Zusammenfassend lässt sich sagen, dass Sicherheit ein fortlaufender Prozess ist, der Technologie, Richtlinien, Best Practices, Schulungen und Sensibilisierung integriert und so eine moderne Sicherheits- und Datenschutzkultur etabliert. Eine Bedrohung ist die Wahrscheinlichkeit eines Angriffs, beispielsweise eines IP-Pakets, das einen Pufferüberlauf verursacht. Eine Schwachstelle ist die Wahrscheinlichkeit, dass eine Sicherheitslücke ausgenutzt werden kann, beispielsweise ein Pufferüberlauf. Die Folgen entsprechen den Gesamtkosten eines erfolgreichen Angriffs. Risiko ist das Produkt aus Bedrohungen, Schwachstellen und deren Folgen, beispielsweise einem Systemabsturz.
Im Laufe der Jahre lassen sich folgende Bedrohungsgenerationen identifizieren: (1) Erste Generation: Manipulation von Infrastrukturelementen. Dies betrifft IT-Komponenten, E-Mail, Server, Datenbanken, Daten, Programme usw. (2) Zweite Generation: Manipulation von Geschäftsprozessen. Dies betrifft Prozesse, Mitarbeiter usw. (3) Dritte Generation: Manipulation kritischer Infrastrukturen. Dies betrifft Verkehrsinfrastruktur, Wasserinfrastruktur, Kommunikationsinfrastruktur, Infrastruktur des öffentlichen Gesundheitswesens, Banken- und Finanzinfrastruktur, Energie- und Versorgungsinfrastruktur, wichtige Rechenzentren, Kernkraftwerke, Stromerzeugungs- und -verteilungsinfrastruktur usw.
Hauptschwachstellen von Websites:
Die Hauptschwachstellen von Websites, die auch als Webangriffe betrachtet werden können, sind: (i) SQL-Injection. Der Browser sendet schädliche Eingaben an den Server. Eine unzureichende Eingabevalidierung führt zu einer schädlichen SQL-Abfrage. Der Schadcode des Angreifers wird auf dem Server des Opfers ausgeführt. Er verwendet SQL, um die Bedeutung des Datenbankbefehls zu verändern. Es gibt mehrere bekannte Schutzmaßnahmen, um dieses Problem effektiv zu beheben, wie z. B. Web Application Firewalls (z. B. FortiWeb-400B von Fortinet, NetScaler von Citrix, TrafficShield von F5). Allgemeine Code-Injection-Angriffe zielen darauf ab, beliebigen Code auf dem Server auszuführen. Im Kontext von SQL-Injection sind PHP-Datenbankabfragen gefährlich, da eine schädliche Zeichenkette die Bedeutung der Abfrage verändern kann. Mögliche Schutzmaßnahmen gegen SQL-Injection sind: niemals selbst SQL-Befehle erstellen, parametrisiertes SQL verwenden oder ein ORM-Framework einsetzen. (ii) CSRF (Cross-Site Request Forgery) oder XSRF. Eine schädliche Website sendet eine Browseranfrage an eine legitime Website und verwendet dabei die Anmeldedaten eines ahnungslosen Opfers. Die Website des Angreifers fälscht die Browseranfrage des Opfers an dessen Server. Dadurch wird die Sitzung des Nutzers auf dem Server des Opfers kompromittiert. Diese gefälschte Anfrage beeinträchtigt die laufende Sitzung. Sie lässt sich teilweise verhindern.
Mögliche Schutzmaßnahmen sind: (1) Validierung eines geheimen Tokens. Hierfür ist ein schwer zu erratendes geheimes Token erforderlich. (2) Referrer-Validierung. Geben Sie zu Ihrer Sicherheit niemals Ihr Passwort ein, beispielsweise für Facebook, auf Websites, die nicht auf Facebook.com gehostet werden. (3) Benutzerdefinierte HTTP-Header. Diese funktionieren jedoch nicht domainübergreifend. (4) Cross-Site-Scripting (XSS). Die bösartige Website sendet einem ahnungslosen Opfer ein Skript, das Informationen von einer legitimen Website stiehlt. Der Schadcode des Angreifers wird im Browser des Opfers ausgeführt. Das Schadskript wird in den vertrauenswürdigen Kontext eingeschleust. Das Problem entsteht durch die Weitergabe der nicht vertrauenswürdigen Eingabe. Dies ist schwer zu verhindern und erfordert sorgfältige Überwachung, Tests, entsprechende Tools usw. Eine XSS-Schwachstelle entsteht, wenn ein Angreifer Skriptcode in von einer Webanwendung generierte Seiten einschleusen kann.
Zu den Methoden zum Einschleusen von Schadcode gehören: (a) Reflected XSS (Typ 1). Das Skript des Angreifers wird als Teil einer Seite auf der Website des Opfers an den Benutzer zurückgesendet. (b) Stored XSS (Typ 2). Der Angreifer speichert den Schadcode in einer von der Webanwendung verwalteten Ressource, z. B. einer Datenbank. (c) DOM-basierte Angriffe (Document Object Model), die nicht den Server nutzen.
Clientseitige Schutzmaßnahmen gegen XSS-Angriffe umfassen: (i) Proxy-basierter Schutz. Dieser analysiert den HTTP-Datenverkehr zwischen dem Webbrowser des Benutzers und dem Zielwebserver, sucht nach speziellen HTML-Zeichen und kodiert diese, bevor die Seite im Webbrowser des Benutzers ausgeführt wird. (ii) Schutz durch eine Firewall auf Anwendungsebene. Diese analysiert die aufgerufenen HTML-Seiten auf Hyperlinks, die zum Auslesen sensibler Informationen führen könnten, und blockiert schädliche Anfragen mithilfe von Verbindungsregeln. (iii) Schutz durch ein Audit-System. Dieses überwacht die Ausführung von JavaScript-Code und vergleicht die Vorgänge mit übergeordneten Richtlinien, um potenziell schädliches Verhalten zu erkennen.
Laut OWASP (Open Web Application Security Project) gibt es einige Strategien zum Schutz vor XSS-Angriffen:
1) Stellen Sie sicher, dass Ihre Anwendungen alle Header, Cookies, Query-Strings, Formularfelder und versteckten Felder (alle Parameter) anhand einer strengen Spezifikation der zulässigen Daten validieren. Vertrauen Sie niemals clientseitigen Daten; die beste Strategie ist, nur das zuzulassen, was erwartet wird. Entfernen oder kodieren Sie außerdem Sonderzeichen wie lange Zeichen und UFT-8-Kodierungen. Es gibt automatisierte Black-Box-Testtools wie Hailstorm, WebInspect, Retina, eEye, Cenzic und Spidynamic sowie Tools zur Härtung von Webanwendungen wie WebSSARI, das auf Informationsflussanalyse basiert, und Black-Box-Sicherheitstestdienste wie whitehatsec.com.
2) Versuchen Sie nicht, aktive Inhalte zu identifizieren, zu entfernen, zu filtern oder zu bereinigen. Da es zu viele Arten von aktiven Inhalten und unzählige Möglichkeiten gibt, diese zu kodieren, um Inhaltsfilter zu umgehen,
3) verwenden Sie eine positive Sicherheitsrichtlinie, die festlegt, was erlaubt ist. „Negative“ Angriffssignaturbasierte Richtlinien sind schwer zu pflegen und wahrscheinlich unvollständig.
Sans Top 10 ICT-Sicherheitstrends. Sans Top 20 Kritische Kontrollmaßnahmen.
Die Sans Top 10-Rangliste der ICT-Sicherheitstrends (Informations- und Kommunikationstechnologien) sieht wie folgt aus: (1) Mobile Geräte: Laptops. Zum Beispiel mit Festplattenverschlüsselung. (2) Mobile Geräte: PDAs/Smartphones. (3) Staatliche Maßnahmen: Einhaltung gesetzlicher Vorschriften. (4) Gezielte Angriffe: Regierung und Unternehmen. (5) Gezielte Angriffe: Mobiltelefone: GSM/GPRS/
UMTS/HSDPA/Bluetooth. (6) Gezielte Angriffe: VoIP (Voice over IP). (7) Angriffstechniken: Spyware. (8) Angriffstechniken: Zero-Day-Schwachstellen. (9) Angriffstechniken: Rootkits. (10) Verteidigungsstrategien: Ausgereifte Netzwerkzugriffskontrollen (NAC). Die Sans Top 20-Rangliste der kritischen Kontrollmaßnahmen lautet: (1) Inventarisierung autorisierter und nicht autorisierter Geräte. Verwendung eines automatisierten Echtzeit-Tools zur Erfassung von Soft- und Hardware-Assets. (2) Inventarisierung autorisierter und nicht autorisierter Software. (3) Sichere Konfiguration von Hardware und Software auf Laptops, Workstations und Servern. (4) Sichere Konfiguration von Netzwerkgeräten wie Routern, Switches, Firewalls, IPS/IDS und UTMs. (5) Grenzsicherung. (6) Wartung, Überwachung und Analyse von Sicherheitsaudit-Logs. (7) Sicherheit von Anwendungssoftware. (8) Kontrollierte Nutzung von Administratorrechten. Zugriffsbeschränkung nur auf das Notwendigste. (10) Kontinuierliche Schwachstellenanalyse und -behebung. (11) Kontoüberwachung und -kontrolle. (12) Malware-Abwehr. Mit im Netzwerk eingesetzter Appliance-Antiviren-Hardware und Software auf Workstations. (13) Beschränkung und Kontrolle von Netzwerkports, -protokollen und -diensten. Einsatz von Hardware-NAC. (14) Steuerung drahtloser Geräte. WLAN, Bluetooth, GSM/GPRS/UMTS/HSPD usw. (15) Verhinderung von Datenverlust (DLP). (16) Sicheres Netzwerk-Engineering. (17) Penetrationstests, Read-Team-Übungen und ethisches Hacking. (18) Fähigkeiten zur Reaktion auf Sicherheitsvorfälle. (19) Fähigkeiten zur Datenwiederherstellung. (20) Bewertung der Sicherheitskompetenzen und entsprechende Schulungen zur Schließung von Lücken.
Korrelation zwischen Sicherheitsstufen und Bedrohungen.
Aktuell bestehen verschiedene Bedrohungsbereiche wie Malware-Verbreitung, Phishing/Pharming, Spam, Rootkits, DoS/DDoS-Angriffe und Botnetze. Betrachtet man einen externen Benutzer, der auf eine interne Datenbank zugreifen möchte, lassen sich folgende Schutzstufen von außen und die damit verbundenen Bedrohungen identifizieren: (i) HTTP-Client-/Benutzerebene: Bedrohungen wie CSS und Spoofing/Tricksing können erkannt werden. (ii) HTTP(S)-Transportebene: Passive Überwachung, Man-in-the-Middle-Angriffe (MITM) und Session Hijacking. (iii) Firewall-Ebene: Zulassung von HTTP(S). (iv) Webserver: Pufferüberlauf, Formatstrings, Directory Traversal, Standardkonten und Beispielanwendungen. (v) Webanwendungen und CGIs: Filterumgehung, Metazeichen, Nullzeichen und Pufferüberlauf. (vi) Firewalls: Achten Sie auf Bedrohungen innerhalb des internen Netzwerks. (vii) Datenbanken. Direkte SQL-Befehle, eingeschränkte Datenbankabfragen, Datenbank-Exploits.
Schlussbetrachtungen
Unsere Forschungsgruppe arbeitet seit über fünfzehn Jahren im Bereich der Websicherheit für Server, Anwendungen, Dienste, Infrastrukturen usw. Wir konzentrieren uns auf die Evaluierung und Entwicklung von Verbesserungsprojekten im Webkontext, auf Sicherheit und Datenschutz durch Design in der Webwelt sowie auf die Synthese geeigneter Schutzmechanismen, sowohl in Software als auch in Hardware, sowie auf eingebettete Logik in Mikro- und Nanosystemen.
Dieser Artikel ist Teil der Aktivitäten im Rahmen des Projekts LEFIS-APTICE (gefördert von Socrates, Europäische Kommission).
Bibliographie
– Areitio, J. „Information Security: Networks, Computing and Information Systems“. Cengage Learning-Paraninfo. 2010.
– Areitio, J. „Security Test to Evaluate and Improve the Level of Security Risks“. Conectrónica Magazine. Nr. 134. Februar 2010.
– Zittrain, J. „The Future of the Internet and How to Stop It“. Yale University Press. 2009.
– Web Application Tools: http://www.owasp.org: (i) Web Scarab: Leistungsstarker HTTP-Interceptor (verändert Daten während der Übertragung). (ii) Web Goat: Absichtlich unsichere Anwendungen für das Training von Exploits.
- Nikto Web Application Security Scanner: http://www.cirt.net/nikto2
- Web Dev Toolbar: https://addons.mozilla.org/firefox/addon/60
- Firefox XSS- und SQL-I-Add-ons: http://securitycompass.com
- N-Stalker: http://www.nstalker.com/products/free
- Wapiti Free Web Application Security Scanner: http://wapiti.sourceforge.net
- Spider Sensitive Information Scanner: http://www.cit.cornell.edu/security/tools
- Absinthe SQL-I (SQL-Injection) Tool: http://www.0x90.org/releases/absinthe
- Weitere kostenlose Tools: https://infosec.uga.edu/sate/tools.php
Autor:
Prof. Dr. Javier Areitio Bertolín – E-Mail:
Professor an der Fakultät für Ingenieurwissenschaften.
Leiter der Forschungsgruppe Netzwerke und Systeme. Universität Deusto.
