OWASP Top 10 erklärt mit praktischen Beispielen
Als Webentwickler haben Sie wahrscheinlich schon von den OWASP Top 10 gehört – der Liste der kritischsten Sicherheitsrisiken für Webanwendungen. Aber wissen Sie, wie sich diese Risiken in echtem Code manifestieren? In diesem Artikel gehen wir jeden der OWASP Top 10 (Ausgabe 2021) mit praktischen Beispielen und konkreten Abwehrmaßnahmen durch. Am Ende werden Sie in der Lage sein, diese Schwachstellen in Ihren eigenen Projekten zu erkennen und zu beheben.
1. Broken Access Control
Broken Access Control tritt auf, wenn Benutzer außerhalb ihrer vorgesehenen Berechtigungen handeln können. Zum Beispiel könnte ein Benutzer auf die Daten eines anderen Benutzers zugreifen, indem er einen URL-Parameter ändert.
Beispiel: Eine Web-App ruft Benutzerdaten über /api/users/123 ab. Wenn nicht überprüft wird, ob der angemeldete Benutzer 123 ist, kann ein Angreifer einfach die ID ändern, um auf die Daten anderer zuzugreifen.
Abwehr: Implementieren Sie ordnungsgemäße Autorisierungsprüfungen bei jeder Anfrage. Verwenden Sie rollenbasierte Zugriffskontrolle (RBAC) und validieren Sie Berechtigungen serverseitig.
2. Kryptografische Fehler
Diese Kategorie (früher „Sensitive Data Exposure“) umfasst Fehler im Zusammenhang mit Kryptografie, wie die Übertragung von Daten im Klartext oder die Verwendung schwacher Algorithmen.
Beispiel: Speichern von Passwörtern mit MD5 oder SHA-1 ohne Salt. Angreifer können diese Hashes leicht knacken.
Abwehr: Verwenden Sie starke, adaptive Hashing-Algorithmen wie bcrypt, scrypt oder Argon2. Erzwingen Sie immer HTTPS.
3. Injection
Injection-Schwachstellen, wie SQL-, NoSQL-, OS- und LDAP-Injection, treten auf, wenn nicht vertrauenswürdige Daten als Teil eines Befehls oder einer Abfrage an einen Interpreter gesendet werden.
Beispiel: Ein Anmeldeformular, das Benutzereingaben in eine SQL-Abfrage einfügt:
SELECT * FROM users WHERE username = '" + username + "' AND password = '" + password + "'
Ein Angreifer könnte ' OR '1'='1 eingeben, um die Authentifizierung zu umgehen.
Abwehr: Verwenden Sie parametrisierte Abfragen oder Prepared Statements. Verketten Sie niemals Benutzereingaben in Abfragen.
4. Unsicheres Design
Unsicheres Design bezieht sich auf Fehler in der Architektur und im Design einer Anwendung, nicht nur auf Implementierungsfehler.
Beispiel: Eine Passwort-Reset-Funktion, die Sicherheitsfragen mit leicht erratbaren Antworten verwendet oder keine Ratenbegrenzung hat.
Abwehr: Threat Modeling während des Designs, verwenden Sie sichere Designmuster und implementieren Sie Ratenbegrenzung und Kontosperrung.
5. Security Misconfiguration
Dies umfasst Standardkonten, ungenutzte Seiten, ungepatchte Fehler, ungeschützte Dateien und Verzeichnisse und mehr.
Beispiel: Aktiviertes Verzeichnis-Listing auf einem Nginx-Server, das sensible Dateien offenlegt.
Abwehr: Härten Sie Ihre Konfigurationen: Deaktivieren Sie Verzeichnis-Listing, entfernen Sie Standardkonten, halten Sie Software aktuell und verwenden Sie Sicherheitsheader.
6. Verwundbare und veraltete Komponenten
Die Verwendung von Komponenten mit bekannten Schwachstellen kann Ihre gesamte Anwendung kompromittieren.
Beispiel: Verwendung einer alten Version einer JavaScript-Bibliothek wie lodash mit einer bekannten Prototype-Pollution-Schwachstelle.
Abwehr: Scannen Sie Abhängigkeiten regelmäßig (z. B. mit npm audit, OWASP Dependency-Check) und aktualisieren Sie sie.
7. Identifikations- und Authentifizierungsfehler
Diese Fehler ermöglichen es Angreifern, Passwörter, Schlüssel oder Sitzungstoken zu kompromittieren oder andere Implementierungsfehler auszunutzen, um die Identität anderer Benutzer anzunehmen.
Beispiel: Zulassen schwacher Passwörter wie „123456“ oder Nichtimplementierung der Multi-Faktor-Authentifizierung (MFA).
Abwehr: Erzwingen Sie starke Passwortrichtlinien, implementieren Sie MFA und verwenden Sie sicheres Sitzungsmanagement.
8. Fehler bei der Software- und Datenintegrität
Diese Kategorie konzentriert sich auf Annahmen über Software-Updates, kritische Daten und CI/CD-Pipelines, ohne die Integrität zu überprüfen.
Beispiel: Herunterladen und Ausführen von Binärdateien aus nicht vertrauenswürdigen Quellen, ohne Signaturen zu prüfen.
Abwehr: Verwenden Sie digitale Signaturen, überprüfen Sie Checksummen und sichern Sie Ihre CI/CD-Pipeline.
9. Fehler beim Sicherheits-Logging und -Monitoring
Unzureichendes Logging und Monitoring ermöglicht es Angreifern, zu persistieren, zu pivotieren und den Zugriff aufrechtzuerhalten.
Beispiel: Nicht protokollieren fehlgeschlagener Anmeldeversuche, wodurch Brute-Force-Angriffe unentdeckt bleiben.
Abwehr: Protokollieren Sie sicherheitsrelevante Ereignisse, richten Sie Alarme für verdächtige Aktivitäten ein und überprüfen Sie regelmäßig die Protokolle.
10. Server-Side Request Forgery (SSRF)
SSRF-Schwachstellen treten auf, wenn eine Webanwendung eine entfernte Ressource abruft, ohne die vom Benutzer bereitgestellte URL zu validieren.
Beispiel: Eine Webhook-Funktion, die eine vom Benutzer bereitgestellte URL abruft. Ein Angreifer könnte den Server dazu bringen, interne Ressourcen wie http://169.254.169.254/latest/meta-data/ auf AWS anzufordern.
Abwehr: Validieren und bereinigen Sie URLs, verwenden Sie Allowlists und beschränken Sie ausgehenden Datenverkehr.
Praktische Schritte zur Minderung der OWASP Top 10
- Zugriffskontrolle implementieren: Erzwingen Sie Autorisierungsprüfungen bei jeder Anfrage, serverseitig.
- Sichere Kryptografie verwenden: Hashen Sie Passwörter mit bcrypt/Argon2, erzwingen Sie HTTPS.
- Injection verhindern: Verwenden Sie parametrisierte Abfragen und escapen Sie Ausgaben.
- Sicher designen: Threat Modeling, verwenden Sie sichere Muster und Ratenbegrenzung.
- Konfigurationen härten: Deaktivieren Sie ungenutzte Funktionen, halten Sie Software aktuell, setzen Sie Sicherheitsheader.
- Abhängigkeiten verwalten: Scannen und aktualisieren Sie Komponenten regelmäßig.
- Authentifizierung stärken: Erzwingen Sie starke Passwörter, implementieren Sie MFA.
- Integrität überprüfen: Verwenden Sie Signaturen und sichere CI/CD.
- Loggen und überwachen: Protokollieren Sie Sicherheitsereignisse, richten Sie Alarme ein.
- SSRF verhindern: Validieren Sie URLs, verwenden Sie Allowlists, beschränken Sie ausgehenden Datenverkehr.
FAQ
Was sind die OWASP Top 10?
Die OWASP Top 10 sind eine regelmäßig aktualisierte Liste der kritischsten Sicherheitsrisiken für Webanwendungen, die vom Open Web Application Security Project (OWASP) veröffentlicht wird. Sie dient Entwicklern als Grundlage für die Absicherung ihrer Anwendungen.
Wie oft werden die OWASP Top 10 aktualisiert?
Sie werden etwa alle drei bis vier Jahre aktualisiert. Die neueste Version ist von 2021, die vorherige von 2017.
Kann ich mich für die Sicherheit ausschließlich auf die OWASP Top 10 verlassen?
Nein, sie sind ein Ausgangspunkt. Sie sollten auch andere Ressourcen wie den OWASP Application Security Verification Standard (ASVS) berücksichtigen und regelmäßige Sicherheitstests durchführen.
Möchten Sie Ihre Nginx-Logs schnell auf verdächtige Aktivitäten analysieren? Probieren Sie unseren Nginx Log Analyzer, um potenzielle Angriffe zu identifizieren und die Sicherheit Ihres Webservers zu überwachen.