Block nomic Studio - stock.adobe

Gängige Schwachstellen von Webanwendungen und Gegenmaßnahmen

Webanwendungen werden häufig über ganz typische und bekannte Schwachstellen angegriffen. Mit entsprechenden Gegenmaßnahmen kann die eigene Umgebung deutlich sicherer werden.

Die Liste der wichtigsten Sicherheitslücken und Risiken bei Webanwendungen ist in den letzten zehn Jahren weitgehend unverändert geblieben, und die Angriffsvektoren sind sowohl Sicherheitsexperten als auch Entwicklern bestens bekannt. Dennoch bestehen diese Probleme weiterhin, obwohl Lösungen dafür bereits verfügbar und gut dokumentiert sind.

Die für die Anwendungsentwicklung und das Design Verantwortlichen sowie Sicherheitsexperten und Führungskräfte sollten die folgende Liste häufiger Schwachstellen zurate ziehen, um Risiken zu vermeiden. Erfahren Sie, wie sich Sicherheitsprobleme bei Webanwendungen erkennen und bekämpfen lassen.

Zugriffs- und Authentifizierungsprobleme

Problem: Webanwendungen authentifizieren Benutzer und richten Sitzungen ein, um die Anfragen jedes Benutzers zu verfolgen. Wenn Authentifizierungsdaten, Zugriffskontrollen und Sitzungskennungen nicht geschützt werden, sind Anwendungen anfällig für andere Schwachstellen. Ein Angreifer könnte beispielsweise gestohlene Anmeldedaten verwenden, um eine aktive Sitzung zu kapern und die Identität eines legitimen Benutzers anzunehmen, Malware oder Keylogging-Software zu installieren oder auf Daten zuzugreifen, diese zu ändern oder zu löschen.

Lösung: Führen Sie Codeüberprüfungen, Penetrationstests und Schwachstellenscans durch, um Probleme bei der Authentifizierung, dem Zugriff und der Sitzungsverwaltung zu identifizieren.

Führen Sie ein starkes Identitäts- und Zugriffsmanagementprogramm (IAM) ein, das bewährte Verfahren wie die Umsetzung des Prinzips der geringsten Privilegien (POLP), die Anwendung rollenbasierter Zugriffskontrolle (RBAC), die Forderung nach Multifaktor-Authentifizierung (MFA) und die Einführung von Zero-Trust-Sicherheit umfasst. Richten Sie eine strenge Passwortrichtlinie ein, begrenzen Sie fehlgeschlagene Anmeldeversuche, überprüfen Sie Zugriffskontrollen und überprüfen Sie regelmäßig die Benutzerrechte.

Beispiel: Unsichere direkte Objektreferenz (IDOR, Insecure Direct Object Reference)

IDORs treten auf, wenn eine Anwendung oder API eine Referenz wie eine Benutzer-ID oder einen Dateinamen offenlegt, die es einem Angreifer ermöglicht, andere Benutzer-IDs oder Dateinamen zu erraten. Wenn beispielsweise die Konto-ID eines Benutzers in der Seiten-URL angezeigt wird – wie zum Beispiel https://example.com/user/12345 –, könnte ein Angreifer versuchen, die ID eines anderen Benutzers zu erraten und die Anfrage erneut zu senden, um auf die Daten dieses anderen legitimen Benutzers zuzugreifen. IDOR-Schwachstellen führen zu unbefugtem Zugriff, Rechteausweitung und Datendiebstahl oder -manipulation.

Befolgen Sie die folgenden Schritte, um IDORs zu vermeiden:

  • Verwenden Sie zufällige, unvorhersehbare und eindeutige Identifikatoren sowie Datei- und Objektnamen. Geben Sie niemals die tatsächlichen Namen von Objekten preis.
  • Implementieren Sie Zugriffskontrollen für jedes Objekt, auf das ein Benutzer zugreift.
  • Verwenden Sie eine Sitzungsverwaltung, um zu begrenzen, wie lange ein Benutzer auf sein Konto zugreifen kann, bevor er sich erneut authentifizieren muss.

Injektions- und Codeausführungsangriffe

Problem: Injection-Angriffe gehören zu den häufigsten – und schwerwiegendsten – Sicherheitslücken in Webanwendungen. Sie treten auf, wenn Angreifer sorgfältig manipulierte Daten verwenden, um Anwendungen dazu zu bringen, unbeabsichtigte Befehle auszuführen oder auf nicht autorisierte Daten zuzugreifen.

Zu den Arten von Injection-Angriffen gehören SQL Injection (SQLi), OS Injection, E-Mail-Injection, LDAP Injection, Prompt Injection und Cross-Site-Scripting (XSS).

Lösung: Erkennen Sie Injection-Schwachstellen mithilfe von Schwachstellen- und Penetrationstests sowie Schwachstellenscannern und Quellcode-Analysatoren.

Um Probleme durch Injection-Angriffe zu vermeiden, gehen Sie wie folgt vor:

  • Benutzereingaben validieren. Gehen Sie davon aus, dass alle Daten, unabhängig davon, ob sie vom Benutzer über ein Formular, eine URL, ein Cookie oder die Datenbank der Anwendung übermittelt wurden, nicht vertrauenswürdig sind. Verwenden Sie strenge Validierungsfunktionen, um sicherzustellen, dass die Daten den erwarteten Formaten entsprechen.
  • Benutzereingaben bereinigen, wenn HTML erforderlich ist. Verwenden Sie einen HTML-Sanitizer, um potenziell bösartigen Code aus den vom Benutzer übermittelten Daten zu bereinigen und zu analysieren, bevor diese im Browser gerendert werden.
  • Benutzereingaben maskieren. Bestimmte Zeichen – wie <, >, " und & – durch sichere Textdarstellungen ersetzen, wobei kontextbezogene Kodierung verwendet wird, um zu verhindern, dass sie als Code interpretiert oder ausgeführt werden.
  • Implementieren Sie eine Content-Sicherheitsrichtlinie. Definieren Sie die spezifischen Ressourcen, einschließlich Skripte und Stile, die auf einer Website geladen werden dürfen, sowie deren Quellen und Speicherorte.

Beispiel: SQL Injection

Bei einem SQLi-Angriff nutzen böswillige Akteure SQL-Abfragen, die vom Benutzer bereitgestellte Daten verwenden, ohne zuvor deren Gültigkeit zu überprüfen. Angreifer können daher böswillige SQL-Abfragen senden und Befehle direkt an eine SQL-Datenbank weiterleiten.

Zusätzlich zu den oben genannten Präventionsmaßnahmen sollten Sie gespeicherte Prozeduren auf diejenigen beschränken, die für die Durchführung von Transaktionen unbedingt erforderlich sind. Verwenden Sie außerdem das HTTPOnly-Flag für Cookies. Dadurch wird verhindert, dass clientseitige Skripte auf Cookies zugreifen können, wodurch die Auswirkungen eines XSS-Angriffs verringert werden.

Beispiel: Cross-Site-Scripting (XSS)

XSS-Angriffe gibt es seit fast 40 Jahren. Bei diesem Angriff zielen böswillige Akteure auf die Benutzer einer Anwendung ab, indem sie Code – in der Regel ein clientseitiges Skript wie JavaScript – in die Ausgabe einer Webanwendung einschleusen. Wenn ein Benutzer die kompromittierte Ausgabe oder Webseite aufruft, wird der Code vom Browser ausgeführt, sodass Angreifer die Benutzersitzungen kapern, den Benutzer auf eine bösartige Website umleiten, die Website verunstalten und die Cookies, den Browserverlauf und andere sensible Daten des Benutzers stehlen können.

XSS-Angriffe umgehen die Same-Origin-Policy – einen Sicherheitsmechanismus, der verhindert, dass Skripte, die von einer Website stammen, mit Skripten einer anderen Website interagieren.

Beispiel: Prompt Injection

Angreifer nutzen Prompt-Injection-Angriffe – darunter direkte Prompt Injection, indirekte Prompt Injection, gespeicherte Prompt Injection und Prompt-Leaking –, um KI-Tools dazu zu verleiten, Informationen preiszugeben, die sie normalerweise nicht weitergeben würden. Ein Angreifer könnte beispielsweise einen direkten Prompt-Injection-Angriff nutzen, um ein großes Sprachmodell (LLM) dazu zu bringen, die API-Schlüssel oder Geheimnisse des Systems preiszugeben.

Um Fehler bei der Prompt-Eingabe zu vermeiden, stellen Sie sicher, dass Prompts die Sicherheitsvorkehrungen von KI und LLM nicht umgehen oder außer Kraft setzen können, und begrenzen Sie die Länge der für KI-Tools und LLM zulässigen Benutzer-Prompts.

Herausforderungen bei APIs und Architektur

Problem: APIs sind entscheidend für die Interaktion und Bereitstellung von Daten und Diensten zwischen Unternehmen, ihren Partnern und ihren Kunden. Eine unsachgemäße Implementierung und fehlende Sicherheitsmaßnahmen in APIs können zu Angriffen und Datenverlusten führen.

Lösung: Um API-Sicherheitsrisiken zu minimieren, gehen Sie wie folgt vor:

  • Zugriff auf APIs kontrollieren. Verwenden Sie Branchenstandards zur Authentifizierung des API-Datenverkehrs, befolgen Sie das Prinzip der minimalen Rechtevergabe (POLP) und wenden Sie das Zero-Trust-Sicherheitsmodell an.
  • Daten validieren. Verhindern Sie böswillige Eingaben, indem Sie Eingaben analysieren und validieren. Akzeptieren Sie niemals Rohdaten.
  • Dokumentieren und testen Sie APIs. Erstellen Sie ein API-Register, um alle verwendeten APIs zu dokumentieren. Dies hilft auch, Schatten-APIs zu verhindern. Führen Sie eine Risikobewertung durch, um bekannte Schwachstellen zu bewerten, und führen Sie regelmäßige Sicherheitstests durch, um sicherzustellen, dass APIs sicher bleiben.
  • Befolgen Sie Best Practices für die API-Schlüsselverwaltung. Verwalten und sichern Sie API-Schlüssel sorgfältig und rotieren Sie die Schlüssel regelmäßig.
  • Verhindern Sie die Offenlegung von Daten. Verwenden Sie Tools zum Schutz vor Datenverlust, um die übermäßige Weitergabe von Daten zu überwachen und zu erkennen.

Beispiel: Defekte Objekt-Level-Autorisierung (BOLA, Broken Object-Level Authorization)

BOLA tritt auf, wenn eine Anwendung oder API die Zugriffskontrollen für Objekte nicht ordnungsgemäß durchsetzt, sodass Angreifer auf Daten zugreifen oder diese ändern können, auf die sie keinen Zugriff haben sollten. Diese Schwachstelle kann zu Datenverlust und Datenmanipulation führen.

Um BOLA-bezogene Angriffe zu verhindern, gehen Sie wie folgt vor:

  • Implementieren Sie eine starke Autorisierung und Authentifizierung, einschließlich Autorisierung auf Objektebene, rollenbasierte Authentifizierung (RBAC) und POLP.
  • Verwenden Sie zufällige, unvorhersehbare und eindeutige Identifikatoren.
  • Befolgen Sie bewährte Verfahren für die sichere API-Entwicklung.
  • Testen Sie APIs auf BOLA-Fehler.

Beispiel: Falsch konfigurierte Cross-Origin Resource Sharing (CORS)

CORS ist ein Mechanismus, der es Webanwendungen ermöglicht, Ressourcen von anderen Domänen, Protokollen und Ports sicher anzufordern. Eine unsachgemäß konfigurierte CORS kann zu Cross-Site-Request-Forgery-Angriffen (CSRF), Datenexfiltration und unbefugtem Zugriff führen.

Um falsch konfigurierte CORS zu verhindern, gehen Sie wie folgt vor:

  • Verwenden Sie eine Allowlist (Positivliste), um zu beschränken, welche Server auf eingeschränkte Ressourcen zugreifen können.
  • Implementieren Sie benutzerdefinierte Header, um die Anzahl und Art der Header in CORS-Anfragen zwischen Servern zu beschränken.
  • Testen und überprüfen Sie regelmäßig die CORS-Konfiguration.

Fehlkonfigurationen und Risiken in der Lieferkette

Problem: Die Infrastruktur, die eine Webanwendung unterstützt, umfasst eine Reihe von Geräten und Software, darunter Server, Firewalls, Datenbanken, Betriebssysteme und Anwendungskomponenten. Die Sicherung dieser Infrastruktur ist von entscheidender Bedeutung. Ebenso wichtig ist die Sicherheit der Infrastruktur von Drittanbietern, einschließlich der Partner und Lieferanten eines Unternehmens.

Verschiedene Fehlkonfigurationen können die Sicherheit einer Webanwendung beeinträchtigen, darunter:

  • die Verwendung von fest codierten oder standardmäßigen Geheimnissen und Anmeldedaten,
  • die Aktivierung unnötiger Funktionen,
  • die Verwendung kompromittierter oder anfälliger Komponenten,
  • Schwachstellen in Software von Drittanbietern,
  • Missverständnisse hinsichtlich des Modells der geteilten Verantwortung,
  • Insider-Bedrohungen und vieles mehr.

Lösung: Führen Sie regelmäßig Schwachstellentests, Penetrationstests, Sicherheitsaudits und Abhängigkeitsscans durch, um zugrunde liegende Fehlkonfigurationen aufzudecken und zu beheben.

Um Fehlkonfigurationen vorzubeugen, gehen Sie wie folgt vor:

  • Sichere Entwicklungsmethoden anwenden.
  • Systeme regelmäßig aktualisieren und patchen.
  • Bibliotheken regelmäßig überwachen.
  • Nicht verwendete Abhängigkeiten und Komponenten entfernen.
  • Risiken durch Dritte überwachen.
  • Standard-Anmeldedaten und -Passwörter ändern.
  • Starkes IAM implementieren, einschließlich POLP und RBAC.
  • Eine Softwarestückliste (SBOM) des Unternehmens erstellen und aktualisieren, in der alle verwendeten Softwareprogramme und Bibliotheken dokumentiert sind.

Beispiel: Veraltete, anfällige interne und externe Infrastruktur

Die Verwendung von anfälligen oder veralteten Softwarebibliotheken, Frameworks und Software – einschließlich Betriebssystemen, APIs und Laufzeitumgebungen – setzt Anwendungen einer Reihe von Risiken aus. Dazu gehören Datenverletzungen, Datenverlust, Rechteausweitung, Remote-Code-Ausführung, Compliance-Verstößen und verzögerten Reaktionen auf Vorfälle sowie Leistungs- und Zuverlässigkeitsproblemen aus.

Dies gilt sowohl für die vom Unternehmen eingesetzte Software – Open Source und kommerziell – als auch für die von Dritten eingesetzte Software.

Zusätzlich zu den oben genannten Empfehlungen sollten Sie alle Open-Source- und Drittanbieter-Codes vor der Implementierung in einer Sandbox-Umgebung testen. Fordern Sie außerdem SBOMs von Drittanbietern, Integratoren, Dienstleistern, Partnern und Beratern an.

Probleme bei der Datensicherheit

Problem: Zu den häufigsten Datensicherheitsproblemen, die Webanwendungen betreffen, gehören unter anderem die folgenden:

  • Unsichere Datenspeicherung, beispielsweise die Speicherung von Passwörtern und sensiblen Daten im Klartext und unzureichende Datenbanksicherheit.
  • Datenoffenlegung, beispielsweise Offenlegung von Informationen, Verzeichnisüberquerung und sensible Daten in URLs.
  • Unzureichender Datenschutz, einschließlich schwacher Verschlüsselung, mangelhafter Schlüsselverwaltung und unsicherer Datenübertragung.

Lösung: Um diese Probleme zu vermeiden, sollten Sie die folgenden bewährten Verfahren berücksichtigen:

  • Halten Sie sich an die Prinzipien von Security by Design.
  • Befolgen Sie bewährte Verfahren zur Verschlüsselung.
  • Verwenden Sie Hash-Passwörter vor der Speicherung.
  • Wenden Sie bewährte Verfahren zur Datenbanksicherheit an.
  • Berücksichtigen Sie das Prinzip der minimalen Rechtevergabe (POLP) für den Datenbankzugriff.
  • Klassifizieren und behandeln Sie sensible Daten ordnungsgemäß.
  • Verwenden Sie starke, aktuelle Verschlüsselungsalgorithmen.
  • Befolgen Sie sichere Verfahren zur Schlüsselverwaltung.

Erfahren Sie mehr über Anwendungs- und Plattformsicherheit