Injection ORM
Qu'est-ce que Injection ORM ?
Injection ORMInjection visant les applications utilisant un ORM, qui abuse des requetes dynamiques, du mass-assignment ou des echappatoires SQL brutes pour manipuler l'acces aux donnees.
L'injection ORM survient lorsqu'une entree influence par l'attaquant atteint un ORM (Hibernate, Entity Framework, SQLAlchemy, ActiveRecord, Sequelize, Prisma, Django ORM) via des API qui construisent des requetes dynamiquement. Schemas vulnerables : concatenation HQL/JPQL, where(string) interpole en ActiveRecord, Op.literal de Sequelize, text() formate en SQLAlchemy, mass-assignment d'attributs non prevus, parametres de tri ou de filtre dangereux issus d'API JSON. Les consequences vont de l'injection SQL classique au contournement d'autorisation lorsque les controles vivent dans la couche ORM. Parades : query builders parametres, listes blanches strictes pour les champs triables/filtrables, autorisation explicite des attributs et evitement des echappatoires brutes pour les entrees non fiables.
● Exemples
- 01
Une app Rails appelant User.where("name = '#{params[:q]}'"), ouvrant une SQL injection via l'ORM.
- 02
Un endpoint Sequelize acceptant un parametre order de l'attaquant transmis a Op.literal.
● Questions fréquentes
Qu'est-ce que Injection ORM ?
Injection visant les applications utilisant un ORM, qui abuse des requetes dynamiques, du mass-assignment ou des echappatoires SQL brutes pour manipuler l'acces aux donnees. Cette notion relève de la catégorie Attaques et menaces en cybersécurité.
Que signifie Injection ORM ?
Injection visant les applications utilisant un ORM, qui abuse des requetes dynamiques, du mass-assignment ou des echappatoires SQL brutes pour manipuler l'acces aux donnees.
Comment fonctionne Injection ORM ?
L'injection ORM survient lorsqu'une entree influence par l'attaquant atteint un ORM (Hibernate, Entity Framework, SQLAlchemy, ActiveRecord, Sequelize, Prisma, Django ORM) via des API qui construisent des requetes dynamiquement. Schemas vulnerables : concatenation HQL/JPQL, where(string) interpole en ActiveRecord, Op.literal de Sequelize, text() formate en SQLAlchemy, mass-assignment d'attributs non prevus, parametres de tri ou de filtre dangereux issus d'API JSON. Les consequences vont de l'injection SQL classique au contournement d'autorisation lorsque les controles vivent dans la couche ORM. Parades : query builders parametres, listes blanches strictes pour les champs triables/filtrables, autorisation explicite des attributs et evitement des echappatoires brutes pour les entrees non fiables.
Comment se défendre contre Injection ORM ?
Les défenses contre Injection ORM combinent habituellement des contrôles techniques et des pratiques opérationnelles, comme détaillé dans la définition ci-dessus.
Quels sont les autres noms de Injection ORM ?
Noms alternatifs courants : Injection HQL, Injection JPQL.
● Termes liés
- attacks№ 1084
Injection SQL
Attaque par injection de code qui insère du SQL contrôlé par l'attaquant dans une requête de base de données, permettant de lire, modifier ou détruire des données.
- attacks№ 743
Injection NoSQL
Attaque par injection qui manipule les opérateurs, le JSON ou le DSL d'une base NoSQL pour contourner la logique applicative ou extraire des données.
- attacks№ 1106
Abus de procedures stockees
Exploitation de procedures stockees privilegiees ou non securisees pour executer du SQL arbitraire, des commandes systeme ou escalader des privileges depuis la base.
- vulnerabilities№ 653
Affectation en masse
Vulnérabilité où une application lie aveuglément des champs fournis par le client à des propriétés internes, laissant l'attaquant définir des attributs qu'il ne devrait pas contrôler.
- appsec№ 538
Validation des entrées
Contrôle côté serveur vérifiant que chaque entrée non fiable correspond au type, à la longueur, à la plage, au format et à l'ensemble de valeurs attendus avant tout traitement.