我发现了一篇文章Open source library with vulnerabilities。
本文指出 “Spring表达式语言(SpEL)可以通过HTTP参数提交来利用,这将允许攻击者获取敏感的系统数据,应用程序和用户cookie。”
有人可以对此有所了解吗?
答案 0 :(得分:27)
Aspect Security的发现于2013年1月发现,但SpringSource发布的修复程序在2011年首次发现时提供。 Aspect Security的Dan Amodio向SpringSource通报了远程代码执行的可能性。
SpringSource使用Aspect Security的发现更新了我们的安全报告12-06-2012 - 但原始通报中列出的修复/缓解仍然适用: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)
答案 1 :(得分:3)
查看您所链接的文章可能引用的Aspect Security / Minded Security evaluation of SpEL(google docs link)(针对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()
方法。因此,我们现在拥有客户端提交的代码并在服务器上运行。