Ubuntu软件中心的程序是否没有间谍软件?

在Ubuntu软件中心,有不同的程序部分。
  • 由Ubuntu提供
  • Canonical合作伙伴
  • 可购买
我知道这些都是开源的;但是Canonical是否进行任何验证过程,以确保它们没有任何间谍软件恶意软件
我想知道是否有人有时间查看所有这些(目前大约有2355个程序),每个版本的软件代码!!
我担心是因为我经常从软件中心安装相对不太受欢迎的软件 :)

1“购买”软件不是开源的,否则人们就不需要购买它了。而合作伙伴软件也并非始终开源,比如Skype就不是开源的。 - Martin Ueding
8@queueoverflow 可以对开源软件收费。 - dv3500ea
@dv3500ea: 当然可以,但我认为很少有公司考虑这种组合。 - Martin Ueding
3@queueoverflow:qtiplot就是一个例子,收费提供二进制文件和支持合同,你也可以自行编译免费使用。 :-) - Christoph
2嗯,我认为目前在“购买”部分没有任何开源软件,但将来可能会有。 - dv3500ea
1@christoph:我猜大多数人不知道如何编译它,所以这样处理是有道理的。 - Martin Ueding
@queueoverflow:确切地说,这很好地表明开源和购买确实可以共存。尽管不像我希望的那样频繁。 - Christoph
4个回答

有没有一种流程来确保没有恶意软件?没有。根本没有任何保证。
然而,有几种机制可以尝试检测它,但老实说,你可能没有像你希望的那样安全。
  1. 一个项目首先必须被添加到Ubuntu。正如Rinzwind所说,这个阶段会进行一些检查,但这只是Ubuntu软件包生命周期中冰山一角。

  2. 长期软件包的第一道真正防线是它们的项目维护者。这些人负责管理他们的项目并接受改进补丁。他们是人类。他们会犯错误和遗漏事情。有些人可能懒散。

    一个坏人可能通过将恶意软件与真正的改进混在一起来骗过维护者。

    如果一个项目维护者允许了一些不好的东西进入项目,除非经过成功的审计,否则这段代码最终会出现在Ubuntu用户的机器上。

  3. 安全审计是第二步。这是对代码进行检查,并运行监视器以检测恶意内容。据我所知,Canonical没有专门的安全团队,但有两个社区团队(Ubuntu安全团队和MOTU SWAT)共同处理所有软件包。

    只有在每一行代码在发送给用户之前都经过适当检查时,审计才能真正发挥作用。考虑到我们所讨论的代码量和更新数量,这并不实际。以这种方式进行审计将需要大量的时间和金钱。

    在开源世界中有一个假设,即只要某人能够查看源代码,他们就已经查看过了。这是一种非常危险的理念。

    安全修复主要是对人们发现和披露的漏洞做出反应。如果有人披露他们发现的漏洞会发生什么?

  4. 其他“最终用户”报告问题是最后一个真正的检测机制,坦白说,良好的恶意软件不会让用户知道存在问题,直到为时已晚。编写良好的恶意软件不会翻转你的屏幕或窃取你的所有带宽,它会悄悄地在后台记录你的所有银行详细信息,然后将它们全部发送到某个匿名的地方。

整个过程取决于上游项目维护其自身的安全水平。如果有人在Gnome计算器的维护者面前悄悄通过了某些东西,那么很可能其他人都会忽略它。安全团队也不会怀疑它。
幸运的是,大多数维护者都很擅长他们的工作。他们了解自己的代码库,如果他们不理解补丁,他们会基于补丁不够清晰而拒绝它们。
从风险评估的角度来看,使用不太流行的东西意味着可能有更少的人审查代码。但同样地,可能也会有更少的提交,所以只要维护者不懒惰(或邪恶),他们可能会有更多时间处理每个提交。很难准确说出你面临多大的风险。开源软件的安全性取决于能力强的人审查代码。
相反,合作伙伴和购买仓库中的闭源项目完全没有经过社区的审查。Canonical可能有一些源代码访问权限,但坦率地说,即使他们有源代码访问权限并且愿意进行彻底的审查,我怀疑他们是否有足够的资源来做到这一点。
同样的情况也适用于PPA,除非你愿意深入研究源代码,否则你几乎得不到任何保护。用户可以随意添加他们喜欢的内容到源代码中,除非你自己去检查(并且有能力检测恶意软件),否则你就像是被狼群包围的绵羊。人们可以报告有问题的PPA,但是否会有所行动取决于其他人是否进行了检查并确认了问题。如果一个大型网站(比如OMGUbuntu)推荐了一个PPA(他们经常这样做),那么很多用户可能会在后续遇到问题。
更加严重的是,Linux用户市场份额较低意味着我们能够找到的可用软件较少,以便我们追踪恶意代码。我不想说这个,但至少在Windows系统上,有数十家公司每天都在努力寻找糟糕软件的工作原理、如何检测它以及如何清除它。这是一个出于必要而诞生的市场,虽然我不愿意这样说,但情况可能会在变好之前变得更糟。
对于那些安全偏执狂,我之前写了一篇简短的文章:Linux并非无懈可击,请不要这么说。将恶意软件偷偷放入软件库可能不会成为分发恶意软件的混蛋们的主要攻击手段。更有可能(在我看来)他们会利用用户的贪婪和愚蠢来诱使他们安装被感染的.deb文件。

3经过审核的软件仓库的好处在于它们通常比非仓库模式下的软件安装(例如从exe文件安装)更加安全许多数量级。所以,是的,你永远不会完全安全。但总体而言,你可能会相对安全一些。 - Kzqai
你是不是要写 如果有人公开揭示他们发现的漏洞会发生什么 - tshepang

是的。软件包由社区检查(所以有可能安装一些恶意软件,但这个消息会很快在所有用户中传播开来)。
应用程序需要遵守许可证中概述的非常严格的规定。 新软件包的维基页面提供了更多信息。
通过 MOTU 过程 尚未包含在 Ubuntu 中的软件包需要经过额外的审查,并通过特殊的审核流程,在上传之前由 存档管理员进行最终审核。有关审核流程的更多信息,包括将应用的标准,请参阅 代码审查员页面。鼓励开发人员在提交软件包进行审核之前,根据这些准则自行检查其软件包。
为了获得更高质量的错误报告,请为您的软件包编写一个 apport hook
话虽如此:总体思路是,如果您发现可疑的问题,请在 launchpad、askubuntu 和 ubuntuforums 上报告,然后会有人处理。
可能发生的情况是,恶意软件的创建者制作了一个有效的软件包,得到了接受,然后进行更新以添加恶意软件。至少其中一个人会发现并在某个地方报告此事。这种方式不会让大量机器感染。 (将其传播到我们的机器上需要付出太多努力,而潜在回报有限:针对Windows机器更容易)。 bumblebee的一次严重错误的例子。有人错过了一个空格,导致/usr目录被删除... 一些人受到了影响,有人发布了带有红旗警告的警示,现在我们都知道了。创建者迅速修复了问题,但已经对几个系统造成了损害。 这是一个错误而不是故意行为,所以这种情况是可能发生的 ;)

4需要注意的是,与Ubuntu软件中心集成的其他来源(如Getdeb或各种PPA)存在一定的风险。但是,如果您不使用这些来源,那么您应该是安全的。 - jnv
@jnv 不错的决定 :) 我修改了第一行,现在也包括了ppas ;) - Rinzwind
你的例子是无效的。存储库中没有bumblebee。 - Lincity
我不同意。任何被安装的东西都会被平等评估:用户会进行检查,所以这是一个意外出错的有效例子。因此,故意出错也是可能的,但重点应该放在用户告诉其他人它有缺陷上,而不是缺陷本身 ;) - Rinzwind
问题是关于软件中心的。 - Lincity

我认为没有人能向你保证这一点。你需要查看将软件包添加到Debian软件包索引所需的步骤,但我认为你应该能够将某些恶意内容悄悄地插入其中。
你可以设置一个虚拟机,在那里尝试运行软件,然后使用类似于iftop的工具来查看网络流量,以确定该应用程序是否与外部通信。很有可能你永远也看不到任何东西,因为它隐藏得太好了。
开源并不意味着安全,仅仅因为你可以查看代码并不意味着有人确实这样做了。

为了在launchpad上发布PPA中的代码,您需要设置openPGP并创建一个与电子邮件地址相关联的密钥。为了签署软件包,您需要在本地计算机上拥有私钥的副本和密码(密码不会存储在任何地方)。 如果软件包存在安全问题,追踪作者应该相对容易。我假设Ubuntu和Debian的主要软件仓库至少具备这种安全性。
大多数开源项目都有一个至少具备ssh级别保护(密码和/或公钥/私钥对)的中央仓库。在这里获取未经授权的访问权限比ppa稍微容易一些,但并不是微不足道的。版本控制系统通常记录每个提交的用户,并且很容易弄清楚每个提交的内容。
某人总是可以试图将某些内容插入到补丁中,但这是一项冒险的提议。大多数编码人员不会接受太难阅读的补丁。如果被发现,那基本上就完了。
仍然有一定程度的信任留给我们,所以有可能有人会将间谍软件植入Ubuntu中。也许这是我们必须担心的事情,如果Ubuntu的市场份额显著增长的话。

任何人都可以创建一个GPG密钥。我可以设置一个虚拟机,用一个假名生成一个密钥,没有人会察觉到。你必须寻找信任网络来真正评判GPG,即使那也不是绝对可靠的。 - Martin Ueding