Spring Boot 應對 Log4j2 注入漏洞指南

大雄45發表於2022-01-03
導讀 Log4J2漏洞涉及的影響太廣了,昨天發文後很多粉絲留言問Spring Boot專案是否受到Log4J2漏洞影響。Spring官方已經全面進行了排查,現在大家可以知道這些資訊和應對方法。
預設配置不受影響

Spring Boot預設日誌元件是logback,開發者透過日誌門面Slf4j進行整合對接。Spring Boot 使用者只有在將預設日誌系統切換到 Log4J2 時才會受到此漏洞的影響。Spring Boot包含的log4j-to-slf4j和log4j-api、spring-boot-starter-logging不能獨立利用。只有log4j-core在日誌訊息中使用和包含使用者輸入的應用程式容易受到攻擊。

也就是說Spring Boot現在包含Log4J2的依賴只要你不啟用是不會觸發漏洞的。

Spring Boot 應對 Log4j2 注入漏洞指南Spring Boot 應對 Log4j2 注入漏洞指南

下版本更新補丁

Spring Boot將在2021 年 12 月 23 日後釋出的 2.5.8 和 2.6.2 版本將採用打了補丁的Log4J v2.15.0,但由於這是一個極其嚴重的漏洞,一定要覆蓋我們的依賴項管理並儘快升級您的 Log4J2 依賴項。

Maven使用者

對於 Maven 使用者,您可以透過覆蓋自己專案中pom.xml的版本號配置屬性來修改該依賴的版本號。提升Log4J2到安全版本只需要:

   <properties> 
       <log4j2.version>2.15.0</log4j2.version> 
   </properties>

然後使用./mvnw dependency:list | grep log4j 執行以檢查版本是否為 2.15.0。

Gradle使用者

對於大多數使用者來說,設定log4j2.version屬性就足夠了:

ext['log4j2.version'] = '2.15.0'

如果你的Gradle並沒有直接對Spring Boot進行依賴管理,你可以新增Log4J BOM依賴項:

implementation(platform("org.apache.logging.log4j:log4j-bom:2.15.0"))

“萬金油”的方法是宣告一個Gradle的resolutionStrategy:

configurations.all { 
 resolutionStrategy.eachDependency { DependencyResolveDetails details -> 
  if (details.requested.group == 'org.apache.logging.log4j') { 
   details.useVersion '2.15.0' 
  } 
 } 
}

上面三種方法無論你使用哪種,安全起見都需要使用下面的 進行檢查確認:

/gradlew dependencyInsight --dependency log4j-core
漏洞演示

漏洞攻擊的演示程式碼,我將在週一透過公眾號文章進行詳細講解,請持續關注。

原文來自:

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2850378/,如需轉載,請註明出處,否則將追究法律責任。

相關文章