有没有一种流程来确保没有恶意软件?
没有。根本没有任何保证。
然而,有几种机制可以尝试检测它,但老实说,你可能没有像你希望的那样安全。
一个项目首先必须被添加到Ubuntu。正如Rinzwind所说,这个阶段会进行一些检查,但这只是Ubuntu软件包生命周期中冰山一角。
长期软件包的第一道真正防线是它们的项目维护者。这些人负责管理他们的项目并接受改进补丁。他们是人类。他们会犯错误和遗漏事情。有些人可能懒散。
一个坏人可能通过将恶意软件与真正的改进混在一起来骗过维护者。
如果一个项目维护者允许了一些不好的东西进入项目,除非经过成功的审计,否则这段代码最终会出现在Ubuntu用户的机器上。
安全审计是第二步。这是对代码进行检查,并运行监视器以检测恶意内容。据我所知,Canonical没有专门的安全团队,但有两个社区团队(Ubuntu安全团队和MOTU SWAT)共同处理所有软件包。
只有在每一行代码在发送给用户之前都经过适当检查时,审计才能真正发挥作用。考虑到我们所讨论的代码量和更新数量,这并不实际。以这种方式进行审计将需要大量的时间和金钱。
在开源世界中有一个假设,即只要某人能够查看源代码,他们就已经查看过了。这是一种非常危险的理念。
安全修复主要是对人们发现和披露的漏洞做出反应。如果有人披露他们发现的漏洞会发生什么?
其他“最终用户”报告问题是最后一个真正的检测机制,坦白说,良好的恶意软件不会让用户知道存在问题,直到为时已晚。编写良好的恶意软件不会翻转你的屏幕或窃取你的所有带宽,它会悄悄地在后台记录你的所有银行详细信息,然后将它们全部发送到某个匿名的地方。
整个过程取决于上游项目维护其自身的安全水平。如果有人在Gnome计算器的维护者面前悄悄通过了某些东西,那么很可能其他人都会忽略它。安全团队也不会怀疑它。
幸运的是,大多数维护者都很擅长他们的工作。他们了解自己的代码库,如果他们不理解补丁,他们会基于补丁不够清晰而拒绝它们。
从风险评估的角度来看,使用不太流行的东西意味着可能有更少的人审查代码。但同样地,可能也会有更少的提交,所以只要维护者不懒惰(或邪恶),他们可能会有更多时间处理每个提交。很难准确说出你面临多大的风险。开源软件的安全性取决于能力强的人审查代码。
相反,合作伙伴和购买仓库中的闭源项目完全没有经过社区的审查。Canonical可能有一些源代码访问权限,但坦率地说,即使他们有源代码访问权限并且愿意进行彻底的审查,我怀疑他们是否有足够的资源来做到这一点。
同样的情况也适用于PPA,除非你愿意深入研究源代码,否则你几乎得不到任何保护。用户可以随意添加他们喜欢的内容到源代码中,除非你自己去检查(并且有能力检测恶意软件),否则你就像是被狼群包围的绵羊。人们可以报告有问题的PPA,但是否会有所行动取决于其他人是否进行了检查并确认了问题。如果一个大型网站(比如OMGUbuntu)推荐了一个PPA(他们经常这样做),那么很多用户可能会在后续遇到问题。
更加严重的是,Linux用户市场份额较低意味着我们能够找到的可用软件较少,以便我们追踪恶意代码。我不想说这个,但至少在Windows系统上,有数十家公司每天都在努力寻找糟糕软件的工作原理、如何检测它以及如何清除它。这是一个出于必要而诞生的市场,虽然我不愿意这样说,但情况可能会在变好之前变得更糟。
对于那些安全偏执狂,我之前写了一篇简短的文章:
Linux并非无懈可击,请不要这么说。将恶意软件偷偷放入软件库可能不会成为分发恶意软件的混蛋们的主要攻击手段。更有可能(在我看来)他们会利用用户的贪婪和愚蠢来诱使他们安装被感染的.deb文件。