内容提要
开源社区发现GitHub上删除的内容和私有存储库的数据仍然可以永久访问,这是GitHub官方故意设计的。安全软件公司Truffle Security发现了CFOR漏洞,建议通过密钥轮换来修复。
延伸解读
CFOR漏洞的机制与影响
CFOR(跨Fork对象引用)漏洞允许通过提交哈希值访问已删除或私有Fork中的数据。即使Fork被删除,其提交仍可通过原始仓库或其它Fork访问。攻击者可暴力破解短SHA-1值(最小4字符)获取提交哈希,进而访问敏感信息。Truffle Security在大型AI公司的公共仓库中发现了40个有效API密钥,凸显了风险的普遍性。
私有仓库数据暴露的常见场景
许多团队先创建私有仓库开发内部功能,再Fork出私有版本添加专有代码,最后将上游仓库公开。但公开上游后,私有Fork中在公开前提交的代码会通过公共仓库网络暴露。这是因为更改可见性会分裂仓库网络,而公开前的提交仍可访问。这种工作流非常普遍,导致机密数据无意泄露。
GitHub的立场与用户认知差距
GitHub官方回应称此行为是“故意设计”,并提供了说明文档。然而,普通用户通常将私有和公共仓库的分离视为安全边界,认为私有数据不会公开。这种认知差距使得用户可能在不了解仓库网络实际工作原理的情况下,面临数据泄露风险。Truffle Security认为,这种设计缺陷降低了安全性。
应对建议:密钥轮换与风险意识
Truffle Security建议,修复公共GitHub仓库上泄露密钥的唯一方法是通过密钥轮换。用户应意识到,只要存在Fork,对仓库网络的任何提交都会永久存在。因此,避免在提交中硬编码敏感信息,并定期轮换密钥,是降低风险的关键措施。同时,团队应了解仓库网络的行为,以制定更安全的工作流程。
Q&A
GitHub上删除的内容为什么仍然可以访问?
GitHub上删除的内容可以访问是因为这是GitHub官方故意设计的,用户可以通过提交哈希值访问已删除的提交数据。
CFOR漏洞是什么?
CFOR漏洞是指当一个存储库fork可以访问另一个fork中的敏感数据时出现的漏洞,允许用户通过提交哈希值访问已删除的数据。
如何修复GitHub上的数据泄露问题?
Truffle Security建议通过密钥轮换来修复公共GitHub存储库上泄露的密钥问题。
私有存储库的数据会被公开吗?
是的,私有存储库的数据在创建私有fork后可能会被公众访问,尤其是在将上游存储库公开后。
GitHub的设计如何影响数据安全?
GitHub的设计允许通过暴力破解commit hash来访问已删除的数据,这增加了数据泄露的风险。
Truffle Security发现了什么问题?
Truffle Security发现GitHub上存在CFOR漏洞,导致用户可以访问已删除的fork存储库中的敏感数据。