Spring Boot框架SPEL漏洞技术分析与防护方案

2016年7月7日,唐朝实验室在乌云上提交Spring Boot框架存在SPEL表达式注入通用漏洞,缺陷编号为WooYun-2016-226888,威胁等级为【高】,攻击者可以远程代码执行。

2016年7月8日,向通报机构公开。

2016年7月11日,绿盟科技获取相关细节。

2016年7月12日,绿盟科技针对此漏洞启动中级应急响应。

2016年7月13日,提供完整的技术分析、产品升级和防护方案。

什么是Spring?

Spring是2003年兴起的轻量级Java开发框架。任何Java应用都可以使用该框架的核心特性,在Java EE平台之上有可用于构建Web应用的扩展。Spring Boot是Spring 的一个核心子项目,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置国内包括百度、阿里巴巴、腾讯等诸多知名企业都在使用该框架。

影响的版本

Spring Boot <=1.3.0。

不受影响的版本

Spring Boot >=1.3.1。

技术分析

以下是官方给的漏洞说明:

8

查看spring boot1.3.0的源文件ErrorMvcAutoConfiguration.java,发现出问题的地方主要在SpelView类中:

9

经过分析得知在用户采用了Spring Boot启动Spring MVC项目后Spring Boot的默认异常模板在处理异常信息的时候递归解析SPEL表达式,可导致SPEL表达式注入并执行。主要问题是SpelView类中会对路径中或者名字中含有的表达式递归解析,所以在1.3.1修复时添加了NonRecursivePropertyPlaceholderHelper类,防止递归解析路径中或者名字中含有的表达式。

漏洞利用

利用此漏洞,只需在SpringMVC的Controller中的参数触发一个异常,异常信息带有SPEL表达式就可以注入了。

POC:

http://localhost:8555/test.php?id=${new%20java.lang.String(new%20byte[]{78,115,102,111,99,117,115})}

漏洞证明:

12

利用表达式成功创建了字符串Nsfocus。

补丁分析

从spring-boot的github的项目中可以看到,这个漏洞是在这个commit中修复的: https://github.com/spring-projects/spring-boot/commit/edb16a13ee33e62b046730a47843cb5dc92054e6

在修复的log里可以看到存着漏洞的1.3.0和1.3.1的差别:

11

1.3.1创建了NonRecursivePropertyPlaceholderHelper类,防止递归解析路径中或者名字中含有的表达式。

防护方案

  • 如果为受影响的版本,建议升级到1.3.1或以上版本。
  • 绿盟科技在线云检测,登陆绿盟科技云,申请极光自助扫描服务试用: https://cloud.nsfocus.com/#/krosa/views/initcdr/productandservice?pid=0&sid=0
  • 使用绿盟科技的远程评估系统(RSAS)对内网进行安全评估。
  • 使用绿盟科技检测类产品(IDS)进行检测。
  • 使用绿盟科技防护类产品(IPS/NF/SG)进行防护。
  • 已经购买了绿盟科技相关产品服务的客户可以通过产品升级进行检测与防护。
  • 短期服务:绿盟科技工程师现场处理。确保第一时间消除网络内相关风险点,控制事件影响范围,提供事件分析报告。
  • 中期服务:提供 3-6个月的风险监控与巡检服务。根除风险,确保事件不复发。
  • 长期服务:基金行业业务风险解决方案(威胁情报+攻击溯源+专业安全服务)。

参考链接

http://www.freebuf.com/news/108665.html

http://www.wooyun.org/bugs/wooyun-2010-226888

https://github.com/spring-projects/spring-boot/issues/4763

声 明

本安全公告仅用来描述可能存在的安全问题,绿盟科技不为此安全公告提供任何保证或承诺。由于传播、利用此安全公告所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,绿盟科技以及安全公告作者不为此承担任何责任。绿盟科技拥有对此安全公告的修改和解释权。如欲转载或传播此安全公告,必须保证此安全公告的完整性,包括版权声明等全部内容。未经绿盟科技允许,不得任意修改或者增减此安全公告内容,不得以任何方式将其用于商业目的。

关于绿盟科技

北京神州绿盟信息安全科技股份有限公司(简称绿盟科技)成立于2000年4月,总部位于北京。在国内外设有30多个分支机构,为政府、运营商、金融、能源、互联网以及教育、医疗等行业用户,提供具有核心竞争力的安全产品及解决方案,帮助客户实现业务的安全顺畅运行。

基于多年的安全攻防研究,绿盟科技在网络及终端安全、互联网基础安全、合规及安全管理等领域,为客户提供入侵检测/防护、抗拒绝服务攻击、远程安全评估以及Web安全防护等产品以及专业安全服务。

北京神州绿盟信息安全科技股份有限公司于2014年1月29日起在深圳证券交易所创业板上市交易,股票简称:绿盟科技,股票代码:300369。

如果您需要了解更多内容,可以
加入QQ群:486207500、570982169
直接询问:010-68438880-8669

Spread the word. Share this post!

Meet The Author

Leave Comment