一、序言
SpringBoot作为Java基础框架大行其道,前不久爆发出Log4j安全漏洞,大众更多关心Log4j的危害是多么严重,然而鲜有关心SpringBoot这一底层框架的安全性问题,换而言之,在未对软件项目的安全评估前,所有基于SpringBoot构建的软件应用都属于Log4j漏洞的攻击对象。
1、Log4j漏洞
Log4j漏洞指Java项目中引入了特定版本(使用较多的是2.14.x
)的Log4j依赖,导致项目存在被远程攻击的风险。
官方给定的修复方案是尽快升级Log4j版本(2.17.x
),或者更换使用其它日志框架。显而易见最经济的解决方式是升级Log4j版本。
2、SpringBoot Log4j漏洞
所有基于SpringBoot 构建的Java项目,SpringBoot 版本低于2.6.2
的项目都存在Log4j漏洞,请主动解决或者升级SpringBoot版本。
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.2</version>
<relativePath/>
</parent>
二、项目依赖分析
SpringBoot 2.6.2
比较新,可以肯定的说,大多数已经开发或者正在开发的项目都存在Log4j漏洞。
1、识别漏洞
识别项目中是否存在漏洞的显著标识是查看Log4j依赖。
从上图所知,SpringBoot 2.6.1
所依赖的Log4j版本是2.14.x
,此版本存在安全漏洞。
2、修复漏洞
升级SpringBoot版本修复漏洞。
从上图所知,SpringBoot 2.6.2
所依赖的Log4j版本是2.17.x
,属于安全版本。
三、小结
SpringBoot Log4j漏洞对那些选定某一版本然后长期使用的开发者提出挑战,使用较新的长期稳定版本
能够自动屏蔽常见的漏洞。
对于新立项的项目,推荐使用较新版本的SpringBoot来屏蔽Log4j安全漏洞;对于已经开发完毕处于维护阶段的项目,手动替换Log4j版本比较合理,盲目升级SpringBoot版本可能影响稳定运行。