开源软件是否有可能拥有病毒/间谍软件/恶意软件?

时间:2009-03-09 14:35:48

标签: open-source

很抱歉,如果这是一个愚蠢的问题,但有时我会看到复活节彩蛋和像Aptitude这样的程序。 (Debian的包管理器)

是否可能是否有更多险恶的功能进入开源软件?

17 个答案:

答案 0 :(得分:10)

这可能会更难,因为源代码就在那里。作者指望在运行之前没有人费心去阅读源代码,这对很多人来说都是如此。我知道我不打算阅读我运行的开源程序的源代码。在一个更大的项目中,它更难,因为代码经常被审查,但如果只有一个作者,那么它就变得容易多了。

答案 1 :(得分:10)

这当然是可能的,但它更复杂。我不知道任何实际的恶意软件,但人们犯了类似的错误。 (我知道已发现的错误;显然,我不知道有多少错误。)

如果将恶意软件置于闭源软件中,找到它的唯一方法是检测效果并分析二进制文件。有些人非常善于分析二进制文件。

在开源软件中,任何人都可以查看源代码。对于大多数包裹而言,并不是很多,但是被发现的可能性要高得多。一旦发现,任何人都可以修补软件,做好事情而不是坏事。此外,大多数开源软件都有公开可用的存储库,这意味着任何人都可以追踪代码的历史记录,并且(至少是化名)谁做了什么。还有一种趋势是在开源中生成更易读的代码,因此更改将更加突出。

当然,需要注意的是,我们大多数人真的不知道在软件安全方面要寻找什么。如果我运行压缩程序,它将我的文件压缩到看起来像乱码的较短版本,我可以得到原来的,我知道这是有效的。如果它将其更改为声称已加密的乱码,我不知道如何判断它是否已加密。

答案 2 :(得分:6)

任何软件都可能包含恶意部分(有意或无意)。开源的优点是你可以检查它(如果你愿意并且有时间这样做)。

答案 3 :(得分:5)

是的,有可能,请参阅Debian OpenSSL崩溃的一个很好的例子: http://www.metasploit.com/users/hdm/tools/debian-openssl/

虽然这不是病毒/间谍软件/恶意软件,但它清楚地显示了开源软件可能出现的问题。

答案 4 :(得分:5)

我无法相信没人提到Ken Thompson's compiler virus

访问源代码可以提供合理程度的保证,即程序不会恶意行为。但是,除非你检查了以下其中一个:

  1. 编译器的二进制输出
  2. 编译器本身的二进制代码
  3. 编译器的源代码(及其编译器及其编译器等)以及用于编译它的编译器的二进制代码。
  4. 您最终可能会在编译后的二进制文件中出现从未出现在源代码中的恶意代码。不可否认,这是一种非常不可能且极其困难的攻击形式,但理论上可能会以源代码(项目或编译器)无法检测到的方式将恶意代码引入开源项目。

    如果您不是为CIA(或其他政府的同等机构)工作,编译器安全可能不是您必须担心的事情。但这是一个非常酷的概念。

答案 5 :(得分:3)

我会说它显然是可能的。它需要的是代码在没有经过充分审查的情况下被接受。由于审稿人是人,因此提出允许这样做的情况并不难。

然后,更有趣的问题就变成了可能是如何将恶意软件接受到可以造成伤害的某个软件包中。不幸的是,这很难回答。到目前为止,我们似乎做得还不错(敲木头),至少。

我猜Linus's law(“有足够的眼睛,所有的错误都很浅”)是正确的,但很容易认为只是因为某些东西是开源的,人们会花很多时间来关注它的代码。据我所知,这通常不正确。

编辑:如果错误地归因于上述Linus定律的措辞。

答案 6 :(得分:3)

原则上可行吗?当然。任何软件都可以做人们不想要的事情。

有可能在实践中吗?反对的论点当然是软件可用,并且很多人都在关注它,所以它会在它造成太多伤害之前被发现。

另一方面,有一个Underhanded C Code Contest,http://www.underhanded-c.org/,你在其中提交故意行为不当的程序,但是在检查来源时,不良行为的原因并不明显。< / p>

然后当然是Debian SSL错误,其中使用Debian上的OpenSSL库生成的SSL密钥非常不安全。显然,这只是一种无能的行为(Hanlon的Razor,所有人),但它显示了安全问题如何潜入开源代码。使用弱密钥和SSH访问,您不需要代码中的病毒,只需在生产系统上运行时利用弱代码。

将其视为是/否/可能:)

答案 7 :(得分:1)

是的,有可能,闭源软件可能出现同样的情况(团队中的恶意开发人员等)

可以说,开源的可能性较小,因为当注意到任何类似的事情时,任何其他用户都可以提取问题代码,这不再是问题。

答案 8 :(得分:0)

提醒一下,

  • SSH Backdoored before
  • Wordpress后来的
这两个都是在攻击的结果中发生的,因此原始开发人员没有种植它们。我认为这种情况证明它可以但不是那么可能,如果应用程序足够流行,它会很快被提升。

答案 9 :(得分:0)

  

更多险恶的功能是否有可能进入开源软件?

正式不,恶意软件功能相对不太可能进入并且长时间不被注意。但是:

  • 持有分发源的服务器可能(并且已经)受到威胁,因此您下载的内容与开源开发工作不对应;

  • 在二进制发行版(通常用于Windows)的情况下,软件的安装程序可以与恶意软件打包在一起。再次,正式这种情况很少发生;一个例子是LimeWire的早期版本,它安装了一个“购物助手”联盟费用窃取者BHO来“支持该项目”,并且失去了很多善意;

  • 但是,也有一些诈骗艺术家蹲下着名的开源项目的搜索结果(再次,最常见的是与文件共享软件),并提供他们自己的与恶意软件捆绑在一起的调整安装程序。在下载之前总是找到项目的官方网站。

答案 10 :(得分:0)

开源安全性优于封闭源安全性的另一个例子是interbase backdoor

来自The Register

后门密码已隐藏在Borland / Inprise广受欢迎的Interbase数据库软件中至少七年,可能会使公司和政府机构的数万个私人数据库暴露于互联网上的未经授权的访问和操纵,专家说。

密码是在Interbase成为开源时发现的。

这并不意味着开源软件的安全性是完美的,甚至是好的。当全部有数以千计的可远程利用的安全漏洞时,谁需要将恶意软件插入到原始软件中?

答案 11 :(得分:0)

类似的闭源软件可以是病毒/间谍软件/恶意软件,开源也可以。以及有多少可怕的开源软件。

到目前为止,我所看到的所有封闭源窗口软件都是某种恶意软件,所以偏见是封闭源应用程序在整体上有更高的机会。

是谁阻止了它?即使软件是开源的,只有糟糕的软件允许任何人在未经授权的情况下触摸发布存储库。通常会有维护者审查所有传入的补丁。

生产和使用的所有软件中有99%质量差,并且存在错误。

答案 12 :(得分:0)

有可能,但不太可能。

开源代码没有什么特别之处,它使得它对包含坏事物具有神奇的抵抗力,但是由一群人积极开发的开源代码不太可能包含恶意代码,因为有人会注意到并吹响了哨声。 / p>

此外,在大多数开源项目中,可以通过查看项目的源存储库来跟踪任何特定代码段的历史记录,这意味着可以识别恶意代码段的作者。

如果有疑问,您可以随时自行查看代码,或聘请某人为您审核代码。当然,代码审查通常不会捕获微妙的错误或错误,但恶意代码可能更加明显。

答案 13 :(得分:0)

你真的知道你用的是什么吗?你检查一下吗?典型的用户是否检查或护理?

例如谷歌搜索关键字:repository compromisedgpg repository compromised或其他内容。

答案 14 :(得分:0)

有可能,因为它像任何专有软件一样代码。但是,主要区别在于您 - 以及社区 - 可以访问代码,而这一事实足以阻止它在几乎所有情况下发生。此外,大量的库和内核版本使恶意软件不太可能成功。

答案 15 :(得分:0)

是的,这是可能的,这取决于如何仔细控制对源代码的提交访问以及如何仔细监控这些提交。有些项目有一些主要开发人员从社区请求补丁并将其提交给代码库,其他项目将授予更多开发人员访问权限。同样,一些项目有很多人在进行更改时审查源代码。

答案 16 :(得分:0)

确实如此,但通常会在它成为问题之前将其注意到并删除。任何维护良好的开源软件都有很多人检查每个版本是否有任何变化。