漏洞概述 该漏洞涉及在Git仓库中通过绑定一个已知OID到另一个仓库,无需证明字节的所有权,从而泄露Git LFS对象内容。具体来说,攻击者可以通过构造上传文件名绕过目录限制,写入任意文件到仓库工作树中。 影响范围 影响版本:所有使用Git Large File Storage (LFS) 的仓库。 影响功能:Git LFS对象的 dedupe 功能。 潜在风险:攻击者可以泄露其他仓库中的Git LFS对象内容,可能导致敏感信息泄露。 修复方案 1. 验证内容哈希:在LFS dedupe过程中,验证上传文件的内容哈希是否与预期一致。 2. 限制文件写入:防止通过构造上传文件名绕过目录限制,确保文件只能写入到指定的目录中。 3. 加强权限控制:确保只有经过验证的用户才能执行上传操作,并且上传操作需要证明字节的所有权。 POC代码 代码解释 验证内容哈希:在上传文件时,计算文件内容的SHA256哈希值,并与预期的OID进行比较。如果两者不一致,则返回 错误。 限制文件写入:通过 将文件内容复制到临时文件中,确保文件内容正确无误后再进行后续操作。 通过以上措施,可以有效防止该漏洞被利用,保护Git仓库的安全性。