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 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.