当前位置:Linux教程 - Linux - 开放源码软件的安全性隐患

开放源码软件的安全性隐患

开放源码意味着一扇打开的门吗?


Natalie Walker Whitlock ([email protected])
Casaflora Communications
2001 年 3 月


Natalie Whitlock 讨论了封闭式安全性系统的不适宜性和开放源码解决方案。她论述了 Eric Raymond 的观点、Microsoft 的 FrontPage 中著名的“后门”、同级评审的概念以及开放源码所处的两难境地:没有人能担保将检查所有的一切。然后,她从理论到实际剖析了这个观点,并与重要的 IT 执行官谈论了有关安全开放源码系统的可行性和普及性。

对某些情况来说,封闭源码意味着隐藏、保密,因而更安全。但实际上,当今使用的很多最安全的系统都基于开放源码的模型。

传统上,保密就意味着安全。您会锁上自己的屋子、汽车和所有贵重物品。在软件社区中,您“锁上”编程源代码作为保护它免受黑客和竞争者侵袭的一种手段。封闭源码阵营认为,当系统源码对所有人开放时,它就不会是真正安全的。保密就是安全,当它应用在其它安全系统时,隐藏源码能改善安全性。它减缓入侵者的入侵速度,并在发生入侵时使损失最小。另一条理由是:有了可免费获得的设计,解密高手在编写攻击系统的恶意代码时将更为容易。

公开源码后的安全性
那么,开放源码软件的安全性又怎样的呢?根据定义,开放源码软件是所有免费分发的、不特定于某个平台的程序或应用程序,而且其中的编程代码是开放的、可见的。如果其它条件都相同,封闭程序比开放程序更安全吗?

“回答不是‘不’,而是‘可能不’”开放源码的提倡者和 The New Hacker''s Dictionary 与 ""The Cathedral and the Bazaar"" 的作者 Eric S. Raymond 说。 “封闭源码并不能导致真正的安全性,而会产生一种虚假的安全感”Raymond 说。“您不知道里面到底是什么,您无法验证它,也无法检查其编码人员的人员的设想或真实性。”

在密码界中,有一句谚语:算法的安全性不应该依赖于它的保密性。这一格言对开放源码的软件很适用。

Raymond 说:“公开您的方法将导致更好的安全性这个明显矛盾的观点并非计算机软件所独有,军事和外交上的解密者知道这个观点已有一百年了:依赖编码方法的保密性而不依赖密钥的保密性是非常愚蠢的。”

根据 Raymond 和其他开放源码的拥护者,开放源码是安全操作系统唯一真正的选择。首先,无法检查和验证封闭源码应用程序和操作系统的编码是否安全。公开先前保密的代码后几乎总会被发现额外的错误和安全性漏洞。另外,封闭的专用代码在暴露出漏洞或错误时,发布可信赖的修订程序是非常困难的。

就说 2000 年 4 月的事件吧,它曾让那些 Web 站点管理员和系统管理员吓得发抖。经过四年之后,人们才发现 Microsoft 程序员在他们流行的 FrontPage Web 服务器软件中安插了一个后门。这就是事实:软件代码以不透明的二进制格式被“隐藏”起来,使得这一安全性缺口在这么长的时间内都不为大众所知。

由于开放源码的软件保证了“自由读取、重新分发、修改和使用软件的权利”,所以隐藏的后门根本不可能逃脱检测。大多数专家都认为遗漏后门这样的几率为零。毕竟,从逻辑上说,有谁会以自己的名誉冒险,在公开使用的源码中放置一个后门让别人去发现呢?

“任何将安全性托付给封闭源码软件的人都希望在他们的系统中悄悄地安放一个后门,”Open Source Initiative 的总裁 Raymond 说。“Apache 从未有象这样的行为,而且将来也不会。不论 Linux 还是 BIND 库、Perl 或任何其它可用的开放源码核心软件都不会这样。”

许多人都来关注
开放源码的软件不言而喻的安全性来自于“同级评审”这一从科学界借鉴来的概念。依据 OpenSource.org,Open Source Initiative (OSI) 的官方 Web 站点,开放源码的软件“通过支持独立的同级评审和源代码的快速演变提高了软件的可靠性和质量。”

Linux 的基本安全性理论可以归纳为“更多人的关注代表更高的安全性。”换句话说,因为源代码可供所有人评审,所以全世界众多的程序员都可以检测该代码以寻找安全性弱点。另一方面,封闭源码应用程序只由那些在关闭的房间内从事专用产品或商业秘密工作的受雇程序员或系统解密高手来审查其弱点。

“封闭源码表示只有坏家伙才能查找安全性漏洞。而对于开放源码,好人也可以开始查找安全性漏洞了。”Raymond 说。

Raymond 指出,同级评审的这一许诺促进了开放源码项目中的安全编码技术。“甚至由持怀疑态度的其他程序员评审源代码这一点,就会改变开发人员的行为,”他说。“他们编写更紧凑、更好更多的无错系统。”

“在开放源码的项目中,出错并且让整个开发社区和朋友知道是极其令人羞愧的,”Internet Security Systems Inc. 的高级研究员和 UNIX 系统工程师兼顾问 Michael H. Warfield 说。 “在敲击 Enter 键的最后一刻,即完成更改或将补丁发送到其他程序员的冷酷世界,是所能想象到的最漫长的一刻。”

同时致力于开放和封闭源码开发模型工作的 Warfield 说,在开放源码的程序员中,对个人责任可追究性有更高的标准,需要更强的专业能力。 Warfield 说:“当源码及对其的更改呈现在共众面前让任何人测试时,确保代码的正确性以及没有被任何未知方篡改就成为开发人员的个人职责所在了。”

当在开放源码中突然出现安全性问题时,会发生什么呢?“会非常迅速地修复它们。”Raymond 说。只要对比 Microsoft 事件和 ""Ping ''O Death"" 错误,就能得出这一结论。 ""Ping ''O Death"" 错误是一个由发送过大的 ICMP 信息包引起的,这一错误在被宣布的几个小时内就在 Linux 中修复好了。因为同级评审,开放源码的问题通常会在它们被广泛利用前就被发现并修正。

开放源码另一个优点是:软件实际上随时间发展并变得更为安全。由于要受到不断地同级评审,相对于类似的封闭源码软件,软件中发现新弱点的数量将随时间不断减少。但是,由于有更多的解密高手在不透明的程序中探寻并查找更隐蔽的错误,随着时间的推移,封闭源码的软件将更不安全。

理论与实际的对比
当然,仍有一些持怀疑态度的人。“简单地开放源码并不能保证安全性,”计算机顾问和州政府的系统分析员 Craig Willis 说。“与好人在查找弱点一样,那些坏家伙也在做同样的事。您可能不应该依赖于‘通过隐藏实现安全性’,但是如果攻击者可以找到一个更容易的目标,它就可以成为您的优势。”

Network Associates 的首席计算机专家 Lee Badger 反对“许多人来都关注”理论所作的人们都愿意测试相当普通的代码这一假设,他说:“我不能肯定实际情况就是这样。”

甚至一些开放源码的提倡者也承认这种进退两难的境地。GNU 邮件列表管理程序 Mailman 的程序设计者 John Viega 透露,三年来,Mailman 一直有几个明显的安全性代码问题,但是至今没人捕捉或报告这些错误。到 2000 年年中为止,包含这些安全性漏洞的 Mailman 版本已被下载了几千次,甚至在 Red Hat Professional Linux 版本 6.2 中也包含有这一程序。Viega 说,显然,每个使用 Mailman 的人都假设别人已经对 Mailman 进行了正确的安全性审查,而事实上是根本没有人这样做。

Viega 说:“我们大大地高估了开放源码在安全性方面所提供的好处,因为高质量的审查并没有象人们认为的那样多,而且有许多安全性问题的查找往往比人们想象的要难得多。”

Viega 指出,即使在标识出了 Mailman 中的安全性问题后,仍花了几个月的时间去修正这些问题,部分原因是因为它是用 Python(而不是更通用的 C)编写的,部分原因是因为安全性不是核心开发小组当时所关注的问题。

Viega 列出了几个会阻碍人们评审源代码的情况,包括象“一团乱麻”那样的代码或用不常用的语言编写的程序。另一个阻碍是人的本性:因为大多数程序员查看源代码是出于他们自己的利益,而不是出于无私的动机。

有些恶意批评者引用的一个论点是:开放源代码的编码技能与查看它的那些人的技能一样平庸。“许多开发人员除了避免几个他们所知的危险调用之外,对避免其它问题一无所知。”Viega 说。根据他关于开放源码神话的文章(请参阅本文稍后的参考资料),开发人员都普遍使用密码技术,却以破坏系统安全的方式滥用它;或者使用加密技术,但这些加密技术又太薄弱,很容易被破坏。另一个错误是开发人员尝试使用公用的密码原语来施行他们自己的协议,却没有完全理解密码协议通常比想的更复杂,并且容易出错。

Theo de Raadt 是开放源码操作系统 OpenBSD 的项目负责人,他是另一个质疑同级评审安全网的人。“人们谈论的这些关注开放源码的人 -- 他们是谁?”de Raadt 询问道。“大多数评审开放源代码的人是业余爱好者。如果让他们向您发送一些他们编写的代码,他们中的大多数最多只能写 300 行长的代码。”他说。“他们根本不是程序员。”

对开放源码的软件的另一个抱怨是:大多数错误都是在程序已经编译、测试并分发后才发现的,这不是因为有人提前坐下并查看代码的漏洞,而是因为有些问题是在使用中才出现的。除了一些例外情况,开放源码的程序通常依赖用户报告和公共论坛来发现弱点。

争论仍在继续
即使有坚决的反对者,整个业界中仍有许多人拥护开放源码的模型。事实上,2000 年 8 月 Forrester Research 报告预测:所有传统的软件供应商都将在未来四年内需要将它们的专用商业模型改为开放源码模型。

在这项研究中,Forrester 发现在被访的 2500 个 IT 经理中,有 56% 当前在使用开放源码的软件,另有 6% 计划在两年内安装这样的软件。高达 84% 的被访者同意开放源码的软件将在整个业界激起重大变革。

最重要的是,研究报告:“安全性问题”是采用开放源码软件的最经常提到的原因。

“这并没有使我吃惊,”London 的安全顾问 Piers Van Dorf 说。“如果要使您的系统安全,”Van Dorf 说,“开放源码是必然趋势。当您让许多公正的人真正查看源代码时,无论是故意错误还是其它不同的错误都不太可能在这种方式下逃脱。您不会始终成功防范每个人的入侵,但您将在大多数时间成功防范大多数人的入侵。”

最后,“封闭”源代码并不一定是隐藏。只是因为黑客不能看到原始编程并不表示他不能在代码执行跟踪环境中或通过反向工程来运行它。近年来,黑客一直在利用“黑箱分析”得益。现在甚至还有一些工具自动进行“黑箱”分析。考虑到任何可以运行的代码都可以被解开,就能得出掩盖它并不能达到有效安全性的目的。

在“许多人都来关注”和“通过隐藏实现安全性”的争论中,结论会是什么呢?

“我不认为安全性社区已经接受了开放源码,”AT&T 研究员和 The Web Security Source Book 的作者 Avi Rubin 说。“这是下一个重大争论。”

参考资料

请阅读 developerWorks “安全性”特殊主题中 John Viega 的文章 ""Open source software: Will it make me secure?""。
关注 SecurityFocus.com BugTraq 上的最新安全性新闻。
理解 Open Source Initiative Web 站点上有关 OSS 的详细信息。
访问 Eric S. Raymond 的主页。
请阅读 Ping o'' Death Diary。
关于作者
Natalie Walker Whitlock 是 Casaflora Communications 的自由撰稿人和所有人,Casaflora Communications 是一个致力于电子商务和技术问题的内容服务机构。她曾为众多的印刷和在线出版物,包括 PC World、Office.com、iVillage、Intraware、The Tribune Syndicate、The Arizona Republic、PC Parents 和 CBS Marketwatch 撰稿。可以通过 [email protected] 与她联系。