由于 homebrew 是社区驱动的,如果有人提交恶意公式会发生什么。这会被合并到主存储库中并最终被其他人安装吗?自制软件如何防止这种情况?
1 回答
这些事情可能会发生。普遍的共识似乎是可能性小到可以忽略。像谷歌、亚马逊等 IT 公司完全可以让员工使用它,所以如果你也这样做可能也没问题。
谷歌:我们 90% 的工程师使用您编写的软件 (Homebrew) [...]
--- Max Howell,Homebrew 的发起人 ( https://twitter.com/mxcl/status/608682016205344768 )
评审作品
合并恶意公式实际上并不容易。您需要一个 GitHub 帐户并且建立一个 GitHub 个人资料(以提高自己的可信度)是一项艰苦的工作(您必须编程)这一事实可能是第一道防线。
在拉取请求过程中,有实际的人在查看公式。没有什么明显的东西应该通过,而且,有可能只是人们在那里并进行检查的事实阻止了许多人甚至试图提出恶意的东西。
可能的攻击
是否真的发生了任何存储库黑客攻击?很难说,因为下面的例子很容易只是一个诚实的错误。
CVE-2008-0166
2008 年,一位过度活跃的 Debian 维护者向 OpenSSL 引入了一个错误,显然是为了“清理代码”。(https://www.schneier.com/blog/archives/2008/05/random_number_b.html)
现在让我们转向其他可能的攻击机制
拼写错误
攻击者上传了一个名称与流行包相似的包。人们会打错字并下载伪造的。
在 NP 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 的著名文章将引导您完成将特洛伊木马插入软件堆栈(编译器和应用程序)的过程,以便它存在于两者中,但在任何一个中都不容易检测到。
依赖混淆
选择一家运行内部包存储库的公司。发布与内部公司包同名的公共包。然后,软件包安装程序可能会错误地优先考虑公共名称,因此公司的员工会突然开始安装您的软件包。