如何解决spring-boot-starter-mail:3.0.6的依赖漏洞问题?
漏洞修复与依赖疑问解答
能不能排除org.eclipse.angus:angus-mail?
绝对不能。spring-boot-starter-mail 底层完全依赖angus-mail实现SMTP、POP3等邮件协议的处理逻辑,一旦排除该依赖,项目中所有邮件发送、接收相关的功能都会直接失效,无法正常使用。
针对CVE漏洞的修复方案
你遇到的两个CVE分别对应json-smart和angus组件的安全问题,这里提供两种可靠的修复方式:
1. 升级Spring Boot版本(最稳妥)
Spring Boot 3.0.6附带的angus和json-smart版本确实存在这些漏洞,官方在后续的小版本迭代中已经完成了修复。直接将Spring Boot升级到3.0.10及以上的3.x稳定版,它会自动引入修复后的依赖版本:
- angus-core/angus-mail 会升级至1.1.2+,彻底修复CVE-2023-1370
- json-smart 会升级至2.4.11+,修复CVE-2021-44549
只需修改build.gradle中的Spring Boot插件版本即可:
plugins { id 'org.springframework.boot' version '3.0.10' // 其他原有插件保留不变 }
2. 单独指定修复后的依赖版本(迫不得已才用)
如果暂时无法升级整个Spring Boot版本,也可以在依赖声明中强制覆盖存在漏洞的组件版本:
dependencies { implementation 'org.springframework.boot:spring-boot-starter-mail:3.0.6' // 覆盖angus组件版本以修复CVE-2023-1370 implementation 'org.eclipse.angus:angus-core:1.1.2' implementation 'org.eclipse.angus:angus-mail:1.1.2' // 覆盖json-smart版本以修复CVE-2021-44549 implementation 'net.minidev:json-smart:2.4.11' }
注意:这种方式可能存在版本兼容性风险,修改完成后务必在测试环境验证邮件功能是否正常运行。
修复验证
完成修复后,重新运行SonarQube OWASP扫描,确认这两个CVE的告警已消除。同时编写简单的邮件发送测试用例,确保邮件服务功能正常。
内容的提问来源于stack exchange,提问作者galfstad
相关产品推荐
相关产品推荐

