Spring Cloud Function 是基于Spring Boot 的函数计算框架(FaaS),当其启用动态路由functionRouter时, HTTP请求头 spring.cloud.function.routing-expression参数存在SPEL表达式注入漏洞,攻击者可通过该漏洞进行远程命令执行。主要影响的版本包括 3.0.0.RELEASE <= Spring Cloud Function <= 3.2.2
Spring web首先会确认当前的请求是否为RoutingFunction,确认后并将我们提交的请求头和请求体内容编译成Message并且传入FunctionInvocationWrapper的apply方法中
找到对应方法的RoutingFunction.class的文件内容,定位到对应的第80行的代码出,可以发现该方法主要Message的内容已经被传递过来;