
CVE-2026-0603 — Actualizado!
Hibernate ORM Inyección SQL de Segundo Orden
CVE-2026-0603 Inyección en Hibernate ORM / Inyección SQL de Segundo Orden
★ CVE-2026-0603 PoC de Inyección SQL en Hibernate ★
https://github.com/user-attachments/assets/2e7c3a89-e26f-48cd-af0b-8b82d32ce71f
Descripción general
CVE-2026-0603 es una vulnerabilidad de Inyección SQL de Segundo Orden en Hibernate ORM, un framework ORM de Java ampliamente utilizado.
Cuando una clave primaria de tipo string proporcionada por el usuario que contiene una carga útil SQL maliciosa se utiliza en una operación masiva de DELETE o UPDATE, Hibernate inserta el valor directamente en la cláusula WHERE sin sanitización, provocando la eliminación o modificación masiva no intencionada de registros de la base de datos.
Versiones afectadas
| Categoría | Versión |
|---|---|
| Vulnerable | Hibernate ORM 5.2.8 ≤ versión ≤ 5.6.15 |
| Parcheada | Sin parche oficial (5.6.x EOL) |
Impacto
- Eliminación masiva de registros en múltiples tablas
- Modificación masiva de registros en múltiples tablas
- Potencial exfiltración de datos sensibles de la base de datos
Entorno
docker build -t cve-2026-0603-hibernate-vuln .
docker run --rm -it -p 8080:8080 --name hibernate-vuln cve-2026-0603-hibernate-vuln
PoC
Después de iniciar el entorno vulnerable, siga los pasos a continuación para reproducir el ataque.
Paso 1. Registrarse con un nombre de usuario malicioso
username: ' or '1' = '1
Paso 2. Activar la actualización o eliminación
Haga clic en el botón de actualizar o eliminar en la cuenta registrada.
Paso 3. Confirmar que todos los datos de usuario están afectados
Verifique que la consulta DELETE o UPDATE se aplicó a todas las filas, no solo a la cuenta registrada. Para DELETE, todos los registros de ambas tablas son eliminados. Para UPDATE, todos los registros son modificados con los valores proporcionados por el atacante.
Mitigación
- Eliminar la configuración
InlineIdsOrClauseBulkIdStrategydeapplication.yml - Si se debe utilizar
InlineIdsOrClauseBulkIdStrategy, aplicar una validación de entrada estricta basada en listas blancas sobre cualquier valor de clave primaria proporcionado por el usuario para rechazar caracteres de control SQL