近期我们SINE安全监测到Spring官方发布的漏洞安全通知,发现Spring框架可在JDK>=9版本下实现远程代码执行的漏洞(CVE-2022-22965)。此漏洞影响范围很广被漏洞利用的几率很高,建议大家检查自己的JAVA开发的项目是否有Spring包,目前我们已对SINE安全的客户进行了自检和漏洞修复,提前预防了被此漏洞利用的威胁。
官方详情链接:
https://spring.io/blog/2022/03/31/spring-framework-rce-early-announcement
1.1 漏洞框架影响范围
若满足如下两个条件则确定受到漏洞影响:
(1)使用JDK>=9
(2)Spring开发的项目(存在spring-bean*.jar等之类的包)
spring-framework < v5.3.18
spring-framework < v5.2.20.RELEASE
1.2 漏洞利用情况
目前外界Exp/PoC已公开,SINE安全已验证该漏洞的可利用性:
1.3 补丁情况
目前Spring官方已发布安全版本修复该漏洞,安全版本如下:
spring-framework v5.3.18
spring-framework v5.2.20.RELEASE
下载地址:
https://github.com/spring-projects/spring-framework/releases
2.1 漏洞自查
排查包含Spring框架的项目使用的JDK版本,如果JDK版本大于等于9的版本则存在风险。
2.2 漏洞处置
目前Spring官方已发布安全补丁,建议及时更新Spring至官方最新安全版本来修复此漏洞。
临时缓解措施:
1.全局搜索@InitBinder注解,判断方法体内是否有dataBinder.setDisallowedFields方法,如果有使用则在原来的黑名单中添加:
{"class.*","Class.*","*.class.*","*.Class.*"}
(注:如果此代码片段使用较多,需要每个地方都追加)
2.在应用系统的项目包下新建以下全局类,并保证这个类被Spring加载到(推荐在Controller所在的包中添加)。完成类添加后,需对项目进行重新编译打包和功能验证测试。并重新发布项目。
import org.springframework.core.annotation.Order;import org.springframework.web.bind.WebDataBinder;import org.springframework.web.bind.annotation.ControllerAdvice;import org.springframework.web.bind.annotation.InitBinder;@ControllerAdvice@Order(10000)publicclassGlobalControllerAdvice{ @InitBinderpublic void setAllowedFields(webdataBinder dataBinder){String[]abd=new string[]{"class.*","Class.*","*.class.*","*.Class.*"};dataBinder.setDisallowedFields(abd);}}
SINE安全
←扫码联系技术人员
为Web和APP提供攻击安全防护!
术有专攻 安全防护!
好看你就分享 有用就点个赞
支持「网站安全」就点个三连吧!
文章评论