OWASP Top 10: Sicherheitsrisiken für Webanwendungen
Dieser Beitrag ist eine Begriffserklärung zu den OWASP Top 10 Sicherheitsrisiken – inklusive Prüfungsfragen und Tags.
In a Nutshell
Die OWASP Top 10 ist eine regelmäßig aktualisierte Liste der zehn kritischsten Sicherheitsrisiken für Webanwendungen, veröffentlicht von der OWASP-Organisation. Sie dient als branchenweiter Standard zur Sicherheitsbewertung.
Kompakte Fachbeschreibung
Die OWASP Top 10 dient als branchenweit anerkannter Standard zur Sicherheitsbewertung von Webanwendungen. Sie identifiziert die häufigsten und gravierendsten Schwachstellen basierend auf realen Angriffs- und Anwendungsdaten.
Jede Kategorie enthält Beschreibung, Risiken, Ursachen und Gegenmaßnahmen. Entwickler, Sicherheitsverantwortliche und Prüfer nutzen die Liste zur Bewertung und Absicherung von Softwareprojekten.
Die aktuelle Version (Stand 2021) enthält neue Gruppierungen wie Insecure Design oder Software and Data Integrity Failures. Die Liste gilt als Pflichtlektüre für Sicherheitsbewusstsein und sichere Softwareentwicklung.
Prüfungsrelevante Stichpunkte
- 10 häufigste Web-Sicherheitsrisiken werden kategorisiert
- Regelmäßige Updates basierend auf realen Angriffsdaten
- IHK-relevant für Softwareentwicklung und Architektur
- Sicherheitskonzepte müssen OWASP Top 10 berücksichtigen
- Grundlage für Audits und Sicherheitsrichtlinien
- Injection, XSS, Authentifizierungsfehler als Hauptgefahren
- Prävention spart hohe Folgekosten durch Exploits
- Dokumentationspflicht in Prüf- und Projektdokumentation
Kernkomponenten (OWASP Top 10 2021)
- A01 – Broken Access Control: Unzureichende Zugriffskontrolle
- A02 – Cryptographic Failures: Schwache Verschlüsselung
- A03 – Injection: SQL, OS, LDAP Injection
- A04 – Insecure Design: Mangelhafte Sicherheitsarchitektur
- A05 – Security Misconfiguration: Falsche Konfiguration
- A06 – Vulnerable Components: Verwundbare Bibliotheken
- A07 – Identification & Authentication Failures: Authentifizierungsprobleme
- A08 – Software and Data Integrity Failures: Integritätsprobleme
- A09 – Security Logging and Monitoring Failures: Mangelhaftes Logging
- A10 – Server-Side Request Forgery (SSRF): Server-seitige Anfragen
Praxisbeispiele
SQL Injection (A03)
// Verwundbarer Code
String query = "SELECT * FROM benutzer WHERE name = '" + userName + "'";
Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery(query);
// Sichere Alternative mit Prepared Statements
String query = "SELECT * FROM benutzer WHERE name = ?";
PreparedStatement stmt = connection.prepareStatement(query);
stmt.setString(1, userName);
ResultSet rs = stmt.executeQuery();
Cross-Site Scripting (A07)
// Verwundbarer Code
function zeigeNachricht(nachricht) {
document.getElementById('output').innerHTML = nachricht;
}
// Sichere Alternative
function zeigeNachricht(nachricht) {
document.getElementById('output').textContent = nachricht;
}
// Oder mit Escaping
function escapeHtml(text) {
const div = document.createElement('div');
div.textContent = text;
return div.innerHTML;
}
Broken Access Control (A01)
// Verwundbarer Code
@GetMapping("/admin/users")
public List<User> getUsers(HttpServletRequest request) {
// Keine Prüfung ob Benutzer Admin ist!
return userService.getAllUsers();
}
// Sichere Alternative
@GetMapping("/admin/users")
public List<User> getUsers(HttpServletRequest request) {
User currentUser = getCurrentUser(request);
if (!currentUser.hasRole("ADMIN")) {
throw new UnauthorizedException("Admin-Rechte erforderlich");
}
return userService.getAllUsers();
}
Gegenmaßnahmen
Allgemeine Sicherheitsprinzipien
- Defense in Depth: Mehrere Sicherheitsebenen
- Least Privilege: Minimale Rechte vergeben
- Security by Design: Sicherheit von Anfang an einplanen
- Regular Updates: Systeme und Bibliotheken aktuell halten
Spezifische Maßnahmen
- Input Validation: Alle Benutzereingaben validieren
- Output Encoding: Ausgaben korrekt escapen
- Parameterized Queries: SQL Injection verhindern
- Strong Authentication: Multi-Faktor-Authentifizierung
- HTTPS: Verschlüsselte Kommunikation erzwingen
- Security Headers: CSP, HSTS, X-Frame-Options nutzen
Vorteile und Nachteile
Vorteile von OWASP Top 10
- Bewusstsein: Sensibilisiert für Sicherheitsrisiken
- Standardisierung: Gemeinsame Sprache für Sicherheit
- Priorisierung: Fokus auf kritischste Risiken
- Praxisorientiert: Basiert auf realen Angriffsdaten
Nachteile
- Vollständigkeit: Deckt nicht alle möglichen Risiken ab
- Falsche Sicherheit: Fokus nur auf Top 10 kann andere Risiken ignorieren
- Updates: Liste kann schnell veralten
- Komplexität: Implementierung erfordert Fachwissen
Häufige Prüfungsfragen
-
Was ist OWASP und warum ist die Top 10 Liste wichtig? OWASP ist eine Organisation die sich mit Anwendungssicherheit beschäftigt. Die Top 10 Liste priorisiert die kritischsten Risiken.
-
Erklären Sie SQL Injection und wie man sie verhindert! SQL Injection ist das Einschleusen von SQL-Code über Benutzereingaben. Verhindert durch Prepared Statements und Input Validation.
-
Was ist der Unterschied zwischen XSS und CSRF? XSS (Cross-Site Scripting) führt Code im Browser des Opfers aus, CSRF (Cross-Site Request Forgery) führt Aktionen im Namen des Opfers aus.
-
Warum ist Security by Design wichtig? Sicherheit von Anfang an zu integrieren ist effektiver und kostengünstiger als nachträgliche Absicherung.
Wichtigste Quellen
- https://owasp.org/www-project-top-ten/
- https://cheatsheetseries.owasp.org/
- https://portswigger.net/web-security