论开源软件的安全管控

2014-08-13 16:00


就像OpenSSL心脏出血所反映的那样,如果你对自己产品里的代码不明所以,那将造成严重的安全威胁,甚至旷日持久的补救工作。相反,若对项目中的开源组件及其版本了如指掌,则能快速响应,及时修补。

软件公司越来越明白,领先对手抢占市场的关键是使用开源软件。单纯使用商业软件进行开发,速度慢,成本高,几乎不能适应当下软件生命周期的快速迭代和快速淘汰。如果不能发掘并整合那些高内聚的开源软件,很多绝佳的概念将无法实现。

但使用开源软件也是有风险的,那就是难以确定其来源以及它的安全性。

就像OpenSSL心脏出血所反映的那样,如果你对自己产品里的代码不明所以,那将造成严重的安全威胁,甚至旷日持久的补救工作。相反,若对项目中的开源组件及其版本了如指掌,则能快速响应,及时修补。

内在的安全才是最重要的

心脏出血的漏洞给我们的安全重要性提出了严重的警告。广大人民讨论专利软件和开源软件哪个更安全,其实是毫无意义的。现实情况是,软件都是有漏洞的,没有绝对的安全,无论开源与否。

最明显的风险是,不妥善管理认证(目测是说认证没及时更新,导致没打补丁等,详见下文)。另外,当专利软件用了开源代码时,情况变得更复杂。这样代码的用途和来源将很难追踪。

为了准确地认清安全方面的弱点,你需要先搞清楚以下三件事:

 

  1. 你的项目有些什么代码?
  2. 你的前端组件从哪来的?
  3. 你的后端代码是怎样做代码检查的?(貌似说来说去都是一件事啊……)

 

状况评估

所有的公司都应该通过一些通用的代码检查库,例如美国国家标准与技术研究所的“漏洞库”,它能给你的代码的安全程度评级,以确保其安全且不落后。

如果你没这么做过,那真是起步艰难。幸运的是,还有一些工具能自动帮你完成与漏洞库的对比,并告诉你哪里需要修改。

持续管控你的代码库,能帮助你清楚知道代码来源,及时更新认证,提前解决未来的漏洞。如果你还有准确的代码的清单,你就能更方便地修复代码,以保证业务与客户的安全。

预防未来问题

免费易得的开源软件使开发者们放弃采购专利软件。很多开发团队对开源代码有管理措施,但却鲜有落实和纪录。其实,记录代码的引入和批准、及其用处,是很重要的。

当你已经知道自己有些什么代码时,下一步你就该实施管理。在开发过程中套用一套管理架构,你就能精确地描述出代码的位置及其是否过时。而手工管理无疑是艰巨的,所以一流的公司都会采取智能的、自动化的解决方案。

尽管公司各有不同,但以下通过的方法都经过证明,能避免开源软件的漏洞:

 

  • 自动化审批与编目:就是通过自动化的扫描、审核、编目,来抓取并记录开源组件的所有相关属性,评估认证和审查可能的漏洞
  • 保持更新:看软件是否建立在最新最稳定的组件之上,这是一种质量检查。
  • 代码审查:评估所有代码,审核安全性和软件的认证,发现风险,及时修补。
  • 确保落实:建立并实施一套管理开源软件的政策,尽量自动化,确保能在组织内推行。

 

积极性是关键

软件应用正在遍及各行各业,开源软件正是这股潮流的推动者。为了在日益复杂的环境中避过安全漏洞,企业必须对开源这一块积极管理,建立定期与漏洞库对比的流程,使得软件的修复更便捷。