Dieser Beitrag aus unserer Reihe zur OWASP Top Ten, den häufigsten Sicherheitslücken in Webapplikationen, beschäftigt sich mit Platz 9: Nutzung von Komponenten mit bekannten Schwachstellen.
Webapplikationen wie Onlineshops, Portale oder Content Management Systeme haben mittlerweile einen großen Funktionsumfang und damit eine hohe Komplexität. In der Entwicklung wird daher auf fertige Komponenten zurückgegriffen, die allenfalls noch etwas angepasst werden müssen. So kommt für eine einzelne Webapplikation oft eine Vielzahl unterschiedlicher Komponenten zum Einsatz – vom Webserver, über Virtualisierungsumgebungen, bis hin zu Programmbibliotheken bspw. zur Verschlüsselung oder Bildverarbeitung. Die Auswahl ist groß. So führt das Wappalyzer Projekt z.B. Statistiken über 823 unterschiedliche Web-Technologien.
Allerdings erhöhen zusätzliche Komponenten die Angriffsfläche einer Webapplikation, denn jede Komponente kann Sicherheitslücken enthalten.
Beispielszenarien
- Eine Programmbibliothek zur Bildverarbeitung enthält eine Sicherheitslücke, die durch manipulierte Bilddateien die Ausführung von Schadcode auf dem Webserver erlaubt. Betroffen sind alle Webapplikationen, die diese Bibliothek zur Verarbeitung hochgeladener Bilder (z.B. Profilbilder, Fotos) einsetzen.
- Die eingesetzte Verschlüsselungsbibliothek, die für die sichere Verbindung zwischen Client (also Webbrowser) und Webserver verantwortlich ist, enthält kryptographische Schwachstellen, die das Entschlüsseln von abgehörtem Datenverkehr erheblich erleichtert. Sämtliche Webserver, die zur Verbindungsverschlüsselung auf diese Bibliothek zurückgreifen, sind betroffen.
Gegenmaßnahmen
Die einfachste Gegenmaßnahme ist gleichzeitig auch die unrealistischste: alle Funktionen selber programmieren. Davon ist aber nicht nur wegen des Aufwands abzuraten, sondern auch wegen der Gefahr, innerhalb der selbstentwickelten Module neue Sicherheitslücken zu produzieren. Daher wird empfohlen, alle eingebunden Komponenten zu identifizieren und zu inventarisieren. Die Zuständigkeit für den Test sowie für spätere Updates der Komponenten sollte zudem klar definiert werden. Ist der Entwickler zuständig? Der Administrator des Systems? Über öffentliche Datenbanken (z.B. https://cve.mitre.org/) und die Informationskanäle der jeweiligen Entwickler sollte der aktuelle Stand der eingesetzten Komponenten ständig überwacht werden. Des Weiteren sollten zusätzliche Sicherheitsmaßnahmen, wie z.B. Webapplication-Firewalls, eingeführt werden, welche die Durchführung von Angriffen auf fehlerhafte Komponenten verhindern oder zumindest erschweren.
Zusammenfassung
Beim Einsatz von Softwarekomponenten für Webapplikationen gilt: so viel wie nötig, so wenig wie möglich. Wichtige Aspekte sind eine Übersicht über die tatsächlich eingesetzten Komponenten und die Klärung von Zuständigkeiten und Abläufen, falls ein Update der Komponenten nötig ist. Um den Einsatz unsicherer Komponenten festzustellen, bieten sich ein Penetrationstest oder ein Audit des Quellcodes der Webapplikation an.