OWASP Top 10-Schwachstellen
15. Oktober 2020
0 Min. LesezeitCloud-native Anwendungen mit ihren verteilten Architekturen, die zahlreiche Bibliotheken und Services von Drittanbietern umfassen, sind ein attraktives Ziel für Hacker. Angreifer wissen, dass 82 % aller Schwachstellen im Anwendungscode zu finden sind, und versuchen, diesen Angriffsvektor zu nutzen, um die Netzwerke zu kompromittieren, in denen die Anwendung bereitgestellt wird. Der Schutz von Webanwendungen ist daher zu einer geschäftskritischen Anforderung geworden.
Was ist OWASP?
Das Open Web Application Security Project (OWASP) ist eine globale gemeinnützige Community, die sich für mehr Anwendungssicherheit im Web einsetzt. Ein zentrales OWASP-Prinzip ist, dass die Wissensdatenbank auf der Website frei und leicht zugänglich ist. Mit Zehntausenden Mitgliedern und Hunderten von Chapter gilt OWASP als äußerst vertrauenswürdig. Entwickler verlassen sich auf die wichtigen Empfehlungen zu Webanwendungssicherheit und API-Sicherheit.
Alle Anwendungsentwickler müssen sich unabhängig von ihrer Erfahrung mit Schwachstellen in der Codesicherheit auseinandersetzen, um frustrierende und oft kostspielige Fehler bei der Anwendungssicherheit zu vermeiden. Was sind die OWASP Top 10?
Alle paar Jahre aktualisiert OWASP seine Liste der zehn wichtigsten Anwendungsschwachstellen im Web und veröffentlicht sie erneut. Die Liste umfasst nicht nur die OWASP Top 10-Bedrohungen, sondern auch die potenziellen Auswirkungen jeder Schwachstelle und Möglichkeiten, sie zu vermeiden. Diese umfassende Liste wird anhand unterschiedlicher Expertenquellen zusammengestellt, darunter Sicherheitsberater, Sicherheitsanbieter sowie Sicherheitsteams von Unternehmen und Organisationen jeder Größe. Sie gilt als unverzichtbarer Leitfaden für Best Practices zur Webanwendungssicherheit.
OWASP hat kürzlich die OWASP Top 10 für 2021 veröffentlicht. Darin gibt es drei neue Kategorien, vier Kategorien mit geänderten Namen und Definitionen sowie einige Zusammenfassungen innerhalb der Top 10.
Die OWASP Top 10 sollen vor allem das Bewusstsein für Sicherheitsrisiken schärfen. Seit ihrer Einführung im Jahr 2003 nutzen Unternehmen sie jedoch als de-facto-Branchenstandard für AppSec. Bei genauerer Betrachtung des Dokuments fällt auf, dass es ausdrücklich die Anzahl der zugehörigen CWE (Common Weakness Enumeration) aufführt.
Bereiten Sie sich mit Snyk auf Zero-Day-Schwachstellen vor
Erfahren Sie, wie Snyk Ihre Entwickler dabei unterstützt, Zero-Day-Schwachstellen schneller zu beheben und so die Gefährdung und das Risiko zu verringern.
Die aktuelle Liste der OWASP Top 10-Schwachstellen und Sicherheitsrisiken für Webanwendungen
Die aktuellsten OWASP Top 10 wurden am 24. September 2021 zum 20-jährigen OWASP-Jubiläum veröffentlicht. Wenn Sie die Liste von 2020 kennen, fällt Ihnen die umfassende Neuordnung der OWASP Top 10 von 2021 auf: An der Spitze hat Broken Access Control die SQL-Injection abgelöst.
OWASP Top 10-Schwachstellen
In diesem Abschnitt gehen wir auf die einzelnen OWASP Top 10-Schwachstellen ein, um ihre Auswirkungen besser zu verstehen und zu erfahren, wie sie sich vermeiden lassen.
1. Fehlerhafte Zugriffskontrollen
Zugriffskontrollen für die Website sollten Besucher auf die Seiten oder Bereiche beschränken, die für den jeweiligen Nutzertyp erforderlich sind. Administratoren einer E-Commerce-Website müssen beispielsweise neue Links und Werbeaktionen hinzufügen können. Für andere Besuchertypen sollten diese Funktionen nicht zugänglich sein.
Entwickler sollten dazu angehalten werden, eine „Security first“-Disziplin zu verinnerlichen, um Fehlerquellen zu vermeiden. Dazu gehören etwa Content-Management-Systeme (CMS), die standardmäßig Vollzugriff gewähren – bis hin zu Administratorrechten. Durch fehlerhafte Zugriffskontrollen können Website-Besucher Zugriff auf Admin-Panels, Server, Datenbanken und andere geschäftskritische Anwendungen erhalten. Diese OWASP Top 10-Bedrohung kann sogar dazu genutzt werden, Browser auf andere gezielte URLs umzuleiten.
Behebung fehlerhafter Zugriffskontrollen
Schwachstellen durch fehlerhafte Zugriffskontrollen lassen sich auf verschiedene Weise beheben:
Verfolgen Sie das Prinzip der geringsten Berechtigungen: Jede Rolle erhält nur die minimal erforderlichen Zugriffsrechte für ihre Aufgaben.
Löschen Sie Konten, die nicht mehr benötigt werden oder nicht aktiv sind.
Überprüfen Sie die Aktivitäten auf Servern und Websites, damit Sie wissen, wer was und wann tut.
Deaktivieren Sie nicht benötigte Zugriffspunkte, wenn mehrere vorhanden sind.
Halten Sie Server schlank, indem Sie unnötige Services abschalten.
2. Kryptografische Fehler
Daten während der Übertragung und im Ruhezustand – etwa Passwörter, Kreditkartennummern, Gesundheitsdaten, personenbezogene Informationen und Geschäftsgeheimnisse – müssen besonders geschützt werden, da kryptografische Fehler zu Offenlegung sensibler Daten führen können. Das gilt insbesondere, wenn die Daten unter Datenschutzgesetze wie die DSGVO, den CCPA oder andere Vorschriften fallen. Werden Daten im Klartext übertragen? Werden standardmäßig oder in älterem Code veraltete oder unsichere kryptografische Algorithmen oder Protokolle verwendet? Werden möglicherweise Standardschlüssel genutzt oder schwache kryptografische Schlüssel erzeugt und wiederverwendet? Wird eine ordnungsgemäße Schlüsselverwaltung und -rotation vernachlässigt? Können kryptografische Schlüssel in Quellcode-Repositories eingecheckt werden? Wird die Verschlüsselung nicht erzwungen, und sind die empfangenen Daten verschlüsselt?
Behebung kryptografischer Fehler
Deaktivieren Sie die Autovervollständigung bei Formularen, in denen Daten erfasst werden.
Verkleinern und minimieren Sie die Angriffsfläche für Daten.
Verschlüsseln Sie Daten während der Übertragung und im Ruhezustand.
Verwenden Sie die modernsten Verschlüsselungsverfahren.
Deaktivieren Sie das Caching bei Formularen zur Datenerfassung.
Verwenden Sie beim Speichern von Passwörtern starke adaptive Hash-Funktionen mit Salt.
3. Injection
Injection-Schwachstellen können auftreten, wenn eine Abfrage oder ein Befehl nicht vertrauenswürdige Daten über SQL-, Betriebssystem-, NoSQL- oder LDAP-Injection in den Interpreter einschleust. Die über diesen Angriffsvektor eingeschleusten schädlichen Daten verleiten den Interpreter dazu, die Anwendung etwas tun zu lassen, wofür sie nicht vorgesehen ist – etwa unbeabsichtigte Befehle auszuführen oder ohne ordnungsgemäße Authentifizierung auf Daten zuzugreifen.
Jede Anwendung, die Eingabeparameter akzeptiert, kann für Injection-Angriffe anfällig sein. Das Ausmaß der Bedrohung hängt stark davon ab, wie gründlich die Anwendung Eingaben validiert.
Behebung von Injection-Schwachstellen
Injection-Angriffe lassen sich durch eine beliebige Kombination der folgenden Maßnahmen verhindern:
Trennen Sie Befehle und Daten, um Angriffe zu verhindern, bei denen Daten durch die Ausführung unbeabsichtigter Befehle ersetzt werden.
Schreiben Sie SQL-Abfragen mit Parametern, statt den Befehl ausschließlich aus Benutzereingaben zusammenzusetzen. Diese Abfragen werden als parametrisierte Abfragen oder Prepared Statements bezeichnet.
Vermeiden Sie Interpreter vollständig, indem Sie eine sichere API verwenden.
Implementieren Sie eine positive serverseitige Validierung sowie ein Intrusion-Detection-System, das verdächtiges Verhalten auf der Client-Seite erkennt.
4. Unsicheres Design
Unsicheres Design ist ein weit gefasster Begriff, der zahlreiche Fehler umfasst und als „fehlendes oder mangelhaftes Kontrolldesign“ definiert wird. Threat Modeling, sichere Designmuster und Referenzarchitekturen zählen zu den neuen Kategorien für 2021. Zugleich wird gefordert, Threat Modeling, sichere Designmuster und Referenzarchitekturen verstärkt einzusetzen. Als Community müssen wir über das „Shift Left“-Prinzip beim Programmieren hinausgehen und bereits vor dem Schreiben von Code Aufgaben berücksichtigen, die für die Prinzipien von Secure by Design wichtig sind.
Behebung von Problemen durch unsicheres Design
Etablieren und nutzen Sie gemeinsam mit AppSec-Experten einen sicheren Entwicklungslebenszyklus, um Sicherheits- und Datenschutzmaßnahmen zu analysieren und umzusetzen.
Erstellen und nutzen Sie eine Bibliothek mit sicheren Designmustern oder sofort einsatzbereiten Komponenten.
Nutzen Sie Threat Modeling für wichtige Authentifizierungs-, Zugriffskontroll- und Geschäftslogikabläufe sowie Schlüsselprozesse.
User Stories sollten Sicherheitsanforderungen und Kontrollen enthalten.
Integrieren Sie Plausibilitätsprüfungen auf jeder Ebene Ihrer Anwendung – vom Frontend bis zum Backend.
Schreiben Sie Unit- und Integrationstests, um sicherzustellen, dass alle wichtigen Abläufe dem Bedrohungsmodell standhalten. Erstellen Sie für jede Ebene Ihrer Anwendung eine Liste der Anwendungsfälle und Missbrauchsszenarien.
Unterteilen Sie die Ebenen auf System- und Netzwerkschicht entsprechend den Anforderungen an Exposition und Schutz.
Begrenzen Sie den Ressourcenverbrauch von Nutzern und Services.
5. Fehlkonfiguration der Sicherheit
Gartner schätzt, dass bis zu 95 % aller Sicherheitsverletzungen in der Cloud auf menschliche Fehler zurückzuführen sind. Fehlkonfigurationen von Sicherheitseinstellungen sind ein wesentlicher Faktor für diese Zahl. OWASP weist darauf hin, dass diese Schwachstelle unter den Top 10 am häufigsten vorkommt. Es gibt viele Arten von Fehlkonfigurationen, die Unternehmen Cyberrisiken aussetzen, darunter:
Die Übernahme unsicherer Standardeinstellungen
Zu leicht zugängliche Cloud-Speicherressourcen
Unvollständige Konfigurationen
Fehlkonfigurierte HTTP-Header
Ausführliche Fehlermeldungen mit sensiblen Informationen
Behebung von Sicherheitsfehlkonfigurationen
Sicherheitsfehlkonfigurationen können nahezu überall in der Umgebung auftreten, etwa auf netzwerkverbundenen Geräten, in Datenbanken, Web- und Anwendungsservern sowie Containern. Die folgenden Best Practices tragen dazu bei, eine korrekt konfigurierte Umgebung aufrechtzuerhalten:
Verwenden Sie Vorlagen, um Entwicklungs-, Test- und Produktionsumgebungen bereitzustellen, die bereits gemäß den Sicherheitsrichtlinien des Unternehmens konfiguriert sind.
Nutzen Sie segmentierte Anwendungsarchitekturen, die das Risiko durch falsch konfigurierte Komponenten minimieren, und pflegen Sie eine Bibliothek korrekt konfigurierter Container-Images.
Setzen Sie schlanke Plattformen ein und entfernen Sie nicht genutzte Funktionen und Services.
Überwachen Sie Cloud-Ressourcen, Anwendungen und Server kontinuierlich auf Sicherheitsfehlkonfigurationen und beheben Sie erkannte Probleme in Echtzeit. Nutzen Sie dabei nach Möglichkeit automatisierte Workflows.
6. Verwundbare und veraltete Komponenten
Moderne verteilte Webanwendungen enthalten häufig Open-Source-Komponenten wie Bibliotheken und Frameworks. Jede Komponente mit einer bekannten Schwachstelle wird zu einem schwachen Glied, das die Sicherheit der gesamten Anwendung beeinträchtigen kann.
Auch wenn die Verwendung von Open-Source-Komponenten mit bekannten Schwachstellen hinsichtlich des Schweregrads des Sicherheitsproblems weit unten rangiert, steht sie auf Platz 1 der OWASP Top 10, wenn es darum geht, wie häufig eine Schwachstelle die Ursache eines tatsächlichen Datendiebstahls war.
Behebung von Schwachstellen in verwundbaren und veralteten Komponenten
Der wirksamste Schutz besteht darin, alle Code-Komponenten kontinuierlich auf bekannte Schwachstellen zu scannen und bei Erkennung einer Schwachstelle so schnell wie möglich einen Patch oder eine andere Abhilfe bereitzustellen. Die folgenden Best Practices erhöhen die Wirksamkeit dieses Schutzes:
Alle in die Frameworks des Unternehmens integrierten Komponenten sollten durch Konfigurationsmanagement verwaltet werden.
Der Scanner muss alle zu überwachenden Komponenten automatisch erkennen können.
Das Scanning sollte anhand einer umfassenden Schwachstellendatenbank erfolgen, die mit Daten zu Threat Intelligence angereichert ist.
Die Patch-Management-Workflows zum Identifizieren, Testen und Bereitstellen des richtigen Patches sollten so weit wie möglich automatisiert werden, um das mit dem Patchen verbundene Betriebsrisiko zu minimieren.
7. Fehler bei Identifizierung und Authentifizierung
Wenn Anwendungen Funktionen zur Sitzungsverwaltung oder Benutzerauthentifizierung fehlerhaft ausführen, können Angreifer möglicherweise Passwörter, Sicherheitsschlüssel oder Sitzungstoken kompromittieren und dauerhaft oder vorübergehend die Identität und Berechtigungen anderer Nutzer übernehmen. Diese Schwachstelle stellt eine erhebliche Bedrohung für die Sicherheit der Anwendung und der von ihr genutzten Ressourcen dar. Außerdem kann sie andere mit demselben Netzwerk verbundene Ressourcen schwer beeinträchtigen.
Behebung von Authentifizierungsproblemen
Zu den wichtigsten OWASP-Best-Practice-Empfehlungen zur Eindämmung von Schwachstellen bei fehlerhafter Authentifizierung gehören:
Implementieren Sie Multi-Faktor-Authentifizierung.
Verwenden Sie keine Standard-Zugangsdaten, insbesondere nicht für Nutzer mit Administratorrechten.
Setzen Sie sichere Passwörter durch.
Überwachen Sie fehlgeschlagene Anmeldeversuche sorgfältig.
Verwenden Sie einen sicheren Sitzungsmanager, der zufällige Sitzungs-IDs mit zeitlicher Begrenzung generiert. Nehmen Sie Sitzungs-IDs niemals in URLs auf.
8. Fehler bei Software- und Datenintegrität
Software- und Datenintegritätsfehler liegen vor, wenn Code und Infrastruktur nicht vor Integritätsverletzungen geschützt sind. Ein Beispiel dafür sind Programme, die Plug-ins, Bibliotheken oder Module aus nicht vertrauenswürdigen Quellen, Repositories oder Content Delivery Networks (CDNs) verwenden. Eine ungesicherte CI/CD-Pipeline kann Risiken wie unbefugten Zugriff, Schadcode oder eine Kompromittierung des Systems mit sich bringen. Viele Programme verfügen inzwischen über automatische Update-Funktionen, mit denen Updates ohne die erforderlichen Integritätsprüfungen bezogen und auf zuvor vertrauenswürdigen Anwendungen installiert werden können. Angreifer könnten diese Funktion nutzen, um eigene Updates auf allen Systemen zu verteilen und auszuführen.
Behebung von Software- und Datenintegritätsfehlern
Verwenden Sie digitale Signaturen oder ähnliche Maßnahmen, um sicherzustellen, dass Programme oder Daten echt und nicht manipuliert sind.
Um das Risiko zu verringern, dass schädlicher Code oder fehlerhafte Konfigurationen in Ihre Entwicklungspipeline gelangen, sollten Sie ein Prüfverfahren für Änderungen an Code und Konfigurationen einrichten.
Stellen Sie sicher, dass Bibliotheken und Abhängigkeiten, etwa von npm oder Maven, vertrauenswürdige Repositories verwenden. Wenn Ihr Risikoprofil höher ist, sollten Sie ein internes, geprüftes Repository mit bekannten, sicheren Komponenten betreiben.
Um die Integrität des Codes während des Build- und Deploy-Prozesses zu schützen, sollten Sie für eine angemessene Trennung, Konfiguration und Zugriffskontrolle in Ihrer CI/CD-Pipeline sorgen.
Stellen Sie sicher, dass nicht signierte oder unverschlüsselte serialisierte Daten nicht ohne Integritätsprüfung oder digitale Signatur, die Änderungen oder Replay-Angriffe erkennt, an nicht vertrauenswürdige Clients übermittelt werden.
9. Unzureichendes Logging und Monitoring
Studien zufolge können zwischen einem Angriff und seiner Entdeckung bis zu 200 Tage oder sogar mehr vergehen. In diesem Zeitraum haben Cyberkriminelle reichlich Zeit, Server zu manipulieren, Datenbanken zu beschädigen, vertrauliche Informationen zu stehlen und Schadcode einzuschleusen.
Behebung
Setzen Sie leicht verfügbare Logging- und Audit-Software ein, um verdächtige Aktivitäten und unbefugte Zugriffsversuche schnell zu erkennen. Auch wenn ein erkannter Angriff fehlgeschlagen ist, bieten Logging und Monitoring wertvolle Möglichkeiten, Quelle und Vektor des Angriffs zu analysieren und zu ermitteln, wie sich Sicherheitsrichtlinien und -kontrollen verstärken lassen, um Eindringversuche zu verhindern.
10. Server-Side Request Forgery (SSRF)
Server-Side Request Forgery (auch SSRF genannt) ist eine Sicherheitslücke in Webanwendungen, durch die Angreifer eine serverseitige Anwendung dazu bringen können, HTTP-Anfragen an eine beliebige, von ihnen ausgewählte Domain zu senden.
Ruft eine Webanwendung eine Remote-Ressource ab, ohne die vom Benutzer angegebene URL zu validieren, liegt eine SSRF-Schwachstelle vor. Selbst wenn die Anwendung durch eine Firewall, ein VPN oder eine andere Netzwerkzugriffskontrollliste geschützt ist, können Angreifer sie dazu zwingen, eine gefälschte Anfrage an ein unerwartetes Ziel zu senden.
Behebung
Validieren Sie Eingaben.
Verwenden Sie reguläre Ausdrücke (RegEx).
Akzeptieren Sie nur das vorgesehene IP-Adressformat (IPv4 oder IPv6).
Verwenden Sie den Wert der Methode bzw. Ausgabebibliothek als IP-Adresse, um ihn mit der Allowlist abzugleichen.
Validieren Sie eingehende Domainnamen.
Lesen Sie die OWASP-Cheat-Sheet-Reihe
Welche weiteren Schwachstellen gibt es, die nicht zu OWASP gehören?
OWASP stellt in seiner Methodik ausdrücklich klar, dass die Top-10-Liste definitionsgemäß nur eine Auswahl wichtiger Sicherheitsprobleme umfasst und Unternehmen sich auch anderer Sicherheitsrisiken bewusst sein sollten.
Sie sollten auch neue Zero-Day-Schwachstellen im Blick behalten, die in freier Wildbahn entdeckt werden, und einen Reaktionsplan für den Umgang mit solchen Schwachstellen bereithalten.

Von Entwicklern geschätzt. Von der Security vertraut.
Die Developer-first-Tools von Snyk bieten integrierte und automatisierte Security, die Ihren Governance- und Compliance-Anforderungen gerecht wird.
Häufig gestellte Fragen zu OWASP-Schwachstellen
Was ist eine OWASP-Schwachstelle?
OWASP-Schwachstellen sind Sicherheitslücken oder Probleme, die vom Open Web Application Security Project veröffentlicht werden. Von Unternehmen, Organisationen und Sicherheitsexperten gemeldete Probleme werden nach dem Schweregrad des Sicherheitsrisikos bewertet, das sie für Webanwendungen darstellen.
Was sind die 10 wichtigsten OWASP-Schwachstellen?
Die OWASP Top Ten werden alle drei bis vier Jahre zusammengestellt und veröffentlicht und heben die kritischsten Sicherheitslücken hervor. Außerdem enthält die Liste Beispiele für die Schwachstellen, zeigt, wie Angreifer sie ausnutzen können, und schlägt Maßnahmen vor, mit denen sich die Gefährdung von Anwendungen verringern oder beseitigen lässt.
Was ist das von OWASP am häufigsten gemeldete Anwendungssicherheitsrisiko?
Injection ist der von OWASP am häufigsten gemeldete Fehler. Bei einer Injection können nicht vertrauenswürdige Daten über SQL oder andere Wege wie LDAP eingeschleust werden. Dadurch kann der Interpreter auf nicht autorisierte Daten zugreifen oder Befehle ausführen, die von der Anwendung nicht vorgesehen sind.
Wie lassen sich Schwachstellen aus den OWASP Top 10 testen?
OWASP stellt einen ausführlichen Testleitfaden mit Testfällen für zahlreiche Testszenarien bereit. Viele Entwicklungsteams setzen auf einen stärker automatisierten Ansatz und nutzen Software, die Code auf Schwachstellen überprüft, automatisch Warnungen ausgibt und bewährte Verfahren konsequent anwendet.
Wie sollte die OWASP Top 10 verwendet werden?
Die OWASP Top 10 bietet Entwicklern und Sicherheitsteams ein Instrument, um Entwicklungspraktiken zu bewerten und sich mit der Sicherheit von Webanwendungen auseinanderzusetzen. Sie deckt keineswegs alle Schwachstellen in Webanwendungen ab, bietet aber einen Maßstab, der Sicherheitsaspekte stärker ins Bewusstsein rückt.
