软件公司越来越明白,领先对手抢占市场的关键是使用开源软件。单纯使用商业软件进行开发,速度慢,成本高,几乎不能适应当下软件生命周期的快速迭代和快速淘汰。如果不能发掘并整合那些高内聚的开源软件,很多绝佳的概念将无法实现。
但使用开源软件也是有风险的,那就是难以确定其来源以及确保其是安全的。
就像OpenSSL心脏出血所反映的,如果你对自己产品里的代码不明所以,那将造成严重的安全威胁,甚至旷日持久的补救。相反,若对项目中的开源组件及其版本了如指掌,则能快速响应,及时修补。
内在的才是最重要的
心脏出血的漏洞警示了我们安全的重要性。广大人民讨论专利软件和开源软件哪个更安全,其实是无意义的。现实情况是,软件都是有漏洞的,不绝对安全的,无论开源与否。
最明显的风险是,不妥善管理认证(目测是说认证没及时更新,导致没打补丁等,详见下文)。另外,当专利软件用了开源代码时,情况变得更复杂。这样代码的用途和来源将很难追踪。
为了准确地认清安全方面的弱点,你需要先搞清楚以下三件事:
1、你的项目有些什么代码?
2、你的前端组件从哪来的?
3、你的后端代码是怎样做代码检查的?
(貌似说来说去都是一件事啊……)
评估状况
所有的公司都应该通过一些通用的代码检查库,例如美国国家标准与技术研究所的“漏洞库”,它能给你的代码的安全程度评级,以确保其安全且不落后。
如果你没这么做过,那真是起步艰难。幸运的是,还有一些工具能自动帮你完成与漏洞库的对比,并告诉你那里需要修改。
持续控管你的代码库,能帮助你清楚知道代码来源,及时更新认证,提前解决未来的漏洞。如果你还有准确的代码的清单,你就能更方便地修复代码,以保证业务与客户的安全。
预防未来问题。
免费易得的开源软件使开发者们放弃采购专利软件。很多开发团队对开源代码有管理措施,但却鲜有落实和纪录。其实,记录代码的引入和批准、及其用处,是很重要的。
当你已经知道自己有些什么代码时,下一步你就该实施管理。在开发过程中套用一套管理架构,你就能精确地描述出代码的位置及其是否过时。而手工管理无疑是艰巨的,所以一流的公司都会采取智能的、自动化的解决方案。
尽管公司各有不同,但以下通过的方法都经过证明,能避免开源软件的漏洞:
自动化审批与编目:就是通过自动化的扫描、审核、编目,来抓取并记录开源组件的所有相关属性,评估认证和审查可能的漏洞
保持更新:看软件是否建立在最新最稳定的组件之上,这是一种质量检查。
代码审查:评估所有代码,审核安全性和软件的认证,发现风险,及时修补。
确保落实:建立并实施一套管理开源软件的政策,尽量自动化,确保能在组织内推行。
关键是积极
软件应用正在遍及各行各业,开源软件正是这股潮流的推动者。为了在日益复杂的环境中避过安全漏洞,企业必须对开源这一块积极管理,建立定期与漏洞库对比的流程,使得软件的修复更便捷。