CVE-2022-22965 Spring Framework 任意文件写入漏洞
内容提要
Spring Framework是用于JavaEE企业开发的基础开源框架,支持参数绑定和自动类型转换。BeanWrapperImpl类是对Bean的包装,方便访问和设置属性。Tomcat的AccessLogValve用于记录访问日志。存在任意文件写入漏洞,可导致远程代码执行。修复建议是升级Spring框架、降低JDK版本、升级Tomcat,并使用WAF和IPS进行入侵检测。
延伸解读
漏洞影响范围与前置条件
该漏洞影响 JDK 9 及以上版本、Spring Framework 5.3.X 低于 5.3.18 以及 5.2.X 低于 5.2.20 的版本,且需部署在 Tomcat 中间件中。攻击者利用 SpringMVC 参数绑定机制,通过 HTTP 请求修改 Tomcat 日志文件的各项参数,从而写入木马文件。注意,其他小版本若未更新同样受影响,因此仅关注大版本号可能遗漏风险。
漏洞利用链的关键环节
漏洞利用依赖于 Spring 的 BeanWrapperImpl 对 Bean 属性的访问机制,以及 Tomcat AccessLogValve 的默认配置。攻击者通过构造多层嵌套参数,控制日志文件的文件名、内容、后缀、路径等属性,最终在服务器上生成可执行的 JSP 木马。整个链条中,参数绑定和日志组件缺一不可,这也解释了为何漏洞同时与 Spring 和 Tomcat 相关。
修复与缓解措施要点
官方建议将 Spring 框架升级至最新版本,或降低 JDK 版本至 JDK8,同时升级 Tomcat 至最新版本。此外,可部署 WAF、IPS 等应用层入侵检测设备,针对公开 EXP 中 POST 请求携带的 class、classloader 等字段进行关键字过滤。这些措施可单独或组合使用,但升级仍是最根本的解决方式。
Q&A
CVE-2022-22965 漏洞影响哪些 Spring Framework 版本?
Spring Framework 5.3.X < 5.3.18 和 5.2.X < 5.2.20 版本受影响,且需要 JDK 9+ 环境。
这个漏洞是如何导致远程代码执行的?
攻击者通过 HTTP 请求修改 Tomcat 日志文件的参数(如文件名、内容、后缀、路径),在服务器上生成木马文件,从而可能导致远程代码执行。
如何修复 CVE-2022-22965 漏洞?
修复建议包括:升级 Spring 框架到最新版本;降低 JDK 版本至 JDK8;升级 Tomcat 至最新版本;使用 WAF、IPS 等应用层入侵检测设备,对 POST 请求中带有 class、classloader 等字段进行关键字过滤。
漏洞利用成功后生成的木马文件是什么?
利用成功后会在服务器上生成一个名为 xiaoyuan.jsp 的木马文件,其参数为 cmd。
复现该漏洞需要哪些环境组件?
需要下载 Tomcat 9.0.60 和特定的 WAR 包,将 WAR 包部署到 Tomcat 的 webapps 目录下(重命名为 ROOT.war),并启动 Tomcat。
Tomcat 的 AccessLogValve 在漏洞中起什么作用?
AccessLogValve 用于记录访问日志,攻击者通过修改其相关参数(如日志文件名、内容、路径等)来写入恶意文件。