
CVE-2026-0603 — Mis à jour !
Injection SQL de second ordre dans Hibernate ORM
CVE-2026-0603 Injection Hibernate ORM / Injection SQL de second ordre
★ CVE-2026-0603 PoC d'injection SQL Hibernate ★
https://github.com/user-attachments/assets/2e7c3a89-e26f-48cd-af0b-8b82d32ce71f
Aperçu
CVE-2026-0603 est une vulnérabilité d'injection SQL de second ordre dans Hibernate ORM, un framework ORM Java largement utilisé.
Lorsqu'une clé primaire de type chaîne fournie par l'utilisateur et contenant une charge utile SQL malveillante est utilisée dans une opération DELETE ou UPDATE en masse, Hibernate insère la valeur directement dans la clause WHERE sans assainissement, provoquant une suppression ou modification massive non intentionnelle d'enregistrements de la base de données.
Versions affectées
| Catégorie | Version |
|---|---|
| Vulnérable | Hibernate ORM 5.2.8 ≤ version ≤ 5.6.15 |
| Corrigée | Aucun correctif officiel (5.6.x EOL) |
Impact
- Suppression massive d'enregistrements dans plusieurs tables
- Modification massive d'enregistrements dans plusieurs tables
- Exfiltration potentielle de données sensibles depuis la base de données
Environnement
docker build -t cve-2026-0603-hibernate-vuln .
docker run --rm -it -p 8080:8080 --name hibernate-vuln cve-2026-0603-hibernate-vuln
PoC
Après avoir démarré l'environnement vulnérable, suivez les étapes ci-dessous pour reproduire l'attaque.
Étape 1. S'inscrire avec un nom d'utilisateur malveillant
username: ' or '1' = '1
Étape 2. Déclencher la mise à jour ou la suppression
Cliquez sur le bouton de mise à jour ou de suppression sur le compte enregistré.
Étape 3. Confirmer que toutes les données utilisateur sont affectées
Vérifiez que la requête DELETE ou UPDATE a été appliquée à toutes les lignes, et non uniquement au compte enregistré. Pour DELETE, tous les enregistrements des deux tables sont supprimés. Pour UPDATE, tous les enregistrements sont modifiés avec les valeurs fournies par l'attaquant.
Atténuation
- Supprimez le paramètre
InlineIdsOrClauseBulkIdStrategydeapplication.yml - Si
InlineIdsOrClauseBulkIdStrategydoit être utilisé, appliquez une validation stricte des entrées basée sur une liste blanche sur toutes les valeurs de clé primaire fournies par l'utilisateur afin de rejeter les caractères de contrôle SQL