对于数据中心运营商来说,开源软件提供了许多优势。它是免费的软件,其代码可以被检查和修改。此外,如果是一个流行的软件包,那么可能还拥有一个庞大的包含支持论坛、相关工具、兼容软件等的生态系统。
此外,根据“多双眼睛”的安全理论,很多人在关注和审查代码(例如世界上最大的金融公司的安全专业人员),可以快速找到并修复任何问题。
为什么开源软件打补丁很难
开源软件是免费的吗?
难怪有人说大部分互联网都运行在开源软件上。这是因为大多数网站都运行在由Apache和Nginx公司领导的开源软件上,大多数企业服务器都运行在Linux操作系统上。
还有一些数据中心使用Apache Mesos和HashCorp的Nomad这两个开源数据中心操作系统。
网络安全公司TrapX的首席营销官Anthony James表示,Kubernetes和Docker是用于在服务器集群上部署容器的流行开源平台,可提供应用程序的自动化、扩展和运行。流行的开源数据库服务器还包括MySQL和MariaDB等。
即使商业软件也无法抵挡开源趋势。Synopsys公司表示,现在96%的商业应用程序都提供开源组件,而追踪开源代码的Black Duck 软件公司是Synopsys公司的子公司。
开源组件使商业软件商店和内部团队的开发更快、成本更低。
“所有这些都将产生一堆开源软件。”Black Duck公司高级技术专家Tim Mackey说,“但是开源代码的传播有一个缺点,那就是补丁管理。”
“很多人表示,那么我如何打补丁呢?”Mackey说,“他们还不是很了解。”
为什么开源软件打补丁很难
当商业软件推出最新版本或补丁时,开发商可以向他们的客户推送。这些企业知道客户在哪里,因为有财务激励,软件开发商希望向客户出售更多产品。
开源项目并非如此。任何人都可以下载开源软件,而无需任何联系或付款。如果有更新或安全补丁,将由用户自己来维护、下载并安装。
Sungard Availability Services公司安全管理与风险总监Mitch Kavalsky表示:“开源软件对漏洞修复的支持没有保证,当漏洞未得到修补时,其风险将会增加。”
这就是为什么在美国和欧洲拥有多个数据中心的托管服务商Atlantic.net公司的关键任务系统并没有采用开源软件的原因。
Atlantic.net公司首席执行官Marty Puranik表示:“关键任务系统需要有一个已知的维护路径,如果发生了错误,采用开放源代码可能只有等待新版本的推出。随着时间的推移,开源软件更多的发展,但我们还没有采用。”
但是企业希望远离开源软件并不总是那么容易。大多数企业甚至不知道其环境中有哪些开源软件、工具和组件。当Apache公司去年为其开源Struts Web应用程序框架发布了安全补丁时,Equifax公司在它的环境中搜索了两次受影响的代码。尽管Equifax正在使用Struts,但未能及时找到并修补它,并且这个漏洞曾经导致1.35亿条个人记录泄露。
更糟糕的是,当开源代码隐藏在商业软件包中时,使用它们的公司甚至可能不知道这些漏洞在哪里。
Black Duck公司表示,67%的商业应用程序正在使用具有已知漏洞的组件。
开发人员并不总是检查他们使用的开源组件是否是最新版本,甚至在他们这样做时也没有检查,而一旦将开源组件添加到代码中,开发人员很少检查是否发布了更新,它们可能已经转移到其他项目上,或者干脆忘记了他们使用的所有组件。
同时,并不是所有的开源项目都对安全性给予足够的重视。较大的开源项目可能会有企业的团队来跟踪和修复漏洞并发布补丁。但是较小的项目可能没有足够的人员来管理。
瞻博网络网络安全策略师Nick Bilogorskiy表示,“根据经验,大多数采用开源软件的项目都难于保持最新状态,并且冒着被已知漏洞利用的巨大风险。”
此外,黑客可以看到代码本身,并试图找出滥用它的方法。
GuardiCore公司研究副总裁Ofri Ziv表示,他们甚至可以利用自己可以利用的秘密后门将补丁提交给开源项目。如果开源项目程序员很少或不够专业,他们可能不会发现问题。
“由于这些原因,采用免费或开源解决方案将带来更大的风险。”位于佛罗里达州的网络安全厂商5nine软件公司的首席技术官Konstantin Malkov说。
那么采用什么样的解决方案?
第一步是掌握数据中心使用的开源软件。
通常,IT经理和开发人员可以上网并下载他们需要的工具和组件,而无需任何监督。因为它是免费的,没有购买过程,所以没有监督。
特别是,数据中心需要谨慎采用来自小项目的开源软件,因为没有强大的社区来维护它。最后,人们需要采取行动。
“应该尽快实施响应式补丁实践,以尽快处理问题,”洛杉矶的网络安全公司Prevoty的首席技术官兼共同创始人Kunal Anand说。
毕竟,居心不良的人不会无动于衷。