仓库地址

修复Patch地址

漏洞代码分析

  • 搜索import org.springframework.expression.Expression // 大致定位
  • import org.springframework.expression.spel.support.StandardEvaluationContext // 大致定位
  • 搜索expression.getValue,得到2个答案,其中一个是RoutingFunction,动态路由。
  • 相关值来自functionProperties.getRoutingExpression,意味着
    • spring.cloud.function.routing-expression这个header支持Spel语言语法。

官方修复方案

  • 添加一个isViaHeader
    • 为true时:headerEvalContext = SimpleEvaluationContext
    • 为false时:evalContext = new StandardEvaluationContext

拓展思考

  • 是不是所有StandardEvaluationContext,都是潜在受攻击面?如果能远程控制妥妥的RCE。保守起见应该换成安全的Spel,SimpleEvaluationContext。