新闻动态
近期创安攻防实验室监测到Spring官方发布安全公告,披露了一个Spring框架可在JDK>=9版本下实现远程代码执行的漏洞(CVE-2022-22965)。此漏洞影响范围极广,建议客户尽快做好自查工作。
漏洞描述
该漏洞是SpringFramework数据绑定的一个漏洞,如果后台方法中接受的参数为非基础类型,Spring会根据前端传入的请求正文中的参数的key值来查询与其名称所对应的getter和setter方法,攻击者利用这一特性修改了Tomcat的一个用于日志记录的类的属性,进而当Tomcat在进行写日志操作的时候,将攻击者传递的恶意代码写入指定目录的指定文件中。
影响范围
漏洞编号
CVE-2022-22965
漏洞等级
严重
漏洞复现
目前外界Exp/PoC已公开,创安实验室已验证该漏洞的可利用性:
修复建议
Spring官方目前已发布安全版本,建议用户尽快更新至安全版本,下载链接如下
https://github.com/spring-projects/spring-framework
(一)WAF防护
在WAF等网络防护设备上,根据实际部署业务的流量情况,实现对class.*, Class.*,*.class.*,*.Class.* 等字符串的规则过滤,并在部署过滤规则后,对业务运行情况进行测试,避免产生额外影响。
(二)临时修复措施
需同时按以下两个步骤进行漏洞的临时修复:
1、在应用中全局搜索@InitBinder注解,看看方法体内是否调用dataBinder.setDisallowedFields方法,如果发现此代码片段的引入,则在原来的黑名单中,添加{"class.*","Class.*","*.class.*","*.Class.*"}。(注:如果此代码片段使用较多,需要每个地方都追加)
2、在用系统的项目包下新建以下全局类,并保证这个类被Spring 加载到(推荐在Controller所在的包中添加)。完成类添加后,需对项目进行重新编译打包和功能验证测试,并重新发布项目。
本文仅限于个人学习和技术研究,由于传播、利用此文所提供的信息而造成刑事案件、非授权攻击等违法行为,均由使用者本人负责,本单位不为此承担任何责任。创安攻防实验室拥有对此文章的修改和解释权,如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。
如有侵权,请联系后台。