
CVE-2026-0603 — Updated!
Hibernate ORM SQL Injection di Secondo Ordine
CVE-2026-0603 Hibernate ORM Injection / SQL Injection di Secondo Ordine
★ CVE-2026-0603 Hibernate SQL Injection PoC ★
https://github.com/user-attachments/assets/2e7c3a89-e26f-48cd-af0b-8b82d32ce71f
Panoramica
CVE-2026-0603 è una vulnerabilità di SQL Injection di Secondo Ordine in Hibernate ORM, un framework ORM Java ampiamente utilizzato.
Quando una chiave primaria di tipo stringa fornita dall'utente e contenente un payload SQL malevolo viene utilizzata in un'operazione bulk DELETE o UPDATE, Hibernate inserisce il valore direttamente nella clausola WHERE senza sanitizzazione, causando cancellazione o modifica massiva non intenzionale di record del database.
Versioni Affette
| Categoria | Versione |
|---|---|
| Vulnerabile | Hibernate ORM 5.2.8 ≤ versione ≤ 5.6.15 |
| Corretta | Nessuna patch ufficiale (5.6.x EOL) |
Impatto
- Cancellazione massiva di record su più tabelle
- Modifica massiva di record su più tabelle
- Potenziale esfiltrazione di dati sensibili dal database
Ambiente
docker build -t cve-2026-0603-hibernate-vuln .
docker run --rm -it -p 8080:8080 --name hibernate-vuln cve-2026-0603-hibernate-vuln
PoC
Dopo aver avviato l'ambiente vulnerabile, seguire i passaggi riportati di seguito per riprodurre l'attacco.
Passaggio 1. Registrarsi con un username malevolo
username: ' or '1' = '1
Passaggio 2. Attivare update o delete
Cliccare il pulsante update o delete sull'account registrato.
Passaggio 3. Confermare che tutti i dati utente sono interessati
Verificare che la query DELETE o UPDATE sia stata applicata a tutte le righe, non solo all'account registrato. Per DELETE, tutti i record di entrambe le tabelle vengono rimossi. Per UPDATE, tutti i record vengono modificati con i valori forniti dall'attaccante.
Mitigazione
- Rimuovere l'impostazione
InlineIdsOrClauseBulkIdStrategydaapplication.yml - Se
InlineIdsOrClauseBulkIdStrategydeve essere utilizzata, applicare una rigorosa validazione dell'input basata su whitelist su qualsiasi valore di chiave primaria fornito dall'utente per rifiutare i caratteri di controllo SQL