Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring-SpEL易受攻击吗?_Spring_Security_Spring El - Fatal编程技术网

Spring-SpEL易受攻击吗?

Spring-SpEL易受攻击吗?,spring,security,spring-el,Spring,Security,Spring El,我偶然看到一篇文章 这篇文章说, Spring Expression Language(SpEL)可通过HTTP参数提交进行攻击,使攻击者能够获取敏感的系统数据、应用程序和用户cookie 是否有人能对此进行更多的解释?请查看您链接到的文章(针对SpEL的具体案例)可能所指的安全性/思想安全性()这一方面 它们描述了某些SpringJSP标记如何对EL表达式进行双重计算。在这些情况下,用户可以以SpEL的形式向服务器提交数据,例如,作为值为${bean.val}(URL编码)的请求参数 在JSP

我偶然看到一篇文章

这篇文章说, Spring Expression Language(SpEL)可通过HTTP参数提交进行攻击,使攻击者能够获取敏感的系统数据、应用程序和用户cookie


是否有人能对此进行更多的解释?

请查看您链接到的文章(针对SpEL的具体案例)可能所指的安全性/思想安全性()这一方面

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

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

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


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

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

SpringSource使用Aspect security的发现更新了我们的安全报告12-06-2012–但原始咨询中列出的修复/缓解措施仍然适用:

此漏洞仅影响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)

请查看下面投票率更高的答案,这是实际答案one@blackdrag谢谢,我已经看过了。这篇文章和彼特的文章都提供了两个不同的答案,回答了最初的问题“有人能解释一下吗?”。这个答案(现在已经有将近一年的历史了)希望能提供一些关于这个漏洞的细节,而Pieter的答案描述了SpringSources处理它的历史以及解决这个问题的spring版本。在我看来,他们都以不同的方式“阐明”,都是“实际”的答案。我同意,他们都阐明了这个问题。只是它在2012年之前就被修复了。最有价值的信息,即该报告在被询问时已经过时,已经丢失。这就是为什么我不再认为答案是“实际的”了。
<spring:message message="${param.exp}" />