SpringBoot Log4j 安全漏洞分析及解決方案

Java知識圖譜發表於2022-02-09

一、序言

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漏洞。

image-20220208112118495
1、識別漏洞

識別專案中是否存在漏洞的顯著標識是檢視Log4j依賴。

image-20220208112904911

從上圖所知,SpringBoot 2.6.1所依賴的Log4j版本是2.14.x,此版本存在安全漏洞。

2、修復漏洞

升級SpringBoot版本修復漏洞。

image-20220208113447845

從上圖所知,SpringBoot 2.6.2所依賴的Log4j版本是2.17.x,屬於安全版本。

三、小結

SpringBoot Log4j漏洞對那些選定某一版本然後長期使用的開發者提出挑戰,使用較新的長期穩定版本能夠自動遮蔽常見的漏洞。

對於新立項的專案,推薦使用較新版本的SpringBoot來遮蔽Log4j安全漏洞;對於已經開發完畢處於維護階段的專案,手動替換Log4j版本比較合理,盲目升級SpringBoot版本可能影響穩定執行。

原文地址

相關文章