CyberGlossary

Angriffe und Bedrohungen

NoSQL-Injection

Auch bekannt als: NoSQLi

Definition

Injection-Angriff gegen Dokument-, Key-Value- oder Graphdatenbanken, bei dem Angreifer Operatoren oder JavaScript in Abfrageobjekte einschleusen.

NoSQL-Injection zielt auf Datenbanken wie MongoDB, CouchDB, DynamoDB oder Redis, deren Abfragesprachen auf JSON, BSON oder eingebettetem JavaScript basieren. Statt aus Strings auszubrechen, manipuliert der Angreifer die Struktur — etwa durch JSON-Bodies mit Operatoren wie {"$ne": null} oder {"$where": "..."}, um Authentifizierung zu umgehen, Dokumente zu exfiltrieren oder serverseitiges JavaScript auszuführen. Automatische Objekt-Deserialisierung in dynamischen Sprachen (PHP, Node.js) macht den Angriff oft trivial, weil Benutzereingaben Teil der Query-DSL werden. Schutz: strikte Typprüfung und Schemavalidierung, Ablehnung benutzergesteuerter Operatoren, parametrisierte Client-APIs, Deaktivieren serverseitigen JavaScripts und Datenbankrollen mit minimalen Rechten.

Beispiele

  • An einen MongoDB-Login-Endpunkt {"username": "admin", "password": {"$ne": ""}} senden, um die Passwortprüfung zu umgehen.
  • Mit {"$where": "sleep(5000) || true"} Daten über Antwortzeiten extrahieren.

Verwandte Begriffe