Wer oder was ist OWASP?
OWASP steht für das Open Web Application Security Project. Diese Open Community hat es sich zur Aufgabe gemacht, alle an der Entwicklung von Anwendungen und APIs im Internet beteiligten Personen zu unterstützen. Das Hauptaugenmerk liegt beim Thema Sicherheit. Das bekannteste Projekt von OWASP ist die OWASP Top 10 Liste.
Was sind die OWASP Top 10?
Die Top 10 werden regelmäßig veröffentlicht und enthalten die 10 meist auftretenden bzw. ausgenutzten Sicherheitslücken einer Webapplikation. Die Liste soll EntwicklerInnen, aber auch AnbieterInnen von Softwareprodukten Einblicke in die momentan vorherrschenden Bedrohungen geben und sie dafür sensibilisieren.
In der modernen Softwareentwicklung ist es deshalb immens wichtig, diese Auflistung immer im Hinterkopf zu haben, damit etwaige Sicherheitslücken direkt bei der Umsetzung vermieden werden können.
In den nachfolgenden Abschnitten werden, beginnend mit dem Platz 1 und der somit am gefährlichsten Bedrohung, alle Plätze der OWASP Top 10 kurz beschrieben.
A01:2021 - Broken Access Control
Access Control (Zugriffskontrolle) stellt für gewöhnlich sicher, dass BenutzerInnen nur so weit mit der Anwendung agieren können, so weit sie auch die dazugehörigen Berechtigungen besitzen. Wenn diese Einschränkungen nicht richtig funktionieren, kann es sein, dass Daten auch ohne jeweiligen Berechtigungen gelesen oder manipuliert werden können.
Mögliche Gründe für diese Probleme sind:
- UserInnen dürfen standardmäßig alles und es muss extra eingeschränkt werden
- URL, Status oder die HTML-Seite selbst wird mutwillig verändert
- Fehlende Zugriffskontrolle bei APIs
- Manipulation der gespeicherten Metadaten über die Zugriffskontrolle
- Falsche Konfiguration von CORS
Wie kann man diese Probleme vermeiden:
- Alles standardmäßig verbieten und nur extra erlauben, wenn es notwendig ist
- Zugriffskontrolle einmalig entwickeln und in der ganzen Anwendung gleich verwenden
- Immer darauf achten, dass UserInnen nur Ressourcen verwenden können, welche auch in ihrem Besitz sind.
- Fehler bei der Zugriffskontrolle protokollieren und überwachen
- Tests für die Zugriffskontrolle implementieren
A02:2021 - Cryptographic Failures
Diese Schwachstelle beschreibt die Herausforderung, Daten verschlüsselt zu übermitteln und zu speichern. Diese Daten werden oft nicht oder nur rudimentär verschlüsselt und somit unzureichend vor möglichen AngreiferInnen verschleiert.
EntwicklerInnen müssen dabei auf mehrere Punkte achten:
- Daten nie im Klartext übertragen
- Neue und ausreichend starke Verschlüsselungsverfahren verwenden
- Schlüssel sicher speichern und oft erneuern
A03:2021 – Injection
Injection bezieht sich auf die Injektion von schadhaften oder bedrohlichen Code in der Anwendung. Ziel eines solchen Angriffes ist es, Daten zu lesen oder die Anwendung allgemein zu schädigen. Das Einschleusen von Fremdcode erfolgt zumeist über die Eingabe von BenutzerInnen, welche nicht ausreichend überprüft werden. Deshalb muss jegliche Eingabe auf allen möglichen Ebenen validiert und gegebenenfalls bereinigt werden.
A04:2021 – Insecure Design
Software Design findet vor dem eigentlichen Entwickeln statt. Dabei werden die Architektur, Design Pattern und die generelle Struktur des Produktes definiert. Dadurch können mögliche Sicherheitsprobleme entstehen, die später zu einem Problem führen oder nicht mehr auszubessern sind. Aus diesem Grund gilt es, sich im Voraus gut zu überlegen, wie man etwas konkret umsetzt.
A05:2021 – Security Misconfiguration
Security Misconfiguration bedeutet, dass verschiedene grundlegende Sicherheitsregeln nicht richtig beachtet werden, was zu einem höheren Risiko führt.
- Unnötige Ports, Services, Zugänge oder ähnliches sind aktiviert
- Standardzugänge sind noch aktiviert und noch nicht verändert
- Fehlermeldungen legen sicherheitsrelevante Informationen offen
- Software-Komponenten sind veraltet
A06:2021 – Vulnerable and Outdated Components
Bei der Entwicklung werden viele externe Komponenten verwendet, welche nicht direkt in der Verantwortung der internen Entwickler stehen. Beispiele dafür sind unter anderem Betriebssysteme, Datenbanken, API, Laufzeitumgebungen oder Bibliotheken.
Bei diesen externen Abhängigkeiten kann es zu Schwachstellen und Sicherheitslücken kommen. Deshalb ist es sehr wichtig, regelmäßig zu überprüfen, ob die Verwendung noch sicher ist oder ob es bereits neue verbesserte Versionen der Software gibt. Dabei sollte auf die Hilfe von fertigen Werkzeugen wie dem OWASP Dependency Check zurückgegriffen werden. Mit diesem kann automatisch und regelmäßig überprüft werden, ob die aktuellen Versionen der verwendeten Software-Komponenten bekannte Schwachstellen enthalten.
A07:2021 – Identification and Authentication Failures
Fehler oder unerwünschtes Verhalten bei der Nutzeridentifikation können durch verschiedene Schwachstellen und Attacken hervorgerufen werden.
- Brute-Force Attacken
- unerlaubtes Nutzen von validen Zugangsinformationen
- Verwendung von schwachen Passwörtern
- Fehlende oder ineffiziente Mehr-Faktor-Authentifizierung
- Wiederverwenden von Session IDs
Um sich von AngreiferInnen schützen zu können, sollten folgende Maßnahmen ergriffen werden:
- wenn möglich immer Mehr-Faktor-Authentifizierung verwenden
- keine schwachen Passwörter erlauben
- Passwort Richtlinien einführen
- Fehlgeschlagene Anmeldeversuche einschränken
A08:2021 – Software and Data Integrity Failures
Die Integrität der Software und der Daten muss zu jedem Zeitpunkt sichergestellt werden. Bei jedem automatischen Update, in der jeder CI/CD Pipeline und bei allen kritischen Daten, muss stets die Integrität überprüfbar sein. Dazu können digitale Signaturen, automatische Sicherheitsüberprüfung und Prüfprozesse beitragen.
A09:2021 – Security Logging and Monitoring Failures
Logging und Monitoring verschiedener Events sind essenziell, um Bedrohung früh genug erkennen zu können. Werden dabei grundlegende Rahmenbedingungen nicht beachtet, kann es zu Bedrohungen kommen. Wichtig beim Logging und Monitoring sind vor allem die Formatierung, Enkodierung, Verfügbarkeit, Schwellenwerte und die Notfallpläne.
A10:2021 – Server-Side Request Forgery (SSRF)
SSRF ist eine Angriffsart, bei der die AngreiferInnen versuchen, auf dem Server einer Anwendung böswillige Befehle auszuführen. Damit wird dann zum Beispiel versucht, an interne Ressourcen zu kommen. Durch verschiedene Mechanismen, wie Datenvalidierung und Verbotslisten, kann diese Bedrohung vermieden werden.
OWASP Top 10 in der Praxis bei Objectbay
Bei Objectbay haben wir das Bewusstsein für die Bedrohungen der Top 10 geschaffen. Alle EntwicklerInnen wissen darüber Bescheid und nutzen die Liste als eines der Werkzeuge, um die Qualität unserer Software sicherstellen zu können. Wir nutzen aber auch unterschiedliche Tools, welche automatisiert prüfen, ob Sicherheitslücken vorliegen.
Bei jedem Build in der CI/CD Pipeline werden alle Abhängigkeiten und deren Versionen mithilfe des OWASP Dependency Checks überprüft. Zusätzlich wird der Quellcode von dem statistischen Code-Analyse-Tool Sonar analysiert. Aber auch in der Konzeptionsphase legen wir schon die richtigen Weichen für eine sichere Software. Wir planen und konzipieren ausschließlich mit Komponenten, die sich bewährt haben und sicher sind.