本仓库包含一个概念验证(PoC),用于演示 CVE-2024-52005——Git 中的一个漏洞,该漏洞允许在 Git 操作期间通过 sideband 通道注入 ANSI 转义序列。
CVE-2024-52005 是一个高危(CVSS 7.5)漏洞,影响 2.48.1、2.47.3、2.46.5、2.45.4 和 2.44.3 之前的 Git 版本。
创建此 PoC 是为了证明某些加固的容器镜像在其 VEX(漏洞可利用性交换,Vulnerability Exploitability eXchange)文档中错误地声称“not_affected”(不受影响)状态,尽管它们实际搭载的是易受攻击的 Git 版本。
该漏洞允许攻击者:
使用此 GitHub 仓库直接测试 DHI ArgoCD 容器:
docker run --rm -it dhi.io/argocd:3 sh -c '
git clone https://github.com/andrewd-cg/cve-2024-52005-poc.git /tmp/poc &&
cd /tmp/poc &&
sh docker-test.sh
'
此命令将:
如果在输出中看到 ^[[31m 或 ^[[32m,则确认漏洞存在。
克隆仓库并在本地运行测试:
git clone https://github.com/andrewd-cg/cve-2024-52005-poc.git
cd cve-2024-52005-poc
./test_ansi_injection.sh
此脚本将:
# Create malicious repository with social engineering payload
./exploit_cve_2024_52005.py create social_engineering
# Test against vulnerable container
./exploit_cve_2024_52005.py test
# View results
cat -v /tmp/cve-2024-52005-output.log
Attacker creates public GitHub repo → ArgoCD clones it automatically →
Git hook injects ANSI codes → Hides backdoor in deployment logs
Developer clones repo → Malicious hook runs → Injects fake "Build PASSED" →
Real failures hidden → Vulnerable code deployed to production
Security scanner clones repo → Hook injects ANSI codes →
Shows "0 vulnerabilities" → Real vulnerabilities hidden →
Malicious code passes review
该框架包含 8 种预构建的攻击载荷:
许多容器镜像声称对 CVE-2024-52005 为“not_affected”(不受影响),理由如下:
{
"justification": "vulnerable_code_cannot_be_controlled_by_adversary"
}
对于设计用于克隆不受信任仓库的容器来说,这是不正确的:
攻击者确实可以通过 Git 钩子和 sideband 消息控制易受攻击的代码路径。
受 CVE-2024-52005 影响的 Git 版本:
更新到已修补的版本:
# Check your version
git --version
# Update via package manager
apt update && apt upgrade git # Debian/Ubuntu
brew upgrade git # macOS
如果你无法立即更新:
# Test any container image
docker run --rm -v $(pwd)/ansi-test-repo:/repo:ro YOUR_IMAGE:TAG \
sh -c 'git clone /repo /tmp/test 2>&1' | cat -v
# Look for ANSI codes like ^[[31m in the output
此 PoC 的创建目的:
仅用于经授权的安全测试。 请勿在你不拥有或未经许可的系统上使用本工具。
MIT 许可证 - 详见 LICENSE 文件
作为容器镜像安全研究的一部分而创建,旨在展示准确披露和评估漏洞的重要性。
发现问题或有改进建议?欢迎提交 Pull Request!