【eNet硅谷动力专稿】虽然开源软件在企业领域获得了一席之地,并且具备了与专有软件一争高下的实力,但是它似乎还是无法摆脱安全性和知识产权问题的困扰。
安全性和知识产权问题是老生常谈了,自从开源技术诞生之日起就一直饱受它们的“折磨”。“开源技术的优势在于没有一个单一的实体能够拥有对于一个开源项目的绝对控制权,”著名市场研究架构Gartner的资深分析师Mark Driver说。“没有一个单一的瓶颈”。其中一种理论认为,因为它是开源的,所以软件安全性方面存在的问题可以被很快发现。“但还有一种理论认为,开源技术是不太安全的,因为任何人都可以把恶意代码和软件放进它里面,这种说法也很有道理,” Driver说。
尽管怀疑的言论从来就没有停止过,不过开源运动依然如火如荼地进行着。现在有数以万计的开源社区和开源软件开发人员参与开源运动,每天产生的代码量大得惊人,这样的一个直接结果就是产生了很多开源操作系统和应用程序。开源技术不仅顽强地生存了下来,而且要还正改变着传统商业软件的做法。
开源软件组件通过一些开发工具已经融入到了商业软件中,比如Eclipse 和NetBeans。 Linux操作系统已经不仅仅是企业用户喜欢的一个选择了,华尔街的很多金融巨头也开始使用Linux了。开源中间件应用,比如Geronimo、Jboss、MySQL和 Hibernate也在企业领域变得越来越受欢迎。
Gartner估计,到2013年,80%甚至更多的商业软件在开发过程中将会使用开源技术。
在这种大趋势下,越来越多的企业和政府部门的IT管理人员想要尝试一下开源技术,这也是顺理成章的。不过,他们在做出最终决定之前,他们需要对于每一个开源软件以及它所依附的公司进行仔细的评估,主要从该开源软件社区的成熟度、维护代码库的能力以及能够及时添加扩展或修正错误方面进行详细考察。如果比较成熟的开源供应商比如IBM、红帽和惠普承诺支持你所选择的开源软件和开源技术方案,那么通常这就不会有什么问题。
“将开源技术用户商业用途的最自信的用户往往在技术上非常自信,因为他们自己在内部拥有一个自己的研发团队,能够胜任开源软件的修修补补,或者他们从开发商那里购买技术支持。”Driver说。
那么,开源软件更迫切的安全和知识产权影响是什么呢?
一个主要的问题是开源软件的安全漏洞是如何发现和修补的。与闭源和专有软件供应商相比,开源软件寻找漏洞和修补漏洞的方式大不相同。
软件业的巨人微软也曾经把自己封闭起来,当外界人员或企业发现微软产品漏洞并提出建议时,微软通常表现得非常谨慎并且很勉强。不过,近几年微软逐渐向外界“敞开了心扉”,与安全方面的专间建立了明确的联系,以便能够得到这些专家们发现的漏洞等关键信息,并及时开发出有效的补丁。
在这方面,微软的最新努力使得安全领域的专家与巨人距离更近了。一个月前,微软发表声明说,在微软的月度安全警告之前,微软会将有关微软产品的漏洞信息发送选定的一些安全厂商,这使得微软能够发在布公共通知之前,修复这些安全漏洞。微软声称,它这样做的目的是为了阻止黑客利用漏洞信息设计零时差(zero-day attacks)攻击。
相比之下,开源社区往往不能与外界的安全技术专家保持明确的联系,他们往往对外部安全专家不是很信任。无路如何,很多开源社区保密的做法违背了开源技术的本质精髓。
“与专有软件相比,开源软件的开发模式有很大的不同,” GNOME Foundation的执行总监Stormy Peters说。GNOME Foundation主要研发用于各种Linux发行版的桌面应用程序,包括Novell和红帽。“某一具体的开源项目通常不会给你提供安全服务或一个联络人,但通常会给你一个邮件列表。”
该邮件列表通常是开放的,正如任何错误追踪系统一样。“每当问题被修复和解决时,我们就会发布一个补丁程序或升级升序,” Peters在谈到GNOME时说。“这些责任通常就落在那些有权检查代码改变的那些人身上了。”开源人才都是 “精英”,Peters说,尽管开源社区对于“自给自足”的方式感到非常舒适和满意,不过“如果你看起来足够可信的话,外界专家一定能找到一种方式与开源社区交流。”
咨询公司OpenLogic主要任务就是充当外界公司和开源社区之间交流的媒介,负责在技术上检查400多个开源应用。该公司高级顾问Peters敦促那些想要与开源社区交流的安全专家努力在开源社区中找到能交流的合适人员,从而共同关注可能出现的缺陷并保持及时的交流。
有时,使用开源软件的企业在内部提供一个补丁程序,虽然他们可能不希望自己将这件事情公布于众。不过,补丁信息一般将会发给邮寄清单中的每个用户,Peters说,“每个人很快就会知道这个消息的。”
一些安全厂商已经发现,将一些消息传递给开源社区要比传递给闭源供应商困难得多。
Fortify Software是全球最大的软件安全厂商,最近该公司与安全顾问Larry Suto联手对11个基于Java的开源应用软件和程序包进行了一次漏洞评估,并且对近三个月以来各个开源社区对于安全性问题的回应进行了总结。Fortify Software发现这11个软件都有很明显的安全漏洞并希望能把这些信息反馈给开源社区。
在研究报告中,Fortify Software指出,开源码软件对于正在使用它的公司来说,可能会带来巨大的安全风险,因为在许多情况下,开源社区没有遵守最起码的安全最佳做法。 这一研究报告的目标之一就是要找出这11个开源软件的社区能够对于软件安全性问题、漏洞结果、发布的安全指南和安全的开发过程迅速做出回应。
在这11个开源软件或项目中,开源应用服务器的Tomcat的表现是最好的。因为只有Tomcat使用了Fortify Software一直提倡的安全最佳做法。其中包括一个用于报告安全漏洞的专门的电子邮件别名,一个与安全专家交流的方式以及一个链接到安全信息的醒目Web链接。
其余的10个开源应用、工具和数据库软件包--- Derby、Geronimo、Hibernate、Hipergate、Jboss、Jonas、OFBiz、OpenCMS、Resin、Struts---结果很令人沮丧,甚至有些对于Fortify Software的调查不予回应。在这10个开源软件中,应用服务器JBoss的得分最高,因为它在自己的官方网站上提供一个醒目的链接。该链接能连接到安全信息上并且是快速与安全专家沟通的一种方式。但不足之处就在于没有提供一个具体的电子邮箱别名,从而方便访客提交安全漏洞。
“你不想将错误报告给一个通用的邮件列表,因为这将会公开化,” Fortify Software安全研究小组经理Jacob West说。需要有一种提交错误报告的秘密方法,因为这样就能在公众被通知是发布这些错误的补丁包,因此恶意攻击者不能得到他们可以利用的早期资料。
但是,免费提供开源软件的社区往往对于安全性做法的关注不如商业软件商做得好,后者会提供充分的技术支持,West说。Fortify Software对这11个开源软件包的每个的各个版本都进行了仔细的检查,一共从中找出了22826个跨站点脚本和15612 个SQL注入式(injection)安全漏洞。
但是,当Fortify试图把这些问题提交给开源社区时---主要联系方式是一个网站或一个一般的电子邮件地址,Fortify发现,“在三分之二的情况下,你不会得到任何回应,” West说。“他们没有提供任何电话号码,那么你应该向谁询问安全信息?这很难讲。”
该报告还指出,“开源软件包或开源项目往往声称具备了企业级的功能,但实际上却不采用甚至不考虑行业最佳做法。只有少数几个开源开发团队在沿着正确的方向前进。”
West说,Fortify Software之所以进行这项研究工作,目的并不是为了谴责和批评开源软件,而是为了指出开源技术的安全性做法需要改进,因为越来越多的企业和政府机构正在使用或准备使用开源软件和解决方案。
Howard Schmidt之前曾担任白宫的网络安全主任,现在是Fortify Software的高级安全顾问兼董事会成员。他说,这项研究表明,当谈到将开源软件或解决方案用于企业领域时,你最好睁大你的眼睛。
现实情况是,虽然开源软件可能看起来会更符合成本效益,并且在某些情况下具备和商业软件同样的功能,但是在使用之前,你一定要仔细询问有关安全和维护问题。
“‘如果出了问题,我需要联系谁?’‘其它公司使用这个开源软件的情况如何?’‘我的其它供应链合作伙伴有没有使用这些软件的,效果如何?’这些都是你需要调查的问题。” Schmidt说。
关键问题是,公司用户可能会发现他们有时需要自己对开源软件包进行修复。“如果你提前对此有一个安排的话,那么这件事情做起来就比较有效率,” Schmidt说。
政府机构和企业用户需要做出决定,他们是否需要通过风险评估和代码审查,然后自己尝试修补开源软件本身的问题,并且是否需要将找到的问题反馈给开源社区。
West说,这是一个关于软件开发生命周期的根本性问题。他还补充说,Fortify Software从这项研究中发现,开源社区在这种情况下往往不能及时修正已经发行很长时间的软件版本中发现的缺陷。
Fortify Software在自己的报告中一直强调与开源社区取得直接联系并反馈漏洞信息非常困难,这引起了一些争议,不过一些开源技术倡导者认为,Fortify Software的研究是由一些积极意义的。
在谈到Ingres自己的开源数据库产品的安全修补过程时,Ingres公司工程部高级副总裁 Emma McGrattan说:“我们已经在网上公布一个电子邮件地址,当并没有对此进行广泛的宣传,”“这是一个非常便宜的做法。”
通过销售服务和知识产权许可,Ingres在开源领域占得了一席之地。Ingres雇佣了两个全职的安全专家,使用Klocwork代码测试工具来隐藏在待审核的Ingres代码中的安全漏洞。“一旦有人将漏洞修复了,这两个专家就会把补丁程序发布给开源社区,这是他们的指责。社区版本的软件通常都是不太稳定的。” McGrattan指出。
Ingres的客户确实在与代码更改的知识产权进行斗争。“围绕开源许可,一些问题摆在了我们面前,”McGrattan承认。“律师们也开始关心开源技术了,因为他们已经看到它正在悄悄地混进企业应用环境和基础设施中。”
IBM Rational 安全研究总监Danny Allen指出,IBM进军开源技术的决心非常大,比如Apache。不过他还表示,越来越多的企业在涉足开源领域的时候都不得不慎重考虑安全和知识产权的影响。
“这是一种风险意识,比如,如果有漏洞的话我该怎么办,” Allen说。目前大家比较担心的问题有:如果开源框架出了问题,我应该找谁联系。或者开源产品中包含恶意代码的可能性有多大。特别是企业的律师对于开源项目非常谨慎,因为即使可能的话,要找到能够负责的人也非常困难。 Allen表示:“在开源项目中是没有任何具体的问责制的,”他还补充说,他曾经看到企业法人在合并过程中试图找出那些开源软件,因为他们认为开源软件要比闭源软件风险要高得多。
不过,每个开源社区从外观到行为方式都有所不同,Coverity 公司开源战略家David Maxwell指出。Coverity是著名的软件质量静态分析工具Coverity Prevent的生产商。Maxwell同时还是开源项目NetBSD的一个软件自愿开发者。NetBSD有几百个开源开发人员,他们有权对代码进行修改。
两年多前,Coverity与国土安全部签订了一份协议,准备系统地对开源软件进行一次分析,这也是政府的开源硬化工程(Open Source Hardening Project)的一部分。
根据这个协议,开源项目被邀请免费使用Coverity Scan网站进行漏洞扫描,目的就是为了评估软件,以便对发现的任何缺陷进行修补。
在这两年里,Coverity Scan网站反复分析了250个开源项目,其中包括Firefox、Linux 和 PHP等一些知名产品,总的代码行数超过55万。今年5月份,Coverity在“开源报告(Open Source Report)”中公布了分析结果。
分析结果显示,在这250个项目中,大约120个项目具备活跃的开发人员,他们努力寻找并修复代码中的缺陷。在这两年中,在开源程序中使用Coverity的扫描工具发现的漏洞超过了8500个。但总的来说,在清洁代码方面,总的来说开源软件做得不是很好。
代码修补工作做得比较好的开源软件或项目包括:Amanda、NTP、OpenPAM、OpenVPN、Overdose、Perl、PHP、Postfix、Python、Samba和TCL。它们解决了所有的发现的漏洞,Maxwell说。
不过,在谈到修补代码的过程时,Maxwell说“其余120个开源项目的反应程度不尽相同,”,有关该进程的固定代码。他承认,他自己一直参与的开源项目NetBSD仍然在疲于追赶漏洞结果,所采取的做法是从其开发志愿者中选择安全人员并对通讯过程加密。
Maxwell指出,开源软件开发是一种特殊的文化,它有自己的一个自然形成的紧凑的志愿者团队,而想要加入这个团队的话,必须要经过团队的认可,考查点主要是个人能力和对项目的贡献。因此,可以想象如果一个外人突然出现在社区中,并且声称这个开源项目的安全性有漏洞,那么整个社区肯定会坚决抵制这个人。
一些人说,恶意攻击者正在虎视眈眈地企图利用开源代码的公开性。
许多开源项目使用Concurrent的版本控制系统Concurrent Versions System (CVS)作为存放开源项目代码的存储库。这也为恶意攻击者提供了机会,他们可能会监视CVS中的代码更改或升级,以便有针对性地开发恶意软件和攻击代码。“黑客们一直不择手段地努力打听或搜寻有关开源项目的最新动向,” 网络安全公司Symantec Security Response副总裁Alfred Huger说。“CVS记录了开源项目代码的最新变化,所以他们就千方百计地弄到CVS的日志”
至于是否发现开源社区在对待进入社区并带有安全性“情报”的局外人时表现得特别小心谨慎,Huger说,每个开源社区对待这种情况的方法是不同的,但对此保持沉默并持怀疑态度的大多是那些之前从来没有接触过这个特别问题的社区。“如果之前曾纪有过类似的问题,开源社区对于这些安全情报还是很开放的。”Huger总结说。