ORM-Injection
Was ist ORM-Injection?
ORM-InjectionInjection-Angriff gegen Anwendungen mit Object-Relational-Mapper, der dynamische Queries, Mass-Assignment oder Roh-SQL-Escape-Hatches missbraucht, um Daten zu manipulieren.
ORM-Injection entsteht, wenn von Angreifern beeinflusste Eingaben ueber dynamische APIs eines ORM (Hibernate, Entity Framework, SQLAlchemy, ActiveRecord, Sequelize, Prisma, Django ORM) in die Datenschicht gelangen. Verwundbare Muster: HQL/JPQL-Verkettung, ActiveRecord-where(string) mit Interpolation, Sequelize-Op.literal, SQLAlchemy-text() mit Formatierung, Mass-Assignment unbeabsichtigter Attribute sowie unsichere Sort-/Filterparameter aus JSON-APIs. Folgen reichen von klassischer SQL-Injection bis zu Autorisierungs-Bypass und Rechteausweitung, wenn Pruefungen in der ORM-Schicht liegen. Gegenmassnahmen: parametrisierte Query-Builder, strenge Allowlists fuer sortier-/filterbare Felder, explizite Strong Parameters, Verzicht auf Raw-SQL-Pfade fuer unsichere Eingaben.
● Beispiele
- 01
Eine Rails-App ruft User.where("name = '#{params[:q]}'") auf und oeffnet eine SQL-Injection ueber das ORM.
- 02
Ein Sequelize-Endpoint nimmt vom Angreifer kontrollierte Order-Parameter, die via Op.literal weitergegeben werden.
● Häufige Fragen
Was ist ORM-Injection?
Injection-Angriff gegen Anwendungen mit Object-Relational-Mapper, der dynamische Queries, Mass-Assignment oder Roh-SQL-Escape-Hatches missbraucht, um Daten zu manipulieren. Es gehört zur Kategorie Angriffe und Bedrohungen der Cybersicherheit.
Was bedeutet ORM-Injection?
Injection-Angriff gegen Anwendungen mit Object-Relational-Mapper, der dynamische Queries, Mass-Assignment oder Roh-SQL-Escape-Hatches missbraucht, um Daten zu manipulieren.
Wie funktioniert ORM-Injection?
ORM-Injection entsteht, wenn von Angreifern beeinflusste Eingaben ueber dynamische APIs eines ORM (Hibernate, Entity Framework, SQLAlchemy, ActiveRecord, Sequelize, Prisma, Django ORM) in die Datenschicht gelangen. Verwundbare Muster: HQL/JPQL-Verkettung, ActiveRecord-where(string) mit Interpolation, Sequelize-Op.literal, SQLAlchemy-text() mit Formatierung, Mass-Assignment unbeabsichtigter Attribute sowie unsichere Sort-/Filterparameter aus JSON-APIs. Folgen reichen von klassischer SQL-Injection bis zu Autorisierungs-Bypass und Rechteausweitung, wenn Pruefungen in der ORM-Schicht liegen. Gegenmassnahmen: parametrisierte Query-Builder, strenge Allowlists fuer sortier-/filterbare Felder, explizite Strong Parameters, Verzicht auf Raw-SQL-Pfade fuer unsichere Eingaben.
Wie schützt man sich gegen ORM-Injection?
Schutzmaßnahmen gegen ORM-Injection kombinieren typischerweise technische Kontrollen und operative Praktiken, wie in der Definition oben beschrieben.
Welche anderen Bezeichnungen gibt es für ORM-Injection?
Übliche alternative Bezeichnungen: HQL-Injection, JPQL-Injection.
● Verwandte Begriffe
- attacks№ 1084
SQL Injection
Code-Injection-Angriff, der vom Angreifer kontrolliertes SQL in eine Datenbankabfrage einschleust, um Daten zu lesen, zu verändern oder zu zerstören.
- attacks№ 743
NoSQL Injection
Injection-Angriff, der Operatoren, JSON oder das Abfrage-DSL einer NoSQL-Datenbank manipuliert, um Logik zu umgehen oder Daten zu extrahieren.
- attacks№ 1106
Missbrauch von Stored Procedures
Ausnutzung privilegierter oder unsicherer Stored Procedures, um beliebiges SQL, OS-Befehle oder Privilegienerhoehung aus der Datenbank heraus auszufuehren.
- vulnerabilities№ 653
Mass Assignment
Schwachstelle, bei der eine Anwendung vom Client übergebene Felder blind auf interne Objekteigenschaften abbildet, sodass Angreifer Felder setzen können, die ihnen nicht gehören sollten.
- appsec№ 538
Eingabevalidierung
Serverseitige Prüfung, ob jede unvertrauenswürdige Eingabe vor der Verarbeitung dem erwarteten Typ, Längen-, Wert-, Format- und Wertebereich entspricht.