OWASP Top 10 erklärt mit praktischen Beispielen
Sie haben eine Webanwendung erstellt und machen sich nun Sorgen um die Sicherheit. Die OWASP Top 10 ist die maßgebliche Liste der kritischen Sicherheitsrisiken für Webanwendungen. Aber die Liste zu lesen ist eine Sache; zu verstehen, wie sich diese Risiken in echtem Code manifestieren, eine andere. Dieser Artikel führt durch jede Kategorie der OWASP Top 10 mit praktischen Beispielen und konkreten Schritten zur Risikominderung.
1. Broken Access Control
Broken Access Control tritt auf, wenn Benutzer außerhalb ihrer vorgesehenen Berechtigungen handeln können. Beispielsweise könnte ein Benutzer auf das Konto eines anderen Benutzers zugreifen, indem er einen URL-Parameter ändert.
// Verwundbar: Keine Prüfung, ob die angeforderte Benutzer-ID dem authentifizierten Benutzer gehört
app.get('/api/user/:id', (req, res) => {
const user = getUserById(req.params.id);
res.json(user);
});
Gegenmaßnahme: Erzwingen Sie Zugriffskontrollprüfungen auf der Serverseite. Verwenden Sie rollenbasierte oder attributbasierte Zugriffskontrolle und lehnen Sie standardmäßig ab.
2. Kryptografische Fehler
Sensible Daten wie Passwörter und Kreditkartennummern müssen während der Übertragung und im Ruhezustand verschlüsselt werden. Die Verwendung schwacher Algorithmen oder das Festcodieren von Geheimnissen sind häufige Fallstricke.
# Verwundbar: Verwendung von MD5 für das Passwort-Hashing
import hashlib
hash = hashlib.md5(password.encode()).hexdigest()
Gegenmaßnahme: Verwenden Sie starke, gesalzene Hashing-Algorithmen wie bcrypt oder Argon2. Verwenden Sie immer HTTPS (TLS) für Daten während der Übertragung.
3. Injection
Injection-Schwachstellen wie SQL-Injection treten auf, wenn nicht vertrauenswürdige Daten als Teil eines Befehls oder einer Abfrage an einen Interpreter gesendet werden.
// Verwundbar: String-Verkettung in SQL-Abfrage
$sql = "SELECT * FROM users WHERE username = '" . $_GET['username'] . "'";
Gegenmaßnahme: Verwenden Sie parametrisierte Abfragen oder vorbereitete Anweisungen. Verketten Sie niemals Benutzereingaben direkt in Abfragen.
4. Unsicheres Design
Unsicheres Design bezieht sich auf fehlende oder unwirksame Kontrollmechanismen. Beispielsweise kann ein Passwortwiederherstellungssystem, das preisgibt, ob eine E-Mail-Adresse existiert, Angreifern helfen.
Gegenmaßnahme: Bedrohungsmodellierung während des Designs, Verwendung sicherer Entwurfsmuster und Implementierung von Ratenbegrenzungen und anderen Kontrollen.
5. Sicherheitsfehlkonfiguration
Dazu gehört das Aktiviertlassen von Standardkonten, das Anzeigen von Stack-Traces für Benutzer oder die Fehlkonfiguration von Cloud-Speicherberechtigungen.
# Verwundbar: Debug-Modus in der Produktion aktiviert
DEBUG = True
Gegenmaßnahme: Härten Sie Konfigurationen, entfernen Sie ungenutzte Funktionen und automatisieren Sie Konfigurationsprüfungen.
6. Verwundbare und veraltete Komponenten
Die Verwendung von Bibliotheken mit bekannten Schwachstellen ist wie eine offene Tür. Beispielsweise könnte eine veraltete Version einer beliebten Bibliothek eine Schwachstelle für Remote-Codeausführung aufweisen.
Gegenmaßnahme: Aktualisieren Sie Abhängigkeiten regelmäßig, verwenden Sie Tools wie OWASP Dependency-Check und überwachen Sie auf CVEs.
7. Fehler bei Identifikation und Authentifizierung
Schwache Authentifizierung ermöglicht es Angreifern, Passwörter zu erraten oder Sitzungen zu übernehmen.
// Verwundbar: Keine Kontosperrung nach fehlgeschlagenen Versuchen
if (passwordMatches) {
loginUser();
} else {
// nur Fehler anzeigen, keine Ratenbegrenzung
}
Gegenmaßnahme: Implementieren Sie Multi-Faktor-Authentifizierung, erzwingen Sie starke Passwortrichtlinien und verwenden Sie sichere Sitzungsverwaltung.
8. Fehler bei Software- und Datenintegrität
Diese Kategorie umfasst die Verwendung nicht vertrauenswürdiger Quellen für Software-Updates oder die Deserialisierung nicht vertrauenswürdiger Daten.
// Verwundbar: Deserialisierung nicht vertrauenswürdiger Daten
$data = unserialize($_POST['data']);
Gegenmaßnahme: Überprüfen Sie digitale Signaturen, verwenden Sie Integritätsprüfungen und vermeiden Sie die Deserialisierung nicht vertrauenswürdiger Daten.
9. Fehler bei Sicherheitslogging und -monitoring
Ohne ordnungsgemäßes Logging bleiben Sicherheitsverletzungen unentdeckt. Beispielsweise das Versäumnis, fehlgeschlagene Anmeldeversuche zu protokollieren.
Gegenmaßnahme: Protokollieren Sie sicherheitsrelevante Ereignisse, richten Sie Warnmeldungen ein und haben Sie einen Incident-Response-Plan.
10. Server-Side Request Forgery (SSRF)
SSRF tritt auf, wenn ein Angreifer den Server dazu bringen kann, Anfragen an unbeabsichtigte Ziele zu senden.
// Verwundbar: Abrufen einer URL aus Benutzereingaben ohne Validierung
fetch(req.query.url).then(...)
Gegenmaßnahme: Validieren und bereinigen Sie URLs, verwenden Sie Allowlists und beschränken Sie die Serverberechtigungen.
Vergleichstabelle
| Risiko | Beispiel | Gegenmaßnahme |
|---|---|---|
| Broken Access Control | Zugriff auf Daten anderer Benutzer durch URL-Manipulation | Serverseitige Zugriffsprüfungen erzwingen |
| Kryptografische Fehler | Speichern von Passwörtern im Klartext | Starke Hashing-Verfahren und TLS verwenden |
| Injection | SQL-Injection über nicht bereinigte Eingaben | Parametrisierte Abfragen |
| Unsicheres Design | Passwortwiederherstellung verrät Existenz der E-Mail | Bedrohungsmodellierung und sichere Muster |
| Sicherheitsfehlkonfiguration | Debug-Modus in der Produktion aktiviert | Konfigurationen härten |
| Verwundbare Komponenten | Veraltete Bibliothek mit bekannter CVE | Regelmäßige Updates und Abhängigkeitsprüfungen |
| Authentifizierungsfehler | Keine Ratenbegrenzung beim Login | MFA und starke Richtlinien |
| Integritätsfehler | Deserialisierung nicht vertrauenswürdiger Daten | Signaturen überprüfen und unsichere Deserialisierung vermeiden |
| Logging-Fehler | Keine Protokolle für fehlgeschlagene Logins | Logging und Monitoring implementieren |
| SSRF | Abrufen einer benutzerseitig bereitgestellten URL | URLs validieren und auf Allowlist setzen |
FAQ
Was sind die OWASP Top 10?
Die OWASP Top 10 sind eine regelmäßig aktualisierte Liste der kritischsten Sicherheitsrisiken für Webanwendungen, veröffentlicht vom Open Web Application Security Project (OWASP).
Wie oft werden die OWASP Top 10 aktualisiert?
Sie werden regelmäßig aktualisiert, um neue Bedrohungen und technologische Veränderungen widerzuspiegeln. Die letzte größere Aktualisierung erfolgte 2021.
Sind die OWASP Top 10 ausreichend für die Sicherheit?
Nein, sie sind ein Ausgangspunkt. Ein umfassendes Sicherheitsprogramm umfasst sichere Codierungspraktiken, regelmäßige Tests und kontinuierliche Überwachung.
Um Ihre Anwendungen weiter abzusichern, ziehen Sie Tools wie den Nginx Log Analyzer in Betracht, um verdächtige Aktivitäten in Ihren Server-Logs zu überwachen und zu erkennen.