Skip to content
IRC-CodingIRC-Coding
Security TestingSicherheitstestsOWASPPenetration TestingSASTDASTSCAZAPSonarQube

Security Testing: Sicherheitslücken früh erkennen und schließen

Lerne Security Testing kennen: OWASP, Pentests, SAST, DAST, SCA, Werkzeuge und Best Practices für sichere Software.

S

schutzgeist

9 min read
Security Testing: Sicherheitslücken früh erkennen und schließen

Security Testing

Security Testing identifiziert Sicherheitslücken und Schwachstellen in Software. Ziel ist es, Angriffe zu verhindern, Daten zu schützen und die Vertraulichkeit, Integrität und Verfügbarkeit von Systemen sicherzustellen.

In a Nutshell

  • Security Testing findet Sicherheitslücken.
  • Es umfasst SAST, DAST, SCA, Pentests und manuelle Reviews.
  • OWASP Top 10 sind häufige Schwachstellen.
  • Sicherheitstests sollten in der Pipeline integriert sein.

Arten von Security Tests

SAST (Static Application Security Testing)

SAST analysiert den Quellcode, ohne die Anwendung auszuführen. Es sucht nach bekannten Mustern wie SQL-Injection, unsicheren Kryptografieeinsatz oder hartcodierten Secrets. Der Vorteil liegt in der frühen Erkennung im Entwicklungsprozess, bevor der Code überhaupt läuft. SAST wird typischerweise in der IDE oder bei jedem Commit ausgeführt. Nachteilig sind False Positives und die Unfähigkeit, Laufzeitprobleme zu erkennen.

DAST (Dynamic Application Security Testing)

DAST testet die laufende Anwendung aus der Außenperspektive. Es simuliert Angriffe wie ein externer Angreifer und untersucht HTTP-Anfragen, Sessions, Formulare und APIs. DAST findet Konfigurationsfehler und Laufzeitprobleme, die SAST nicht sehen kann. Es wird oft gegen Staging- oder Testumgebungen eingesetzt. Der Nachteil ist, dass es erst spät im Zyklus greift und keine Codezeile identifiziert.

SCA (Software Composition Analysis)

SCA untersucht eingebundene Bibliotheken, Frameworks und Container-Images auf bekannte Schwachstellen. Moderne Software besteht zu großen Teilen aus Fremdcode, daher ist SCA essenziell. Es vergleicht Abhängigkeiten mit Datenbanken wie NVD oder OSV. SCA wird bei jedem Pull Request ausgeführt und blockiert bei kritischen CVEs. Es schützt vor Supply-Chain-Angriffen und veralteten Komponenten.

Pentest (Penetration Testing)

Ein Pentest ist ein gezielter, simulierter Angriff durch erfahrene Sicherheitsexperten. Er kombiniert automatisierte Tools mit manuellem Vorgehen und kreativer Denkweise. Pentests finden komplexe Schwachstellen, die automatisierte Scanner übersehen. Sie werden oft vor Major Releases oder bei Compliance-Anforderungen durchgeführt. Pentests sind zeit- und kostenintensiv, liefern aber realistische Ergebnisse.

Fuzzing

Fuzzing füttert die Anwendung mit unerwarteten, zufälligen oder ungültigen Eingaben. Ziel ist es, Abstürze, Speicherfehler oder unerwartetes Verhalten zu finden. Fuzzing wird häufig bei Netzwerkprotokollen, Dateiparsern oder APIs eingesetzt. Es kann automatisch Schwachstellen finden, die sonst nur durch gezielte Angriffe entdeckt werden.

Security Review

Ein Security Review ist eine manuelle Überprüfung von Architektur, Code oder Prozessen durch erfahrene Entwickler oder Sicherheitsexperten. Es ergänzt automatisierte Tests, da es Designfehler, logische Lücken und Geschäftsprozess-Schwächen erkennen kann. Reviews sind besonders wertvoll für kritische Bereiche wie Authentifizierung, Autorisierung oder Zahlungsabwicklungen.

OWASP Top 10

1. Injection

Injection-Angriffe entstehen, wenn nicht vertrauenswürdige Daten als Befehle oder Abfragen an einen Interpreter weitergegeben werden. SQL-Injection ist die bekannteste Form, aber auch Command Injection, LDAP-Injection oder NoSQL-Injection sind verbreitet. Die Abwehr erfolgt durch parametrierte Abfragen, Input-Validierung und Escaping. Injection war lange Zeit die gefährlichste Schwachstelle in Webanwendungen.

2. Broken Authentication

Broken Authentication umfasst Schwachstellen bei Anmeldung, Session-Management und Passwort-Recovery. Beispiele sind schwache Passwortregeln, fehlende Rate-Limiting, unsichere Session-Token oder keine Multi-Faktor-Authentifizierung. Angreifer können so Konten übernehmen oder sich als andere Nutzer ausgeben. Abhilfe schaffen sichere Passwortrichtlinien, MFA, sichere Sessions und Brute-Force-Schutz.

3. Sensitive Data Exposure

Diese Kategorie beschreibt das unzureichende Schützen sensibler Daten wie Passwörter, Kreditkartennummern oder Gesundheitsdaten. Daten werden oft unverschlüsselt übertragen, schwach gehasht gespeichert oder ungeschützt im Cache abgelegt. Abhilfe bieten TLS, starke Verschlüsselung, sicheres Hashing und Datenminimierung.

4. XML External Entities (XXE)

XXE-Angriffe nutzen unsichere XML-Parser aus, die externe Entitäten laden. Angreifer können so Dateien lesen, Server Side Request Forgery durchführen oder Denial-of-Service-Angriffe starten. Die beste Abwehr ist die Deaktivierung externer DTDs und der Einsatz von weniger komplexen Datenformaten wie JSON.

5. Broken Access Control

Broken Access Control liegt vor, wenn Nutzer Aktionen oder Daten sehen können, für die sie nicht autorisiert sind. Beispiele sind direkte Objektreferenzen, fehlende Rechteprüfungen oder manipulierte URLs. Abhilfe schafft eine zentrale, serverseitige Zugriffskontrolle, die jede Anfrage überprüft und keine Annahmen über den Client macht.

6. Security Misconfiguration

Security Misconfiguration ist die häufigste Schwachstelle. Sie umfasst Standardpasswörter, unnötige Features, offene Ports, fehlende Security-Header, veraltete Software oder zu großzügige CORS-Konfigurationen. Regelmäßige Härtung, Automatisierung und Checklisten helfen, diese Fehler zu vermeiden.

7. Cross-Site Scripting (XSS)

XSS ermöglicht das Einschleusen von clientseitigem Skriptcode in Webseiten. Reflected XSS, Stored XSS und DOM-Based XSS sind die drei Hauptformen. Angreifer können so Cookies stehlen, Sessions übernehmen oder Phishing-Angriffe durchführen. Abhilfe bieten Output-Encoding, Content Security Policy, HttpOnly-Cookies und Input-Validierung.

8. Insecure Deserialization

Insecure Deserialization tritt auf, wenn nicht vertrauenswürdige Daten deserialisiert werden. Angreifer können Objekte manipulieren, um Remote Code Execution, Rechteausweitung oder Datenmanipulation zu erreichen. Abhilfe schaffen die Verwendung sicherer Datenformate, Signierung von serialisierten Daten oder die Vermeidung von Deserialisierung unsicherer Eingaben.

9. Using Components with Known Vulnerabilities

Moderne Anwendungen nutzen Dutzende Bibliotheken und Frameworks. Veraltete oder verwundbare Komponenten sind ein häufiger Einfallstor für Angriffe. SCA, regelmäßige Updates, Dependency-Management und minimale Abhängigkeiten reduzieren das Risiko. Diese Kategorie ist eng mit Supply-Chain-Sicherheit verbunden.

10. Insufficient Logging and Monitoring

Ohne ausreichendes Logging und Monitoring bleiben Angriffe lange unentdeckt. Fehlende Logs, unzureichende Alerts oder keine Incident-Response ermöglichen es Angreifern, sich auszubreiten. Wichtig sind zentrale Logs, sinnvolle Events, Alarme bei Anomalien und regelmäßige Reviews.

Wichtige Werkzeuge

OWASP ZAP

OWASP ZAP ist ein kostenloser, Open-Source Web-Application-Security-Scanner. Er kann als Proxy zwischen Browser und Anwendung eingesetzt werden und automatisiert viele gängige Angriffe. ZAP eignet sich besonders für DAST und wird oft in Staging-Umgebungen oder in der Entwicklung genutzt. Er ist eine gute Einstiegslösung für automatisierte Web-Sicherheitstests.

SonarQube

SonarQube ist eine Plattform für statische Code-Analyse. Neben Code-Qualität bietet es Security-Regeln für SAST. Es erkennt SQL-Injection, XSS, hartcodierte Secrets und viele weitere Probleme direkt im Quellcode. SonarQube lässt sich gut in CI/CD-Pipelines integrieren und ist für viele Programmiersprachen verfügbar.

Snyk

Snyk spezialisiert sich auf SCA, Container-Sicherheit und Infrastructure-as-Code. Es identifiziert verwundbare Abhängigkeiten, schlägt Updates vor und kann Pull Requests automatisch erstellen. Snyk ist besonders nützlich in modernen Cloud-nativen Projekten mit vielen Bibliotheken und Containern.

Burp Suite

Burp Suite ist eine professionelle Pentest-Plattform. Sie bietet einen Proxy, Scanner, Repeater, Intruder und viele weitere Tools für manuelle und halbautomatisierte Tests. Burp Suite ist der De-facto-Standard für Web-Pentester und erlaubt tiefgehende Analysen, die automatisierte Tools nicht leisten können.

Nmap

Nmap ist ein Netzwerk-Scanner zur Erkennung offener Ports, Dienste und Betriebssysteme. Er wird oft in der Reconnaissance-Phase von Pentests eingesetzt. Nmap hilft, die Angriffsfläche eines Servers zu verstehen und unnötig exponierte Dienste zu identifizieren.

Weitere Werkzeuge

  • Trivy: Scanner für Container und Repositories.
  • Bandit: SAST für Python.
  • Semgrep: Leichtgewichtige statische Analyse für viele Sprachen.
  • Dependency-Check: OWASP-Tool zur Prüfung von Abhängigkeiten.

Praxisbeispiel

Die folgende Pipeline zeigt, wie verschiedene Security-Testarten sinnvoll in den Software-Lebenszyklus integriert werden können. Dieses Beispiel ist gewählt, weil moderne Sicherheit nicht auf einen einzelnen Test beschränkt bleiben darf: Jede Testart deckt unterschiedliche Schwachstellen zu unterschiedlichen Zeitpunkten ab. Die Reihenfolge ist bewusst so gewählt, dass frühe, schnelle Tests häufig laufen und teure, manuelle Tests auf wichtige Meilensteine begrenzt bleiben.

Pipeline-Integration:
1. SAST bei jedem Commit
2. SCA bei jedem Pull Request
3. DAST gegen Staging
4. Pentest vor jedem Major Release
5. Security Monitoring in Produktion

Warum diese Reihenfolge?

  • SAST bei jedem Commit: Frühes Feedback, niedrige Kosten, direkte Integration in den Entwicklungsworkflow.
  • SCA bei jedem Pull Request: Fremdcode ändert sich ständig, daher wird bei jeder Integration geprüft.
  • DAST gegen Staging: Die Anwendung muss laufen, daher kommt DAST erst in der Staging-Phase.
  • Pentest vor Major Releases: Manuell und teuer, aber nötig für komplexe, logische Schwachstellen.
  • Security Monitoring in Produktion: Auch nach dem Release müssen Angriffe und Anomalien erkannt werden.

Diese Kombination folgt dem Shift-Left-Prinzip: Sicherheitsprobleme werden so früh wie möglich und so spät wie nötig erkannt.

Vorteile und Nachteile

VorteileNachteile
Frühe Erkennung von SchwachstellenFalse Positives bei automatischen Tools
Reduzierung von SicherheitsrisikenPentests sind teuer und zeitaufwendig
Erfüllung von Compliance-AnforderungenSicherheitstests ersetzen kein sicheres Design
Schutz von Daten und NutzernLaufende Pflege der Regeln nötig
Bessere Reputation und VertrauenTestumgebungen müssen produktionsnah sein
Kosten sparen durch frühe FehlerfindungSpezialisiertes Know-how erforderlich

Prüfungsrelevante Stichpunkte

  • Security Testing: Oberbegriff für alle Tests, die Sicherheitslücken und Schwachstellen finden.
  • SAST: Statische Analyse des Quellcodes, früh im Zyklus, findet Code-Muster, keine Laufzeitprüfung.
  • DAST: Dynamische Analyse laufender Anwendungen aus Außensicht, findet Konfigurationsfehler.
  • SCA: Analyse von Abhängigkeiten auf bekannte Schwachstellen und Lizenzrisiken.
  • Pentest: Simulierter Angriff durch Experten, findet komplexe, logische Schwachstellen.
  • Fuzzing: Testen mit unerwarteten Eingaben, um Abstürze und Schwachstellen zu finden.
  • Security Review: Manuelle Überprüfung von Architektur, Code und Prozessen.
  • OWASP Top 10: Die zehn wichtigsten Web-Sicherheitsrisiken, die in Prüfungen häufig abgefragt werden.
  • Wichtige Werkzeuge: OWASP ZAP, SonarQube, Snyk, Burp Suite, Nmap.
  • Shift Left Security: Sicherheitsprüfungen so früh wie möglich in die Pipeline integrieren.
  • Defense in Depth: Mehrere Sicherheitsschichten statt einer einzelnen Maßnahme.
  • Compliance: Sicherheitstests sind oft Voraussetzung für Normen und Regulierungen.
  • False Positives: Automatisierte Tools können Fehlalarme erzeugen, die manuell geprüft werden müssen.
  • Supply-Chain-Sicherheit: Schutz vor verwundbaren oder bösartigen Abhängigkeiten.

Wichtigste Quellen

  1. https://owasp.org/www-project-top-ten/
  2. https://owasp.org/www-project-zap/
  3. https://en.wikipedia.org/wiki/Security_testing

Häufig gestellte Fragen

Was ist Security Testing und warum ist es wichtig?

Security Testing ist der gezielte Prozess zum Auffinden von Sicherheitslücken und Schwachstellen in Software. Es ist wichtig, weil es Angriffe verhindert, Daten schützt, Compliance erfüllt und das Vertrauen der Nutzer stärkt.

Was ist SAST und wann wird es eingesetzt?

SAST steht für Static Application Security Testing. Es analysiert den Quellcode ohne Ausführung der Anwendung und wird meist bei jedem Commit oder in der IDE eingesetzt, um Schwachstellen früh zu finden.

Was ist der Unterschied zwischen SAST und DAST?

SAST analysiert den Quellcode statisch und kommt früh im Zyklus zum Einsatz. DAST testet die laufende Anwendung aus der Außenperspektive und findet Laufzeit- sowie Konfigurationsprobleme.

Was ist SCA und was prüft es?

SCA steht für Software Composition Analysis. Es prüft eingebundene Bibliotheken, Frameworks und Container auf bekannte Schwachstellen und hilft, Supply-Chain-Risiken zu reduzieren.

Was ist ein Pentest und was macht ihn besonders?

Ein Pentest ist ein simulierter Angriff durch Sicherheitsexperten. Er ist besonders, weil er komplexe, logische Schwachstellen findet, die automatisierte Tools nicht erkennen.

Was ist Fuzzing und wo wird es eingesetzt?

Fuzzing testet Anwendungen mit unerwarteten, zufälligen oder ungültigen Eingaben. Es wird häufig bei APIs, Dateiparsern, Netzwerkprotokollen und Systemkomponenten eingesetzt, um Abstürze und Schwachstellen zu finden.

Was ist die OWASP Top 10?

Die OWASP Top 10 ist eine Liste der zehn kritischsten Sicherheitsrisiken für Webanwendungen. Sie dient als Orientierung für Entwickler, Tester und Sicherheitsverantwortliche.

Welche Tools werden für Security Testing genutzt?

Häufig genutzte Tools sind OWASP ZAP für DAST, SonarQube für SAST, Snyk für SCA, Burp Suite für Pentests und Nmap für Netzwerk-Scanning.

Was ist SQL Injection und wie wird sie verhindert?

SQL Injection ist das Einschleusen von SQL-Code über Eingaben, um Datenbanken zu manipulieren. Verhindert wird sie durch parametrierte Abfragen, ORMs und strikte Input-Validierung.

Was ist Cross-Site Scripting und welche Arten gibt es?

Cross-Site Scripting ermöglicht das Einschleusen von clientseitigem Code in Webseiten. Die Hauptarten sind Reflected XSS, Stored XSS und DOM-Based XSS.

Was ist ein False Positive?

Eine gemeldete Schwachstelle, die in Wirklichkeit keine ist. Sie erfordert manuelle Prüfung.

Was ist Broken Authentication?

Schwachstelle bei Anmeldung, Session-Management oder Passwort-Wiederherstellung.

Was ist Broken Access Control?

Fehler, bei dem Nutzer unberechtigt Daten oder Aktionen sehen können.

Warum reicht Security Testing allein nicht?

Weil sicheres Design und Entwicklungspraktiken ebenfalls nötig sind.

Was ist Shift Left Security?

Sicherheitsprüfungen so früh wie möglich in den Prozess integrieren.

Was ist ein Security Review?

Manuelle Überprüfung von Architektur, Code oder Prozessen durch Experten.

Was ist Sensitive Data Exposure?

Unzureichendes Schützen sensibler Daten wie Passwörter oder Kreditkartendaten.

Was ist Security Misconfiguration?

Standardpasswörter, offene Ports, fehlende Header oder veraltete Software.

Was ist ein XXE-Angriff?

XML External Entity Angriff nutzt unsichere XML-Parser aus, um Dateien zu lesen oder SSRF durchzuführen.

Was ist Insecure Deserialization?

Deserialisierung nicht vertrauenswürdiger Daten, die zu Code Execution oder Rechteausweitung führen kann.

Weiter im Software Testing Lernpfad

Alle Software Testing Artikel sind nun vollständig. Zurück zum ersten Artikel: Software Testing Grundlagen: Unit, Integration, E2E Tests, TDD, BDD.

Zurück zum DEV Blog
Share:

Ähnliche Beiträge