Git签名漏洞:哈希链可被篡改
Git Hash Chain Malleability

你以为Git的签名机制能确保代码不可篡改?这项研究彻底打破了这个幻想。攻击者无需私钥,甚至不用破解SHA2,就能生成一个拥有完全相同树结构、元数据和有效签名的新提交,唯独哈希值不同。这种现象被称为“哈希链可塑性”(hash chain malleability)。研究者揭示了三种攻击路径:利用ECDSA的代数反转、在RSA和EdDSA中插入未哈希的OpenPGP子包,以及对S/MIME中CMS信封进行非标准DER长度重编码。更可怕的是,这些伪造的提交能通过Git本地验证,甚至在Github上获得“Verified”徽章。这对依赖哈希进行依赖锁定(如Nixpkgs、Go modules)和可复现构建的系统构成了严重威胁。
"给定任何已签名的提交,攻击者无需访问签名密钥,也无需破解SHA2,就能生成第二个具有相同树结构、相同元数据、有效签名以及来自Github等Git Forge的“Verified”徽章的不同提交,两者仅在提交哈希上存在差异。"