Spring Cloud Function现SPEL 表达式漏洞,SPEL 表达式是个啥?
发布网友
发布时间:2024-10-24 15:26
我来回答
共1个回答
热心网友
时间:2024-11-10 09:59
Spring Cloud Function现SPEL 表达式漏洞的详细解释
在近期的测试中,Spring Cloud Function 的官方案例揭示了该框架中一个关于SPEL表达式的注入漏洞。这个漏洞使得攻击者能够利用SPEL表达式来触发远程命令执行。
具体来说,Spring Cloud Function中的RoutingFunction类在处理请求头中的“spring.cloud.function.routing-expression”参数时,将其直接作为SPEL表达式进行处理,导致了SPEL表达式注入的漏洞。攻击者可以利用这个漏洞来执行任意代码。
受影响的版本范围是从3.0.0.M3到3.2.2。
SPEL(Spring表达式语言)是一种强大的表达式语言,它具备查询和操作运行时对象导航图的功能。其语法类似于传统EL(表达式语言),但具有额外的功能,包括函数调用和简单字符串的模板功能。SpEl是Spring社区为了提供一种简单且高效的表达式语言而设计的,它的设计初衷是为了与Spring产品组的其他组件紧密结合。
关于SPEL漏洞的漏洞形态类似于命令注入。下面是一个简单的漏洞示例。
通过设置请求参数来实现远程命令执行。
创建一个可执行Spel的Controller,直接获取用户输入的参数,并通过Spel表达式解析器执行。
在浏览器中输入特定地址,可以触发命令执行,如调用本地计算器。
除了直接执行命令外,还可以通过调用类的静态方法实现相同的功能。
漏洞原因在于SpringCloud Function的RoutingFunction功能,这个功能旨在通过HTTP请求与单个函数进行交互。在请求的headers中添加“spring.cloud.function.routing-expression”参数后,SpringCloud Function会直接将这个参数内容带入到SPEL中进行查询,从而导致了SPEL漏洞注入。
官方已发布了此漏洞的补丁,建议相关用户尽快应用补丁并关注官方的更新版本,以进行防护。
在日常开发中,需多加注意避免使用如表达式注入、SQL注入等问题,并持续学习安全知识,提升自我。