透明的安全
开源软件开发的安全性经常因为任何人都能得到源代码而遭到质疑。这个理论认为打算进行安全进攻的人通过对源代码的研究能够找到代码中能够构成攻击弱点的缺陷,从而使得 针对这些弱点的进攻更容易完成。这个理论有一定的根据,但是并不是人们所想象的那种方式。
事实上用眼睛分析源代码查找缺陷、进行分类并进一步创建缺陷是一项艰苦卓绝的工作。如果真的如同他们所说的那样由于源代码的公开性,开源软件更容易遭受攻击,那么微软公司以外的人就不可能发现任何IE的缺陷。事实上,对于任何不平凡的应用来说,即使这样艰苦的工作也要比通过反工程技术查找缺陷来得容易。这些技术需要试探某个运行中的 应用,输入畸形的信息或者故意错误的使用,然后检查应用的可扩展性以及输出,来确定程序的运行是如何以及在何时背离了应用运行的初衷。
可能终有一天我们能够将源代码输入另外一个程序来判断哪个部分有缺陷,而不必再使用反工程技术来查找缺陷,不过即使那一天到来,使用二进制可执行设备代码文件可以同样轻松的完成任务,根本用不着源代码本身。毕竟,进行那种分析所需的并不是类似编程员给变量或方法命名所需的信息,而是分析的目标软件所采用的算法的构造方法。毕竟,设 备代码本身与输入编译器的源代码在功能上是统一的。唯一的不同是它对特定的编程人员的可靠性有所不同。
从统计学上来看,这一事实不能支撑开源软件天生具有更多缺陷的说法。例如,代码分析企业Coverity的一份报告显示,他们只在Linux 的内核的570万行语句中发现了985个bug。可以比较的是,卡耐基梅隆大学的CyLab实验室所进行的的一个研究显示,具代表性的商业性闭源程序每一千行语句平均带有20-30个bug。按照这个比率计算,570万行语句中可能 带有的bug数量就会超过11.4万,是Linux内核bug数量的114倍。
软件透明度在开源软件开发过程中的重要作用经常被称为同行评审。之所有有这个过程,是因为源代码的公开状态,以及编程人员不可能与单一的控制实体,如CEO的目标完全保持一致的事实所促成的,开发源代码的人员需要互相管理彼此的行动。因此很少出现,却非常激烈的关于不坏好意的程序员可能在程序中预留“后门”的论调在同行评审的过程下不攻自破。严格而谨慎的遵守质量标准的代码才会得到开源软件项目代码库的接纳。事实上,如果程序在公开审查中被发现带有木马病毒,就会被指出。而源代码不公开的具有产权的软件也可以,有时的确具有特意加入的rootkit功能,只有发生意外时才有可能被发现,例如2005年下半年著名的Sonyrootkit事件。
普及带来的安全
微软公司的Windows桌面操作系统和IE的普及性常被用来解释缺陷发生率以及破坏发生率。这里我要告诉你们一些真相。对于源代码封闭,具有产权的操作系统或者网络浏览器来说,更高的普及率无疑可能招惹恶意代码编写者和其他不速之客的注意。但是如果采用全新的以普及性为关键的开发方式,情况就会有所改观。
开源软件采纳特定软件片段的门槛很低。由于开源软件完全不受价格的影响,在我们不断发展的网络状的世界里,一个新的操作系统安装文件的成本可能不会超过一张空白CDR,只 需花费几分钟进行下载。安装方式不同,甚至购买CD的钱也可以省去。
开源软件很容易被广泛接受的特性使得它更容易吸引新的开发者加入某个开源软件项目。随着用户数量的增加,编程人员对项目的兴趣也会增加。来自开源软件的开发者汇成了用户群,另外开源软件很好的利用了编程人员的业务时间,他们没有时间全力投入某个严肃的开发团队,但是可以利用业务时间搜索和修改各个缺陷和bug。
结果,这些查找最受欢迎的开源软件缺陷和bug的人数远远大于闭源软件有限的开发队伍。这一数字随着用户数量的增加而相应增加。查找新的缺陷以进行利用的人数被查找新的缺 陷以进行修正的人数所超越。即使找到缺陷的人自己不写代码进行修复,他们也会告诉会进行修复的人。
这一事态的结果显而易见,有据可查的微软对缺陷所做的最快反应,是今年早些时候的WMF库的补丁,按照微软安全响应中心总监Debby Fry Wilson的说法,用了大约9-10天。同时 , Mozilla基金会每次按期生产、测试和发布Mozilla Firefox网络浏览器的补丁的间隔不超过一星期,对于Linux内核的修补时间甚至不用天,而是用小时计算。
这主要归功于补丁测试广泛的群众基础:Debby Fry Wilson在讨论WMF补丁的快速发布时说,测试而非补丁的开发占用了很长一段时间。我们在闭源软件没有广泛测试能力的情况下期望它能够跟上形势,以及在测试出现问题是经常收到来自测试者本身的传真是不合理的。开源开发社区拥有数千名测试者,而闭源软件只有几十位。
网友评论