×

Sicherheitsmängel in Webapplikationen

Websecurity

Sicherheitsmängel in Webapplikationen erkennen und beheben – mithilfe von OWASP

IT-Systeme werden immer häufiger zum Ziel böswilliger Hacker-Angriffe. Bei diesen Angriffen machen sich Hacker Schwachstellen in der Software zu Nutze, um diese zu kompromittieren. Regelmäßig gibt es neue Schlagzeilen über Unternehmen, die entsprechenden Angriffen zum Opfer gefallen sind. Ein aktuelles Beispiel hierfür ist der renommierte Landmaschinenhersteller Fendt, dessen Produktion durch eine Ransomware-Attacke auf seinen Mutterkonzern AGCO lahmgelegt wurde (vgl. https://www.sueddeutsche.de/bayern/fendt-traktor-bayern-marktoberdorf-allgaeu-hacker-1.5581239). Vor diesem Hintergrund gewinnt die Resilienz von Applikationen gegenüber Hacker-Angriffen zunehmend an Bedeutung. Dabei ist zu beachten, dass neben öffentlich zugänglichen Applikationen, auch Applikationen innerhalb des internen Unternehmensnetzwerks potentielle Angriffsziele darstellen können.

Bei der Entwicklung von Software ist es daher wichtig, diese möglichst effektiv gegen mögliche Angriffe abzusichern. Da Software aber in der Regel stetig erweitert wird und regelmäßig neue Schwachstellen in gängigen Standardbibliotheken gefunden werden (Stichwort: Log4Shell), genügt eine einmalige Absicherung der entwickelten Software nicht! Das Thema Sicherheit muss fest im Entwicklungsprozess verankert und kontinuierlich betrachtet werden. Doch wie geht man hierbei vor, wenn man selbst keine erweiterten Sicherheitskenntnisse besitzt?

Auch ohne selbst Cybersecurity-Experte zu sein, kann man einige Maßnahmen ergreifen, um eine Applikation gegen Angriffe zu stärken und es potentiellen Angreifern schwerer zu machen. Ein gewisser Grad an Einarbeitung in die Thematik ist aber leider dennoch notwendig, denn am besten lassen sich Schwachstellen beheben, wenn man sich dieser bewusst ist und deren Funktionsweise versteht.

Im Kontext der Absicherung einer Webapplikation stellen sich daher folgende Fragen:

  1. Was sind die kritischsten Risiken/Schwachstellen, gegen die eine Applikation abgesichert werden sollte?
  2. Für welche Risiken/Schwachstellen ist die Applikation anfällig?
  3. Wie können die identifizierten Risiken/Schwachstellen ausgenutzt werden?
  4. Wie kann eine Applikation gegen bestehende Risiken/Schwachstellen abgesichert werden bzw. welche Gegenmaßnahmen gibt es?

Die Antworten auf die o.g. Fragen sind leider nicht so kurz, wie die Fragen selbst und auch die Beantwortung ist nicht trivial. Mit dem Open Web Application Security Project (kurz: OWASP, https://owasp.org/) gibt es glücklicherweise jedoch eine Initiative zur Förderung der Sicherheit, insbesondere von Webapplikationen, die einen ganzen Katalog frei zugänglicher Dokumente und Werkzeuge zu sicherheitsrelevanten Themen bereitstellt. Für die Beantwortung der o.g. Fragen ist OWASP daher eine empfehlenswerte Anlaufstelle.

Was sind die kritischsten Risiken/Schwachstellen, gegen die eine Applikation abgesichert werden sollte?

Ein sehr bekanntes OWASP-Projekt sind die OWASP Top Ten, eine Liste der gängigsten Sicherheitsrisiken von Webapplikationen. Die Liste wird alle paar Jahre aktualisiert, um neue Entwicklungen zu berücksichtigen. Die Absicherung einer Webapplikation, gegen die in der Liste aufgeführten Risiken, sollte als Mindestmaß an Sicherheit angestrebt werden. Jeder Softwareentwickler sollte mit den in der Liste aufgeführten Sicherheitsrisiken zumindest im Ansatz vertraut sein, da diese die weitverbreitetsten Einfallstore darstellen.

Für welche Risiken/Schwachstellen ist die Applikation anfällig?

Eine Applikation sollte zumindest auf die in den OWASP Top Ten gelisteten Risiken geprüft und bestehende Verwundbarkeiten behoben werden. Welche konkreten Schwachstellen eine Applikation beinhaltet, ist jedoch nicht aus dem Stehgreif zu beantworten. Gerade für Laien ist eine manuelle Analyse nicht ohne weiteres durchführbar. Es gibt jedoch entsprechende Tools, die bei der Schwachstellensuche unterstützen und dazu noch in die CI/CD-Pipeline integrierbar sind. Zumindest eine rudimentäre Schwachstellensuche kann somit leicht automatisiert werden.

Ein weit verbreitetes OWASP Tool in diesem Kontext ist Dependency-Check, welches alle Abhängigkeiten eines Softwareprojekts (direkte als auch transitive) mit öffentlich verfügbaren Schwachstellen-Datenbanken abgleicht und die Ergebnisse in einem Report zusammenfasst. Das Tool kann beispielsweise als Gradle-, Maven-, Jenkins- oder Sonarqube-Plugin in den Buildprozess integriert werden. Hervorzuheben ist hierbei das Sonarqube-Plugin, welches automatisch entsprechende Security-Issues aus den Analyseergebnissen generiert.

Etwas umfangreicher als Dependency-Check ist Dependency-Track, welches als eigenständige Plattform betrieben wird und Softwareprojekte anhand zuvor erstellter SBOMs (Software Bill of Material) auf bekannte Schwachstellen und Lizenzprobleme hin untersucht. Im Unterschied zu Dependency-Check kann Dependency-Track neben eingebundenen Softwarebibliotheken auch weitere Projektkomponenten (z.B.: externe Services, Hardwarekomponenten, Betriebssysteme) analysieren. Darüber hinaus bietet die Applikation ein Dashboard, welches eine Gesamtübersicht aller analysierten Projekte bereitstellt. Werden Sicherheitslücken veröffentlicht und von Dependency-Track in den untersuchten Applikationen gefunden, können projektspezifische Nachrichten via Mail oder einer Groupware (z.B. Slack oder Teams) an die Projektbeteiligten verschickt werden. Dependency-Track ermöglicht somit eine zentrale Komponentenanalyse des gesamten Software-Portfolios eines Unternehmens. Beim Bekanntwerden einer Sicherheitslücke in Standardbibliotheken, wie z.B. im Fall von Log4Shell, können somit umgehend alle Programme/Softwareprojekte im Unternehmen identifiziert werden, die von dieser betroffen sind.

Für die Erkennung von Sicherheitsproblemen mithilfe von Dependency-Check und Dependency-Track müssen die entsprechenden Sicherheitslücken bereits entdeckt und in eine Schwachstellendatenbank eingepflegt worden sein. Schwachstellen, die der eigene Programmcode beinhaltet, können mit diesen Lösungen hingegen nicht gefunden werden. Hierfür bedarf es insbesondere dynamischer Tests der zu analysierenden Software, oder anders formuliert: Penetrationstests. Zwar kann man einen professionellen Penetrationstest als Laie nicht selbst durchführen, aber mithilfe eines geeigneten Schwachstellenscanners kann zumindest eine grundlegende Schwachstellenüberprüfung durchgeführt werden.

OWASP stellt hierfür die frei nutzbare Software ZAP (Zed Attack Proxy) bereit, die eine Webapplikation über passive und aktive Scans auf potentielle Schwachstellen hin untersucht und diese auflistet bzw. darüber hinaus auch weiterführende Aktionen bereitstellt. Doch Vorsicht:
Die Bezeichnung „Scan“ täuscht in diesem Kontext leicht darüber hinweg, dass die Applikation und bei unsachgemäßer Verwendung auch von ihr eingebundene Drittsoftware aktiv angegriffen werden (beispielsweise via CDN eingebundene JavaScript-Bibliotheken). Entsprechend vorsichtig sollte man bei der Verwendung derartiger Software sein und sorgfältig sicherstellen, dass keine unbeabsichtigten Ziele attackiert werden. Der betriebliche Einsatz solcher Programme sollte zudem mit dem/der Vorgesetzten bzw. der Geschäftsführung abgesprochen und geprüft werden. Unter Berücksichtigung der o.g. Punkte bieten Tools wie ZAP jedoch einen guten Überblick über den sicherheitstechnischen Zustand der analysierten Software und können zumindest besonders offensichtliche Schwachstellen erkennen.

Wie können die identifizierten Risiken/Schwachstellen ausgenutzt werden?

Aufspüren und Beheben von Sicherheitslücken gestalten sich einfacher, wenn man mit diesen vertraut ist und deren Funktionsweise versteht. Hierzu kann man sich einmal selbst in die Rolle eines Hackers versetzen und versuchen eine Applikation anzugreifen. OWASP bietet dazu mit dem Juice Shop eine Lösung, die im lokalen Netzwerk betrieben werden und somit legal und ohne strafrechtliche Konsequenzen als Ziel dienen kann.
Der Juice Shop, zu Deutsch „Saftladen“, ist ein fiktiver Online-Shop, der mit zahlreichen Sicherheitslücken gespickt ist, die angegriffen werden können. Beim erfolgreichen Ausnutzen einer Schwachstelle erkennt das Programm dies und gibt eine entsprechende Erfolgsmeldung aus. Auf einem Score-Board, welches alle eingebauten Hacking-Herausforderungen nach ihrem Schwierigkeitsgrad sortiert auflistet und die bereits gelösten markiert, kann man seinen Fortschritt tracken. Hierdurch kann man sich nach und nach an die schwierigeren Aufgaben herantasten. Für den leichteren Einstieg bietet die Applikation interaktive Tutorials, um die ersten Angriffe durchzuführen. Weiterhin gibt es für einige Herausforderungen sogenannte Coding-Challenges, bei denen der für eine Schwachstelle verantwortliche Code gefunden und gefixt werden muss.

Wie kann eine Applikation gegen bestehende Risiken/Schwachstellen abgesichert werden bzw. welche Gegenmaßnahmen gibt es?

Das übergeordnete Ziel ist die Behebung von Sicherheitslücken in der eigenen Software, das Schreiben von sichererem Code und die Stärkung des Bewusstseins für sicherheitsrelevante Themen. Viele Sicherheitsmaßnahmen werden dabei bereits über geeignete Bibliotheken in die eigene Software integriert, sodass man sich nicht um alles selbst kümmern muss. Ein gutes Beispiel hierfür ist im Java-Umfeld Spring-Security. Für viele Risiken bietet OWASP aber auch sogenannte Cheatsheets, die einen groben Überblick über die Funktionsweise einer Sicherheitslücke, Tipps zur Erkennung der Anfälligkeit einer Software für diese sowie Hinweise zur Implementierung entsprechender Gegenmaßnahmen bieten. Für viele der identifizierten Sicherheitsmängel einer Applikation sollten sich hier entsprechende Hilfestellungen zu deren Behebung finden.

Fazit

Das Erstellen sicherer Software sollte mit Blick auf die zunehmenden Bedrohungen im Cyberraum eine zentralere Bedeutung erfahren, als dies aktuell der Fall ist. Sicherheitslücken in der eigenen Applikation zu finden und entsprechende Gegenmaßnahmen zu implementieren stellt jedoch eine große Herausforderung dar, wenn man selbst kein Sicherheitsexperte ist. Ein grundlegendes Bewusstsein für sicherheitsrelevante Themen sollten jedoch alle EntwicklerInnen besitzen. Mit den von OWASP bereitgestellten Tools und Dokumenten können einige Sicherheitslücken bereits mit überschaubarem Aufwand gefunden und behoben sowie der Einstieg in sicherheitsrelevante Themen erleichtert werden.


Sicherheit hat auch bei Daten und Informationen Vorfahrt

Von Tobias Brüggentisch | 30.09.2022
Tobias Brüggentisch

Softwareentwicklung