Automatisierte Security-Tests innerhalb der Continuous-Integration-Pipeline

Die Anzahl der Angriffe auf unsichere Webanwendungen steigt stetig. Daher lohnt ein Blick darauf, wie sich Sicherheitslücken automatisiert in Anwendungen finden lassen, bevor die Software veröffentlicht wird.

In Pocket speichern vorlesen Druckansicht 1 Kommentar lesen
Automatisierte Security-Tests innerhalb der Continuous-Integration-Pipeline
Lesezeit: 18 Min.
Von
  • Benjamin Schnarr
  • Andreas Vetterlein
  • Shushant Kakkar
Inhaltsverzeichnis

Es ist das Jahr von Spectre und Meltdown – Angriffsszenarien, die in der Vergangenheit tausende Systeme durch das gezielte Ausnutzen von Sicherheitslücken erfolgreich attackiert haben. Häufig nutzen Angriffe Sicherheitslücken auf Hardware-, Netzwerk- oder Betriebssystemebene aus, um unautorisierten Zugriff auf Systeme zu erlangen.

Darüber hinaus sind insbesondere Webanwendungen, wie Webshops oder Buchungssysteme, beliebte Angriffsziele, da sich oftmals durch mangelnde Sicherheitsmechanismen Kunden- und Zahlungsdaten abgreifen lassen. Für den Angriff auf Webanwendungen kommen unterschiedliche Angriffsvektoren infrage. Beliebte Methoden sind beispielsweise das Ausnutzen unzureichender Verschlüsselungsmechanismen (was die Tür für Zero Day Exploits wie Heartbleed öffnet) und browserbasierte Angriffe, beispielsweise Cross-Site-Scripting-Attacken. Frameworks wie Metasploit bieten darüber hinaus ein ganzes Set an Tools, um gängige Angriffe automatisiert durchzuführen.

Oftmals liegt der Fokus bei der Entwicklung von Webanwendungen auf neuen Features statt auf Security, sodass Sicherheitslücken zum Teil erst im produktiven Betrieb gefunden werden. Daher erhalten gezielte Analysen zum Auffinden von Sicherheitslücken einen immer größeren Stellenwert innerhalb des Softwareentwicklungsprozesses. Zur systematischen Identifikation von Sicherheitslücken in Webanwendungen kommen in der Regel statische und dynamische Anwendungsanalysen zum Einsatz.

Statische Analysen (Static Application Security Testing, kurz SAST) untersuchen den Quellcode sowie die verwendeten Frameworks, um Sicherheitslücken und Anti-Patterns innerhalb der Anwendung zu identifizieren. Insbesondere der Einsatz unsicherer Open-Source-Frameworks eröffnet zahlreiche Möglichkeiten, da oftmals Lücken einer bestimmten Framework-Version im Netz veröffentlicht sind. Durch regelmäßige statische Codeanalysen lassen sich solche Schwachstellen in der eigenen Applikation frühzeitig finden.

Dynamische Anwendungsanalysen (Dynamic Application Security Testing, kurz DAST) untersuchen darüber hinaus die jeweilige Anwendung zur Laufzeit, indem sie gezielt bösartige Anfragen zur Anwendung schicken. Die Antworten der Applikation werden dann ausgewertet, um daraus mögliche Rückschlüsse auf Sicherheitslücken zu ziehen. Dadurch lassen sich Angriffsvektoren identifizieren, die nicht direkt aus dem Quellcode ersichtlich sind.

Zur frühzeitigen Erkennung von Sicherheitslücken bietet es sich an, die jeweiligen Sicherheitsanalysen direkt in den Continuous-Integration- und Continuous-Delivery-Prozess (CI/CD) der Anwendung zu integrieren. Konkret kann das bedeuten, eingesetzte Analysetools als Build-Job innerhalb eines Build-Servers wie Jenkins oder Gitlab CI auszuführen.

Abhängig von den Analyseergebnissen ist eine regelbasierte Entscheidung darüber möglich, ob der Build-Job erfolgreich durchläuft oder aufgrund von identifizierten Sicherheitslücken als fehlerhaft markiert wird. Insbesondere die dynamischen Analysen sind hierbei von Bedeutung, da sie das konkrete Laufzeitverhalten der Anwendung fokussieren und daher die gleiche Sicht auf die Anwendung haben wie ein potenzieller Angreifer.