Inyeccion en ORM
¿Qué es Inyeccion en ORM?
Inyeccion en ORMInyeccion contra aplicaciones que usan un ORM, abusando de consultas dinamicas, asignacion masiva o salidas a SQL crudo para manipular el acceso a datos.
La inyeccion en ORM ocurre cuando una entrada influida por el atacante llega a un ORM (Hibernate, Entity Framework, SQLAlchemy, ActiveRecord, Sequelize, Prisma, Django ORM) a traves de APIs que construyen consultas dinamicamente. Patrones vulnerables: concatenacion en HQL/JPQL, where(string) con interpolacion en ActiveRecord, Op.literal en Sequelize, text() con formato en SQLAlchemy, asignacion masiva de atributos no previstos, y parametros inseguros de ordenacion o filtrado en APIs JSON. Las consecuencias van desde la inyeccion SQL clasica hasta el bypass de autorizacion y la escalada de privilegios cuando los controles viven en la capa ORM. Defensas: query builders parametrizados, listas blancas estrictas para campos ordenables o filtrables, permiso explicito de atributos y evitar los escape hatches para entradas no confiables.
● Ejemplos
- 01
Una app Rails con User.where("name = '#{params[:q]}'") que abre SQL injection via el ORM.
- 02
Un endpoint Sequelize que acepta order desde el atacante y lo pasa por Op.literal.
● Preguntas frecuentes
¿Qué es Inyeccion en ORM?
Inyeccion contra aplicaciones que usan un ORM, abusando de consultas dinamicas, asignacion masiva o salidas a SQL crudo para manipular el acceso a datos. Pertenece a la categoría de Ataques y amenazas en ciberseguridad.
¿Qué significa Inyeccion en ORM?
Inyeccion contra aplicaciones que usan un ORM, abusando de consultas dinamicas, asignacion masiva o salidas a SQL crudo para manipular el acceso a datos.
¿Cómo funciona Inyeccion en ORM?
La inyeccion en ORM ocurre cuando una entrada influida por el atacante llega a un ORM (Hibernate, Entity Framework, SQLAlchemy, ActiveRecord, Sequelize, Prisma, Django ORM) a traves de APIs que construyen consultas dinamicamente. Patrones vulnerables: concatenacion en HQL/JPQL, where(string) con interpolacion en ActiveRecord, Op.literal en Sequelize, text() con formato en SQLAlchemy, asignacion masiva de atributos no previstos, y parametros inseguros de ordenacion o filtrado en APIs JSON. Las consecuencias van desde la inyeccion SQL clasica hasta el bypass de autorizacion y la escalada de privilegios cuando los controles viven en la capa ORM. Defensas: query builders parametrizados, listas blancas estrictas para campos ordenables o filtrables, permiso explicito de atributos y evitar los escape hatches para entradas no confiables.
¿Cómo defenderse de Inyeccion en ORM?
Las defensas contra Inyeccion en ORM combinan habitualmente controles técnicos y prácticas operativas, como se detalla en la definición.
¿Cuáles son otros nombres para Inyeccion en ORM?
Nombres alternativos comunes: Inyeccion HQL, Inyeccion JPQL.
● Términos relacionados
- attacks№ 1084
Inyección SQL
Ataque de inyección de código que incrusta SQL controlado por el atacante en una consulta a la base de datos para leer, modificar o destruir datos.
- attacks№ 743
Inyección NoSQL
Ataque de inyección que manipula operadores, JSON o el lenguaje de consulta de una base NoSQL para eludir la lógica o extraer datos.
- attacks№ 1106
Abuso de procedimientos almacenados
Explotacion de procedimientos almacenados privilegiados o inseguros para ejecutar SQL arbitrario, comandos del sistema operativo o escalar privilegios desde la base de datos.
- vulnerabilities№ 653
Asignación masiva
Vulnerabilidad en la que la aplicación enlaza ciegamente campos del cliente a propiedades internas, permitiendo al atacante establecer atributos que no debería controlar.
- appsec№ 538
Validación de entrada
Comprobación del lado del servidor que verifica que cada entrada no confiable cumple el tipo, longitud, rango, formato y conjunto de valores esperados antes de ser procesada.