IDOR-Schwachstellen

- Warnmeldung

Bei IDOR-Schwachstellen (engl.: Insecure Direct Object Reference) handelt es sich um Schwachstellen im Bereich der Zugriffskontrolle. Sie treten typischerweise in Verbindung mit Webanwendungen und mobilen Apps auf.
Sicherheit auf Lapotop mit Händen

© Adobe Stock

Voraussetzungen

Damit eine solche Schwachstelle überhaupt zum Tragen kommt, müssen folgende Voraussetzungen erfüllt sein:

  • Eine Webanwendung oder eine API greift direkt auf ein Objekt zu (z. B. Datensatz in Datenbank).
  • Für den Zugriff wird eine eindeutige Kennung (z. B. ID, Name, Schlüssel) verwendet.
  • Die Kennung ist in die URL bzw. Abfrage integriert.
  • Die Authentifizierungs- und Autorisierungsprüfungen sind unzureichend.

Abhängig vom Schweregrad der Schwachstelle ist es möglich, sensible Informationen zu transferieren, Objekte zu ändern oder Funktionen zu nutzen.

Das Australian Cyber Security Centre (ACSC), die Cybersecurity and Infrastructure Security Agency (CISA) und die National Security Agency (NSA) haben gemeinsam eine Warnung zu IDOR-Schwachstellen herausgegeben. Demnach sollten Unternehmen Schwachstellen in Web-Anwendungen beseitigen, die sich auf die Zugriffskontrolle beziehen. Denn Angreifer könnten hier in großem Ausmaß Daten manipulieren oder Ausspähmaßnahmen durchführen.

Die Behörden schätzen IDOR-Schwachstellen als weit verbreitet ein.

Bewertung

Den Behörden zufolge wurden IDOR-Schwachstellen bereits dafür ausgenutzt, um sensible Daten von Millionen Verbraucherinnen und Verbrauchern zu kompromittieren. Aus diesem Grund sollten Unternehmen prüfen, ob sie von dieser Schwachstelle betroffen sind und gegebenenfalls entsprechend handeln.

Empfehlungen für Administratoren

  • Konfigurieren Sie Anwendungen so, dass der Zugriff standardmäßig verweigert wird. Stellen Sie zudem sicher, dass die Anwendung Authentifizierungs- und Autorisierungsprüfungen für jede Anfrage zur Änderung von Daten, zum Löschen von Daten und zum Zugriff auf sensible Daten durchführt.

    • Verwenden Sie indirekte Referenz-Maps, so dass IDs, Namen und Schlüssel nicht in URLs offengelegt werden. Ersetzen Sie sie durch kryptografisch starke, zufällige Werte – verwenden Sie insbesondere eine UUID oder eine GUID.
    • Richten Sie ein Programm zur Offenlegung von Schwachstellen ein, um Sicherheitslücken zu überprüfen und zu beheben, die von internen oder externen Personen gemeldet werden.
  • Darüber hinaus werden Frameworks und Essentials empfohlen. Dies sind priorisierte Strategien, die Fachleuten für Cybersicherheit helfen sollen, verschiedene Cyber-Bedrohungen zu entschärfen. Die Frameworks und Essentials finden Sie unten in der Link-Liste.

Empfehlungen für Entwickler

Die folgenden Maßnahmen können die Verbreitung von IDOR-Schwachstellen in Software verringern und dazu beitragen, dass die Produkte von vornherein und standardmäßig sicher sind.

  • Implementierung und Einbindung von Grundsätzen der Entwurfs- und Standardsicherheit sowie von Best Practices in jeder Phase des Softwareentwicklungszyklus. Besonderes Augenmerk ist auf folgende Punkte zu legen:

    • Durchführung von Code-Reviews anhand von Kodierungsstandards
    • Überprüfung auf Hintertüren
    • Vermeidung von bösartigen Inhalten oder Logikfehlern
    • Verwenden Sie automatische Code-Analyse-Tools für alle unterstützten Versionen, um Schwachstellen zu identifizieren und zu beheben.
    • Dekodieren und standardisieren Sie Eingaben, bevor Sie Kontrollpunkte für die Zugriffskontrolle erstellen. Stellen Sie sicher, dass das Zugriffskontrollsystem und andere Teile der Webanwendung die gleiche Standardisierung durchführen.
    • Implementieren Sie eine Parameterüberprüfung, die die syntaktische und die logische Validierung nutzt, so dass Webanwendungen alle mit jeder HTTP(S)-Anfrage empfangenen Eingaben validieren. Die Ablehnung ungültiger Anfragen kann die Last auf das Zugriffskontrollsystem verringern.
    • Bei der syntaktischen Validierung wird für jede Eingabe überprüft, ob der eingehende Wert den Erwartungen Ihrer Anwendungen entspricht. Bei der syntaktischen Validierung ist zu prüfen, ob Zeichenketten innerhalb der erforderlichen Mindest- und Höchstlänge liegen, ob sie unzulässigen Zeichen enthalten, ob numerische Werte innerhalb der Mindest- und Höchstgrenzen liegen und ob die Eingabe den richtigen Datentyp besitzt.
    • Bei der logischen Validierung wird zusätzlich geprüft, ob die Eingabewerte sinnvoll und plausibel sind. Vergewissern Sie sich bei der logischen Validierung, dass die Autorisierungsprüfungen an den richtigen Stellen durchgeführt werden, von unterschiedlicher Herkunft sind und dass es eine Fehlerbehandlung für fehlgeschlagene Authentifizierungs- und Autorisierungsanfragen gibt.
    • Testen Sie Code, um Schwachstellen zu identifizieren und die Einhaltung der Sicherheitsanforderungen zu überprüfen.
    • Verwenden Sie automatisierte Testwerkzeuge, um das Testen zu erleichtern, Fuzz-Test-Tools, um Probleme bei der Eingabeverarbeitung zu finden, und Penetrationstests, um zu simulieren, wie ein Bedrohungsakteur die Software ausnutzen könnte. Erwägen Sie den Einsatz von DAST-Tools (Dynamic Application Security Testing), um IDOR-Schwachstellen in Webanwendungen zu identifizieren.
    • Ziehen Sie den Einsatz von Tools in Betracht, die Projektabhängigkeiten und bekannte Schwachstellen im Code von Drittanbietern identifizieren.
    • Überprüfen Sie die Integrität des Produkts durch Hash- oder Signaturüberprüfung. Falls vorhanden, überprüfen Sie die Software Bill of Materials der Komponente auf veraltete, anfällige oder nicht autorisierte Anwendungen, bevor Sie sie verwenden.
    • Verwenden Sie CAPTCHA, um automatische ungültige Benutzeranfragen einzuschränken, wo dies möglich ist.
    • Verwenden Sie nach Möglichkeit speichersichere Programmiersprachen.
    • Überprüfen und bewerten Sie Komponenten von Drittanbietern im Zusammenhang mit ihrer erwarteten Verwendung.
    • Halten Sie alle Frameworks und Abhängigkeiten von Drittanbietern auf dem aktuellen Stand, um die Vererbung von Sicherheitslücken zu begrenzen.
    • Wählen Sie Bibliotheken oder Frameworks von Drittanbietern, die in Ihre Anwendung integriert werden sollen, sorgfältig aus.