Sonatype的首席安全官Ryan Berg在Gigaom上撰文称,我们不应该把安全性问题归咎于开源本身,事实上,专用软件也会出现这样的问题。应对安全问题真正的做法应该是注重产品生命周期内的每个环节,采取措施提高软件开发中每个方面的安全性。
以下为文章全文:
上个月,由于受到黑客攻击, OnRamp免费广告服务被迫关闭,对数百万的网站造成严重影响。OnRamp的母公司 OpenX在其在论坛上发布了一份官方声明,质疑了开源技术的安全性。
对此,表示,这不是一个开源的问题,并且我们不应该把责任推给开源用户和生产厂商。开源的经济和生产效率使得它几乎是任何现代软件应用程序的强制组件。我们在开源上都获得了巨大的好处——发展快速,重复利用经过验证的组件,让用户能在专有领域的软件特色上集中更多的时间。
这不仅仅证明了开源的好处,更表明它是必要的。这也是为什么超过7万个企业在去年于Central Repository上为开源组件处理了接近80亿请求,覆盖了所有主要类别的应用程序,包括网络、云、移动和关键基础设施。
不争的事实是今天一个典型的软件应用程序中有超过80%的组装是用现有的组件进行组装的,并且其中的绝大多数都是开源的,来自数十个,或数百个单独项目。所有的垂直行业,无论是监管和非监管,都在内部和面向用户的应用程序中使用大量的开源组件。
开源是必要的
你可以把今天的软件开发组织想象成汽车制造商,开发人员使用现有的部件或零件“组装”应用程序,而不是从头编写应用程序。但与制造业不同,软件行业缺少必要的工具对一个复杂的分布式软件供应链的复杂性和风险性进行管理。
基于组件的开发需要管理,当监督不完整时,安全问题就会出现。简单地说,一个有缺陷的软件供应链意味着有缺陷的应用程序。我们的研究表明,至少71%的应用程序包含组件有已知的被列为严重或关键的安全漏洞。
Digital Forensics Association 发布的《 The Leaking Vault 2011》称,在短短的时间里,有超过1560亿美元的直接损失可以归因于数据泄露。由Forrester和Veracode对 应用风险管理进行的一项的商业调查发现,62%的受访机构表示,由于他们关键应用中的缺陷,他们曾在过去一年里发现漏洞。
减少不可避免的风险
现在,问题就变成了如何在降低风险与部件消耗的同时,实现开源的好处。当然,对开源软件来说,有不断的和复杂的威胁,专有软件同样存在这样的威胁。我们知道其中的危险来自于使用已发现漏洞的过时组件,来自于没有一个可强制执行的开源政策,并且开源软件没有与管理组件执照或许可证的依赖关系。
重要的是要明白,这是一个供应链的问题:你需要在软件开发生命周期(消费、发展、集成和生产的过程)内的每个阶段管理组件。
降低安全风险
要降低安全风险,我们要在组件层上加强整个对软件开发生命周期的保护措施,提高整个软件供应链的完整性。想象一下,如果一个流行的开源组件中存在漏洞风险,并且由于组件被许多应用程序所使用,那么这个组件就会成为黑客眼中的一个香馍馍。
下面是减少风险的一些关键:
研究一个开源的政策,如果你的组织还没有的话。如果你有,则经常检查它。确保它对开发团队来说是明确的,并对安全管理的过程负责,让它得到每个人的支持。
确保你的政策为组件安全、许可和质量属性提供关键指南。除此之外,开源的策略需包罗万象,概述组织的标准和价值观,创建更多的指导方针来驱动使用决策。
确保你的政策是可强制执行的。如果没有执行能力,那么还有什么意义?纸上谈兵的政策将被忽略,所以要寻找方法将执行整合到软件开发过程本身。
为开发人员提供所需要的信息,以便他们做出正确的选择。你的开发人员处于第一线,所以要给他们战斗能力。让他们能够在初期检测到缺陷或不符合规定的地方,尽早节省时间和资金。
理清生产、库存组件和它们之间的依赖关系。在进行故障排查的过程中了解你的应用程序的构成是成功的一半。
密切关注新发现的缺陷。新的漏洞可能会在任何时间出现,当一个新的漏洞出现时,你要第一时间发现,并知道哪个组件正在使用。
要有一个补救措施。不管发生在生命周期里的哪个环节,都要知道如何进行解决。修复缺陷并不总是容易的,所以我们需要拥有一个计划。
无论是使用开源软件或专有软件,免费软件或付费软件,都请记住这一点:如果我们能通过建立良好的组件方法来维护组件层,那么对产品的整个生命周期都是有好处的。