一、序言
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版本可能影響穩定執行。