Was ist OWASP?
Das Open Web Application Security Project, oder OWASP, ist eine internationale non-profit-Organisation, die sich der Sicherheit von web-Anwendungen. Eines der Kernprinzipien von OWASP ist, dass alle Materialien auf ihrer Website frei verfügbar und leicht zugänglich sind, sodass jeder seine eigene Webanwendungssicherheit verbessern kann. Zu den Materialien, die sie anbieten, gehören Dokumentation, Tools, Videos und Foren. Vielleicht ist ihr bekanntestes Projekt die OWASP Top 10.
Was ist die OWASP-Top-10?,
Die OWASP Top 10 ist ein regelmäßig aktualisierter Bericht, der Sicherheitsbedenken für die Sicherheit von Webanwendungen umreißt und sich auf die 10 kritischsten Risiken konzentriert. Der Bericht wird von einem Team von Sicherheitsexperten aus aller Welt zusammengestellt. OWASP bezeichnet die Top 10 als „Awareness Document“ und empfiehlt allen Unternehmen, den Bericht in ihre Prozesse zu integrieren, um Sicherheitsrisiken zu minimieren und/oder zu mindern.
Nachfolgend sind die im OWASP Top 10 2017 Report gemeldeten Sicherheitsrisiken aufgeführt:
1., Injection
Injection-Angriffe treten auf, wenn nicht vertrauenswürdige Daten über eine Formulareingabe oder eine andere Datenübermittlung an eine Webanwendung an einen Code-Interpreter gesendet werden. Beispielsweise könnte ein Angreifer SQL-Datenbankcode in ein Formular eingeben, das einen Klartext-Benutzernamen erwartet. Wenn diese Formulareingabe nicht ordnungsgemäß gesichert ist, würde dies dazu führen, dass dieser SQL-Code ausgeführt wird. Dies wird als SQL-Injection-Angriff bezeichnet.
Injektionsangriffe können durch Validierung und/oder Bereinigung von vom Benutzer übermittelten Daten verhindert werden., (Validierung bedeutet, verdächtig aussehende Daten abzulehnen, während Bereinigung bezieht sich auf die Bereinigung der verdächtig aussehenden Teile der Daten.) Darüber hinaus kann ein Datenbankadministrator Steuerelemente festlegen, um die Menge an Informationen zu minimieren, die ein Injection-Angriff verfügbar machen kann.
2. Defekte Authentifizierung
Schwachstellen in Authentifizierungs – (Login -) Systemen können Angreifern Zugriff auf Benutzerkonten gewähren und sogar die Möglichkeit bieten, ein gesamtes System mithilfe eines Administratorkontos zu kompromittieren., Zum Beispiel kann ein Angreifer eine Liste mit Tausenden von bekannten Benutzernamen/Passwort-Kombinationen nehmen, die während einer Datenverletzung erhalten wurden, und ein Skript verwenden, um all diese Kombinationen auf einem Anmeldesystem auszuprobieren, um zu sehen, ob es welche gibt, die funktionieren.
Einige Strategien zur Minderung von Sicherheitslücken bei der Authentifizierung erfordern eine Zwei-Faktor-Authentifizierung (2FA) sowie die Begrenzung oder Verzögerung wiederholter Anmeldeversuche mithilfe von Ratenbegrenzung.
3., Sensible Daten Exposition
Wenn Web-Anwendungen nicht sensible Daten wie Finanzinformationen und Passwörter schützen, können Angreifer Zugriff auf diese Daten gewinnen und sie für schändliche Zwecke nutzen. Eine beliebte Methode zum Stehlen sensibler Informationen ist die Verwendung eines On-Path-Angriffs.
Das Risiko der Datenexposition kann minimiert werden, indem alle sensiblen Daten verschlüsselt und das Caching* aller sensiblen Informationen deaktiviert werden. Darüber hinaus sollten Webanwendungsentwickler darauf achten, dass sie keine unnötigen sensiblen Daten speichern.,
* Caching ist die Praxis der temporären Speicherung von Daten zur Wiederverwendung. Beispielsweise werden Webbrowser häufig Webseiten zwischenspeichern, sodass der Browser die Seiten nicht aus dem Internet abrufen muss, wenn ein Benutzer diese Seiten innerhalb einer festgelegten Zeitspanne erneut besucht.
4. XML External Entities (XEE)
Dies ist ein Angriff auf eine Webanwendung, die XML* – Eingaben analysiert. Diese Eingabe kann auf eine externe Entität verweisen, die versucht, eine Sicherheitsanfälligkeit im Parser auszunutzen. Eine „externe Entität“ bezieht sich in diesem Zusammenhang auf eine Speichereinheit, z. B. eine Festplatte., Ein XML-Parser kann dazu verleitet werden, Daten an eine nicht autorisierte externe Entität zu senden, die vertrauliche Daten direkt an einen Angreifer weitergeben kann.
Die beste Möglichkeit, XEE-Angriffe zu verhindern, besteht darin, dass Webanwendungen einen weniger komplexen Datentyp wie JSON * * akzeptieren oder zumindest XML-Parser patchen und die Verwendung externer Entitäten in einer XML-Anwendung deaktivieren.
*XML oder Extensible Markup Language ist eine Auszeichnungssprache, die sowohl für Menschen als auch für maschinenlesbar ist. Aufgrund seiner Komplexität und Sicherheitslücken wird es jetzt in vielen Webanwendungen nicht mehr verwendet.,
**JavaScript Object Notation (JSON) ist eine einfache, für Menschen lesbare Notation, die häufig zur Übertragung von Daten über das Internet verwendet wird. Obwohl es ursprünglich für JavaScript erstellt wurde, ist JSON sprachunabhängig und kann von vielen verschiedenen Programmiersprachen interpretiert werden.
5. Defekte Zugriffskontrolle
Zugriffskontrolle bezieht sich auf ein System, das den Zugriff auf Informationen oder Funktionen steuert. Mit fehlerhaften Zugriffskontrollen können Angreifer die Autorisierung umgehen und Aufgaben ausführen, als wären sie privilegierte Benutzer wie Administratoren., Zum Beispiel könnte eine Webanwendung einem Benutzer erlauben, zu ändern, welches Konto er angemeldet ist, indem er einfach einen Teil einer URL ändert, ohne eine andere Überprüfung.
Zugriffskontrollen können gesichert werden, indem sichergestellt wird, dass eine Webanwendung Autorisierungstoken* verwendet und strenge Kontrollen für sie festlegt.
*Viele Dienste geben Autorisierungstoken aus, wenn sich Benutzer anmelden. Jede privilegierte Anforderung, die ein Benutzer ausführt, erfordert, dass das Autorisierungstoken vorhanden ist. Dies ist ein sicherer Weg, um sicherzustellen, dass der Benutzer ist, wer sie sagen, sie sind, ohne ständig ihre Anmeldeinformationen eingeben.
6., Sicherheitsfehlkonfiguration
Sicherheitsfehlkonfiguration ist die häufigste Sicherheitsanfälligkeit in der Liste und häufig das Ergebnis der Verwendung von Standardkonfigurationen oder der Anzeige übermäßig ausführlicher Fehler. Beispielsweise kann eine Anwendung einem Benutzer übermäßig beschreibende Fehler anzeigen, die Schwachstellen in der Anwendung aufdecken können. Dies kann gemildert werden, indem nicht verwendete Funktionen im Code entfernt und sichergestellt werden, dass Fehlermeldungen allgemeiner sind.
7., Cross-Site-Scripting
Cross-Site-Scripting-Schwachstellen treten auf, wenn Webanwendungen Benutzern erlauben, benutzerdefinierten Code in einen URL-Pfad oder auf eine Website hinzuzufügen, die von anderen Benutzern gesehen wird. Diese Sicherheitsanfälligkeit kann ausgenutzt werden, um bösartigen JavaScript-Code im Browser eines Opfers auszuführen. Beispielsweise könnte ein Angreifer eine E-Mail an ein Opfer senden, das von einer vertrauenswürdigen Bank zu stammen scheint, mit einem Link zur Website dieser Bank. Dieser Link könnte einige bösartige JavaScript-Code am Ende der URL markiert haben., Wenn die Website der Bank nicht ordnungsgemäß gegen Site-übergreifende Skripts geschützt ist, wird dieser schädliche Code im Webbrowser des Opfers ausgeführt, wenn er auf den Link klickt.
Minderungsstrategien für Cross-Site-Scripting umfassen das Umgehen nicht vertrauenswürdiger HTTP-Anforderungen sowie das Validieren und/oder Bereinigen von benutzergenerierten Inhalten. Die Verwendung moderner Webentwicklungsframeworks wie ReactJS und Ruby on Rails bietet auch einen integrierten site-übergreifenden Scripting-Schutz.
8. Unsichere Deserialisierung
Diese Bedrohung zielt auf die vielen Webanwendungen ab, die häufig Daten serialisieren und deserialisieren., Serialisierung bedeutet, Objekte aus dem Anwendungscode zu entnehmen und in ein Format umzuwandeln, das für einen anderen Zweck verwendet werden kann, z. B. zum Speichern der Daten auf der Festplatte oder zum Streamen. Die Deserialisierung ist genau das Gegenteil: Konvertieren serialisierter Daten zurück in Objekte, die die Anwendung verwenden kann. Serialisierung ist wie das Verpacken von Möbeln in Kisten vor einem Umzug, und Deserialisierung ist wie das Auspacken der Kisten und das Zusammenbauen der Möbel nach dem Umzug. Ein unsicherer Deserialisierungsangriff ist, als würden die Mover den Inhalt der Boxen manipulieren, bevor sie ausgepackt werden.,
Ein unsicherer Deserialisierungs-Exploit ist das Ergebnis der Deserialisierung von Daten aus nicht vertrauenswürdigen Quellen und kann schwerwiegende Folgen wie DDoS-Angriffe und Angriffe auf die Remotecodeausführung haben. Während Schritte unternommen werden können, um Angreifer abzufangen, z. B. die Überwachung der Deserialisierung und die Implementierung von Typprüfungen, besteht der einzige sichere Weg zum Schutz vor unsicheren Deserialisierungsangriffen darin, die Deserialisierung von Daten aus nicht vertrauenswürdigen Quellen zu verbieten.
9., Verwenden von Komponenten mit bekannten Schwachstellen
Viele moderne Webentwickler verwenden Komponenten wie Bibliotheken und Frameworks in ihren Webanwendungen. Diese Komponenten sind Softwareteile, die Entwicklern helfen, redundante Arbeit zu vermeiden und erforderliche Funktionen bereitzustellen; häufiges Beispiel sind Front-End-Frameworks wie React und kleinere Bibliotheken, die zum Hinzufügen von Freigabesymbolen oder A/b-Tests verwendet wurden. 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; Ein Angreifer, der eine Sicherheitslücke in einer dieser Komponenten findet, kann Hunderttausende von Websites anfällig für Exploits machen.
Komponentenentwickler bieten häufig Sicherheitspatches und-updates an, um bekannte Sicherheitslücken zu schließen, aber Webanwendungsentwickler haben nicht immer die gepatchten oder neuesten Versionen von Komponenten, die auf ihren Anwendungen ausgeführt werden., Um das Risiko zu minimieren, dass Komponenten mit bekannten Sicherheitslücken ausgeführt werden, sollten Entwickler nicht verwendete Komponenten aus ihren Projekten entfernen sowie sicherstellen, dass sie Komponenten von einer vertrauenswürdigen Quelle empfangen und dass sie auf dem neuesten Stand sind.
10. Unzureichende Protokollierung und Überwachung
Viele Webanwendungen unternehmen nicht genügend Schritte, um Datenverletzungen zu erkennen. Die durchschnittliche Entdeckungszeit für einen Verstoß beträgt etwa 200 Tage nach dem Vorfall. Dies gibt Angreifern viel Zeit, um Schaden zu verursachen, bevor es eine Antwort gibt., OWASP empfiehlt Webentwicklern, Protokollierungs-und Überwachungspläne sowie Incident Response-Pläne zu implementieren, um sicherzustellen, dass sie auf Angriffe auf ihre Anwendungen aufmerksam gemacht werden.
Ein technischer und eingehenderer Blick auf die OWASP Top 10 finden Sie im offiziellen Bericht .