自制软件维护者如何确保每个公式的二进制文件的真实性?

How does homebrew maintainers ensure the authenticity of binaries from each formula?

由于 homebrew 是社区驱动的,如果有人提交恶意公式会发生什么。这会被合并到主存储库中并最终被其他人安装吗?自制软件如何防止这种情况?

这些事情可能会发生。普遍的共识似乎是可能性小到可以忽略。 Google、亚马逊等 IT 公司完全可以让员工使用它,所以如果你也这样做可能也没问题。

Google: 90% of our engineers use the software you wrote (Homebrew) [...]

--- Max Howell, initiator of Homebrew (https://twitter.com/mxcl/status/608682016205344768)

点评作品

合并恶意公式其实并不那么容易。事实上,您需要一个 GitHub 帐户并建立一个 GitHub 个人资料(以提高自己的可信度)是一项艰苦的工作(您必须编程),这可能是第一道防线。

在 Pull Request 过程中,确实有人在查看公式。任何明显的东西都不应通过,此外,人们在那里并进行检查的事实可能会阻止许多人甚至试图提出恶意的东西。

可能的攻击

是否真的发生过存储库黑客攻击?很难说,因为下面的例子很可能只是一个无心之失。

CVE-2008-0166

2008 年,一位过度活跃的 Debian 维护者向 OpenSSL 引入了一个错误,显然是为了“清理代码”。 (https://www.schneier.com/blog/archives/2008/05/random_number_b.html)

现在让我们转向其他可能的攻击机制

打字抢注

攻击者上传了一个与流行包同名的包。人们打错字并下载欺骗性的。

这已在 N. P. Tschacher 的学士论文中成功地证明了 Pypi,请参阅 incolumitas.com/2016/06/08/typosquatting-package-managers/

任何类型的人工审查都应该发现它,因此 Homebrew 可能不会受到它的影响。

关于信任的反思

(https://www.ece.cmu.edu/~ganger/712.fall02/papers/p761-thompson.pdf)

肯·汤普森 (Ken Thompson) 的著名文章,它引导您完成将特洛伊木马插入软件堆栈(包括编译器和应用程序)的过程,因此它存在于两者中,但在任何一个中都不容易检测到。

依赖性混乱

(https://www.schneier.com/blog/archives/2021/02/dependency-confusion-another-supply-chain-vulnerability.html)

选择一家 运行 内部软件包存储库的公司。发布与公司内部包同名的 public 包。然后,软件包安装程序可能会错误地优先考虑 public 名称,因此公司员工突然开始安装您的软件包。