Sonatype公司近日公布了其年度开源软件开发调查的结果,这个调查着眼于开发人员使用开源组件的程度,特别侧重于调查他们如何平衡速度和安全性的需要。Sonatype调查了来自50多个国家的3500人(其中85%以上是开发人员),来了解他们组装软件所采用的方法。结果表明开发人员对某些组件的依赖:至少有80%的典型的Java应用程序现在是通过开源组件和框架来组装的。
多年来一直都是这样,但这很好地说明了组件组装概念的完全成熟,而不是从头开始编写代码——尽管其重点主要是在Java组件。Node Package Manager(npm)、CPAN以及最近的PHP Composer等工具的普及表明Sonatype的调查结果可能反映了一种普遍的趋势,这与使用何种语言无关。如果你询问任何受雇的开发人员,他们都会告诉你:组件是事物建立的方式。
然而,这提出了新的问题。Sonatype得出这样的结论,开发人员没有跟进最新的安全问题。该调查报告称,通过组件构建的应用程序中,71%的应用程序使用至少一种具有已知安全问题的组件版本,而解决这些安全问题的更新版本已经发布。在2012年,4600万不安全版本的组件被下载。曾经,安全意味着保持你的现成的软件或者LAMP堆栈软件的更新和完全修复,但这已经不再是一个安全的假设。
笔者询问Sonatype首席执行官Wayne Jackson是否有任何证据表明CERT发布的关键安全问题(CVE)的数量有所增加——来自组件漏洞利用而不是对开发完成的软件的漏洞利用。在2006年,只有8个CVE确定了某个组件作为风险来源,而到2012年,这个数量已经上升到50。今天,如果想要确保企业安全,只是保障平台的更新是不足够的,还需要一个政策来保障应用程序的安全。
与其他组件库相比,这个问题在Maven可能更加明显,Maven修复POM中的版本号,而不是提供版本范围。当然,使用npm的java script编程员和使用PHP Composer的PHP编程员能够指定不会打破API兼容性的随后次要版本是可以接受的,以及通过简单的命令来更新其软件。但这并不只是一个开源问题或者只是Java问题,从自闭源供应商购买的转悠组件也可能受到相同的影响。
自然地,Sonatype有一个产品可以帮助解决这个问题,但根本问题是,我们大多数人根本没有意识到开发人员对组件的选择能够主宰我们的系统。攻击者可以利用组件中的漏洞利用作为进入系统的入口,而是用该组件的企业中的应用程序可能永远无法通过更新来关闭这个入口和解决这个问题。该调查发现只有38%的受访企业能够控制器应用程序是用的组件,并确保定期的安全更新。
网络安全是非常重要的事情,甚至已经被提上国家政治议程,但我们真的明白如何实现安全性吗?现在企业开发已经逐渐转向组件,而不是使用企业内部平台中运行的自定义代码,企业应该意识到这一个事实,提防攻击者,要知道,他们正在瞄准你的组件,而不只是你的服务器。