8

我遇到了一篇文章开源库有漏洞

这篇文章指出“Spring Expression Language (SpEL) 可以通过 HTTP 参数提交被利用,这将允许攻击者获取敏感的系统数据、应用程序和用户 cookie。”

有人可以对此进行更多说明吗?

4

2 回答 2

27

Aspect Security 的发现是在 2013 年 1 月发现的,但 SpringSource 发布的修复是在 2011 年首次发现时提供的。Aspect Security 的 Dan Amodio 告知 SpringSource 远程代码执行的可能性。

SpringSource 更新了我们的安全报告 12-06-2012 与 Aspect Security 的发现 - 但原始公告中列出的修复/缓解仍然适用:http: //support.springsource.com/security/cve-2011-2730

此漏洞仅影响 Spring Framework 版本:

• 3.0.0 到 3.0.5 -- 升级到 3.0.6 可以解决问题。• 2.5.0 到 2.5.6.SEC02(社区版本)——在此处升级到 2.5.6.SEC03 可以解决问题。• 2.5.0 到 2.5.7.SR01(订阅客户)——在此处升级到 2.5.7.SR02 可以解决问题。

这已在所有版本中得到修复——SpringFramework 的当前版本是 3.2,于 2012 年 12 月发布。

谢谢,

-Pieter (SpringSource)

于 2013-03-19T21:32:48.760 回答
3

查看 SpEL 的Aspect Security/Minded Security评估谷歌文档链接),您链接到的文章可能指的是(针对 SpEL 的特定情况)。

它们描述了某些 spring JSP 标记如何对 EL 表达式进行双重评估。在这些情况下,用户可能会以 SpEL 的形式向服务器提交数据,例如作为带有值的请求参数${bean.val}(URL 编码)

http://...?exp=$%7Bbean.val%7D

在 JSP 页面中,表达式${param.exp}将被解析为${bean.val}本身是安全的文本。但是,如果该表达式位于 spring JSTL 标记的属性中,则可以再次评估该解析值,例如在spring:message标记中:

<spring:message message="${param.exp}" />

将导致将值${bean.val}传递给spring:message将评估该bean.getVal()方法的标签。因此,我们现在有由客户端提交并在服务器上运行的代码。

于 2012-04-25T05:03:48.900 回答