Was ist OWASP?
Das Open Web Application Security Project oder OWASP ist eine internationale Non-Profit-Organisation, die sich der Sicherheit von Webanwendungen widmet. Eines der Grundprinzipien von OWASP ist, dass alle Materialien frei verfügbar und auf ihrer Website leicht zugänglich sind, so dass jeder die Sicherheit seiner eigenen Webanwendungen verbessern kann. Sie bieten Materialien wie Dokumentationen, Tools, Videos und Foren an. Ihr wohl bekanntestes Projekt sind die OWASP Top 10.
Was sind die OWASP Top 10?
Die OWASP Top 10 sind ein regelmäßig aktualisierter Bericht, der Sicherheitsbedenken für Webanwendungen beschreibt und sich dabei auf die 10 kritischsten Risiken konzentriert. Der Bericht wird von einem Team aus Sicherheitsexperten aus aller Welt zusammengestellt. OWASP bezeichnet die Top 10 als „Sensibilisierungsdokument“ und empfiehlt allen Unternehmen, den Bericht in ihre Prozesse einzubeziehen, um Sicherheitsrisiken zu minimieren und/oder abzuwehren.
Es folgen die OWASP Top 10 Sicherheitsrisiken des Berichts von 2021:
1. Fehler bei der Zugriffskontrolle
Die Zugriffskontrolle ist ein System, das den Zugriff auf Informationen oder Funktionen steuert. Eine fehlerhafte Zugriffskontrolle gestattet es Angreifern, die Autorisierung zu umgehen und Aufgaben auszuführen, als wären sie berechtigte Benutzer wie Administratoren. Beispielsweise kann eine Webanwendung es Benutzern ermöglichen, das Konto, in dem sie angemeldet sind, einfach zu ändern, indem sie einen Teil einer URL ohne weitere Überprüfung bearbeiten.
Zugriffskontrollen können geschützt werden, indem sichergestellt wird, dass eine Webanwendung Autorisierungstoken* verwendet und strenge Kontrollen für sie festlegt.
*Viele Dienste stellen Autorisierungstoken aus, wenn sich Benutzer anmelden. Bei jeder berechtigten Anfrage von Benutzern muss das Autorisierungstoken vorhanden sein. Das ist eine sichere Methode, um zu gewährleisten, dass die Benutzer diejenigen sind, für die sie sich ausgeben, ohne ständig die Anmeldeinformationen eingeben zu müssen.
2. Kryptografische Fehler
Wenn Webanwendungen sensible Daten wie Finanzinformationen und Passwörter nicht durch Verschlüsselung schützen, können Angreifer auf diese Daten zugreifen und sie verkaufen oder für schädliche Zwecke einsetzen. Sie können auch sensible Informationen stehlen, indem sie einen On-Path-Angriff verwenden.
Das Risiko der Offenlegung von Daten kann minimiert werden, indem alle sensiblen Daten verschlüsselt, alle Übertragungen authentifiziert und die Zwischenspeicherung* aller sensiblen Informationen deaktiviert werden. Darüber hinaus sollten Webanwendungsentwickler darauf achten, dass sensible Daten nicht unnötig gespeichert werden.
*Beim Caching werden Daten zur Wiederverwendung temporär gespeichert. Beispielsweise cachen Webbrowser häufig Webseiten, so dass sie die Seiten nicht erneut aus dem Web abrufen müssen, wenn Benutzer diese Seiten innerhalb eines festgelegten Zeitraums erneut besuchen.
3. Injektion
Injection-Angriffe erfolgen, wenn nicht vertrauenswürdige Daten über eine Formulareingabe oder eine andere Datenübermittlung an eine Webanwendung an einen Code-Interpreter gesendet werden. Angreifer könnten beispielsweise SQL-Datenbankcode in ein Formular eingeben, das einen Benutzernamen in Klartext erwartet. Wenn diese Formulareingabe nicht entsprechend gesichert ist, wird der SQL-Code ausgeführt. Das ist als SQL-Injection-Angriff bekannt.
Die Kategorie „Injection“ umfasst auch Cross-Site-Scripting (XSS)-Angriffe, die zuvor eine eigene Kategorie im Bericht aus dem Jahr 2017 waren. Strategien zur Schadensbegrenzung bei Cross-Site Scripting umfassen das Verhindern nicht vertrauenswürdiger HTTP-Anfragen sowie die Verwendung moderner Web-Frameworks wie ReactJS und Ruby on Rails, die einen integrierten Schutz gegen Cross-Site Scripting bieten.
In der Regel lassen sich Injection-Angriffe durch die Validierung und/oder Bereinigung der von Nutzern übermittelten Daten verhindern. (Validierung bedeutet, verdächtig aussehende Daten abzulehnen und die verdächtig aussehenden Teile der Daten zu bereinigen.) Darüber hinaus kann ein Datenbankadministrator Kontrollen einbauen, um die Menge an Informationen zu minimieren, die ein Injection-Angriff ausspähen kann.
Erfahren Sie mehr darüber , wie Sie SQL-Injection verhindern können.
4. Unsichere Struktur
Unsicheres Design umfasst eine Reihe von Schwachstellen, die in die Architektur einer Anwendung eingebettet werden können. Der Schwerpunkt liegt auf dem Design einer Anwendung, nicht auf ihrer Implementierung. OWASP listet die Verwendung von Sicherheitsfragen auf (z. B „In welcher Straße sind Sie groß geworden?“) zur Passwortwiederherstellung als Beispiel für einen von vornherein unsicheren Workflow. Unabhängig davon, wie perfekt ein solcher Arbeitsablauf von seinen Entwicklern umgesetzt wird, ist die Anwendung immer noch anfällig, da mehr als eine Person die Antwort auf diese Sicherheitsfragen kennen kann.
Der Einsatz von Bedrohungsmodellen vor der Bereitstellung einer Anwendung kann helfen, diese Art von Schwachstellen zu mindern.
5. Sicherheitsrelevante Fehlkonfiguration
Sicherheitsrelevante Fehlkonfigurationen sind die häufigste Schwachstelle in der Liste und oft das Ergebnis der Nutzung von Standardkonfigurationen oder übermäßig ausführlicher Fehleranzeigen. Beispielsweise kann eine Anwendung Benutzern Fehler übermäßig detailliert beschreiben, die Schwachstellen in der Anwendung aufdecken können. Das kann abgemildert werden, indem nicht genutzte Features aus dem Code entfernt werden und für allgemeinere Fehlermeldungen gesorgt wird.
Die Kategorie „Sicherheitsfehlkonfiguration“ umfasst den XML External Entities (XEE)-Angriff – zuvor eine eigene Kategorie im Bericht aus dem Jahr 2017. Dies ist ein Angriff auf eine Webanwendung, die XML*-Eingaben parst. Diese Eingabe kann auf eine externe Entität verweisen, die versucht, eine Sicherheitslücke im Parser auszunutzen. Eine „externe Entität“ bezieht sich in diesem Zusammenhang auf eine Speichereinheit, wie z. B. eine Festplatte. Ein XML-Parser kann so dazu verleitet werden, Daten an eine nicht autorisierte externe Entität zu senden, die sensible Daten direkt an einen Angreifer weitergeben kann. Die beste Möglichkeit, XEE-Angriffe zu verhindern, besteht darin, Webanwendungen dazu zu bringen, einen weniger komplexen Datentyp wie JSON zu akzeptieren, oder zumindest XML-Parser zu patchen und die Verwendung externer Entitäten in einer XML-Anwendung zu deaktivieren.
*Bei XML (Extensible Markup Language) handelt es sich um eine Markup-Sprache, die sowohl für den Mensch als auch für die Maschine lesbar sein soll. Aufgrund ihrer Komplexität und der Sicherheitslücken wird die Nutzung in vielen Webanwendungen allmählich abgebaut.
6. Anfällige und veraltete Komponenten
Viele moderne Webentwickler setzen in ihren Webanwendungen Komponenten wie Bibliotheken und Frameworks ein. Diese Komponenten sind Software, mit denen Entwickler redundante Arbeiten vermeiden und die erforderliche Funktionalität bereitstellen können. Gern genutzte Beispiele sind Frontend-Frameworks wie React und kleinere Bibliotheken, die Teilen-Icons oder A/B-Tests hinzufügen. Einige Angreifer suchen nach Schwachstellen in diesen Komponenten, mit denen sie Angriffe orchestrieren können. Einige der beliebtesten Komponenten werden auf Hunderttausenden von Websites verwendet. Angreifer, die eine Sicherheitslücke in einer dieser Komponenten finden, können Hunderttausende Websites für Exploits verwundbar machen.
Komponentenentwickler bieten häufig Sicherheitspatches und -updates an, um bekannte Sicherheitslücken zu schließen. Webanwendungsentwickler verfügen jedoch nicht immer über die gepatchten oder neuesten Versionen der Komponenten, die in ihren Anwendungen ausgeführt werden. Um das Risiko des Ausführens von Komponenten mit bekannten Sicherheitslücken zu minimieren, sollten Entwickler nicht verwendete Komponenten aus ihren Projekten entfernen sowie sicherstellen, dass sie die Komponenten aus einer vertrauenswürdigen Quelle beziehen und diese auf dem neuesten Stand sind.
7. Identifizierungs- und Authentifizierungsfehler
Sicherheitslücken in Authentifizierungssystemen (Anmeldung) können Angreifern Zugriff auf Benutzerkonten und sogar die Möglichkeit geben, mithilfe eines Administratorkontos ein ganzes System zu kompromittieren. Zum Beispiel kann ein Angreifer eine Liste mit Tausenden bekannten Kombinationen aus Benutzernamen und Passwörtern nehmen, die er im Zuge einer Datenschutzverletzung erhalten hat, und ein Skript verwenden, das alle diese Kombinationen in einem Anmeldesystem ausprobiert, um zu sehen, welche davon funktionieren.
Einige Strategien zur Minimierung von Sicherheitslücken bei der Authentifizierung verlangen eine Zwei-Faktor-Authentifizierung (2FA) und begrenzen oder verzögern wiederholte Anmeldeversuche mit Durchsatzbegrenzung.
8. Software- und Datenintegritätsfehler
Viele Anwendungen sind heute für ihre Funktionalität auf Plugins von Drittanbietern und andere externe Quellen angewiesen. Es wird nicht immer sichergestellt, dass Updates und Daten aus diesen Quellen nicht manipuliert wurden und von einem erwarteten Ort stammen. Eine Anwendung, die automatisch Updates von einer externen Quelle akzeptiert, könnte beispielsweise anfällig für Angreifer sein, die ihre eigenen schädlichen Updates hochladen, die dann an alle Installationen dieser Anwendung verteilt werden. Diese Kategorie umfasst auch unsichere Deserialisierungs-Exploits: Diese Angriffe sind das Ergebnis der Deserialisierung von Daten aus nicht vertrauenswürdigen Quellen und können schwerwiegende Folgen wie DDoS-Angriffe und Angriffe zur Remote Code Execution haben.
Um sicherzustellen, dass die Integrität von Daten und Updates nicht verletzt wurde, sollten Anwendungsentwickler digitale Signaturen verwenden, um Updates zu verifizieren, ihre Software-Lieferketten zu überprüfen und sicherzustellen, dass CI/CD-Pipelines (Continuous Integration/Continuous Deployment) eine starke Zugriffskontrolle haben und korrekt konfiguriert sind.
9. Sicherheitsprotokollierungs- und Überwachungsfehler
Viele Webanwendungen ergreifen nicht genügend Maßnahmen, um Datenschutzverletzungen zu erkennen. Die durchschnittliche Zeit, bis ein Verstoß erkannt wird, beträgt ca. 200 Tage nach seinem Auftreten. Das gibt Angreifern viel Zeit, um Schaden anzurichten, bevor eine Reaktion erfolgt. OWASP empfiehlt Webentwicklern, die Protokollierung und Überwachung sowie Pläne für die Reaktion auf Vorfälle zu implementieren, um sicherzustellen, dass sie auf Angriffe auf ihre Anwendungen aufmerksam gemacht werden.
10. Serverseitige Anfragefälschung
Server-Side Request Forgery (SSRF) ist ein Angriff, bei dem jemand eine URL-Anfrage an einen Server sendet, die dazu führt, dass der Server eine unerwartete Ressource abruft, selbst wenn diese Ressource anderweitig geschützt ist. Ein Angreifer könnte zum Beispiel eine Anfrage für www.example.com/super-secret-data/ senden, obwohl Webnutzer nicht in der Lage sein sollten, zu diesem Ort zu navigieren, und durch die Antwort des Servers Zugriff auf streng geheime Daten erhalten.
Es gibt eine Reihe von Möglichkeiten, um SSRF-Angriffe abzuwehren. Eine der wichtigsten ist die Validierung aller URLs, die von Kunden stammen. Ungültige URLs sollten nicht zu einer direkten, unbearbeiteten Antwort vom Server führen.
Einen technischeren und detaillierteren Blick auf die OWASP Top 10 finden Sie im offiziellen Bericht.