该项研究由 Aspect Security 和 Sonatype 发起。Aspect Security 是一家评估软件安全漏洞的公司,Sonatype 主要提供中央资源库(Central Repository),托管了超过 30 万个库和开源组件,每年有超过 40 亿次请求。
Aspect 公司的研究人员分析了在过去 12 个月内,从 Central Repository 中下载的 31 个流行的 Java 框架和安全库,并发现:
- 所有的下载中,有 1980 万次下载的版本存在已知漏洞,占 26%。
- 下载次数最多的、存在已知漏洞的库是 Google Web Toolkit(GWT)、Apache Xerces、Spring MVC 和 Struts 1.x。
研究人员称,安全性库比框架更有可能存在已知漏洞,现在的应用程序通常使用 30 个或更多的库,这可能危及到应用程序中 80% 的代码。在大多数情况下,漏洞的影响在很大程度上取决于应用程序如何使用这些库。
研究人员列出了一些广为流传的已知漏洞:
- 在过去一年中,Spring 被超过4.3万个组织下载了 1800 万次,但是去年的一个发现显示,Spring 表达式语言中有一个新型的漏洞,攻击者可以通过 HTTP 参数提交来利用该漏洞,并获得敏感的系统数据、应用程序和用户 cookies。
- 2010年,谷歌的研究团队发现了 Struts2 中一个漏洞,该漏洞允许攻击者在所有基于 Struts2 的应用程序中执行任意代码。
- Apache CXF(Web 服务框架)在过去一年内被超过1.6万个组织下载了 420 万次,从 2010 年该框架中就存在两个大的漏洞(CVE-2010-2076和 CVE 2012-0803),允许攻击者欺骗任何使用 CXF 的服务,下载任意的系统文件,并绕过验证。
Aspect 公司 CEO 称,使用开源库也存在“依赖管理”的问题,开发者需要确定他们的项目中真正直接依赖的库。通常情况下,开发者会在一些非必需的功能中使用库,而这些库还可能依赖于其他库,显然这带来了大量过时的代码,增加了安全风险,同时增大了应用程序的规模。
要想避免或降低这些风险,就需要找出在项目中使用的库,确定哪些已经过时。Aspect 公司建议尽量少使用库。
Via InfoWorld
最新评论