以“Thymeleaf-Spring5 代码注入漏洞修复”为例,介绍一下怎么使用补丁修复漏洞
1.漏洞
-
GAV坐标:
org.thymeleaf:thymeleaf-spring4:3.0.9.RELEASE,org.thymeleaf:thymeleaf:3.0.9.RELEASE -
CVE编号:
CVE-2021-43466 -
漏洞描述:
Thymeleaf-Spring5是Thymeleaf团队的一个适用于 Web 和独立环境的开源现代服务器端 Java 模板引擎。 Thymeleaf-Spring5 存在安全漏洞,该漏洞源于外部输入数据构造可执行命令过程中,网络系统或产品未正确过滤其中的特殊元素。攻击者可利用该漏洞执行非法命令。 -
漏洞类型:
代码注入 -
扫描工具给的解决方案:
升级版本:thymeleaf-spring5-3.0.14.RELEASE;
相关commit:https://github.com/thymeleaf/thymeleaf-spring/commit/d75834ca34f4a8dca3ee626c9ce22060e90427bc;
漏洞补丁:https://github.com/thymeleaf/thymeleaf-spring/commit/d75834ca34f4a8dca3ee626c9ce22060e90427bc;
2.修复
- 根据上面的说明,发现的版本是:thymeleaf-spring4:3.0.9.RELEASE。给的解决方案升级到:thymeleaf-spring5-3.0.14.RELEASE。
- 这个方案明显是不行的,从spring4到spring5是大版本升级,涉及的代码改动会比较多。
- 那看看漏洞补丁,打开github是这样的,如下图所示:
- 看到的是满屏的代码。难道需要重新编译代码,替换jar?其实不是的。这个是这样的步骤,首先由于发现漏洞的版本是Spring4,所以看左侧关于Spring4部分的ChangeLog.txt。
- 是不是很熟悉,CVE-2021-43466,正是咱们的漏洞。到这里,就能发现Spring4有对应的修复漏洞的小版本。thymeleaf-spring4-3.0.13.RELEASE。然后咱们到mvn找到≥thymeleaf-spring4-3.0.13版本,替换一下jar即可。
MVN仓库访问地址:https://mvnrepository.com/