---
# System prepended metadata

title: '[SpringBoot] 升版2.6.4 修補Log4j日誌框架系統重大漏洞（CVE-2021-44228）'
tags: [Spring Boot, Java, 工作筆記, 資安]

---

# [SpringBoot] 升版2.6.4 修補Log4j日誌框架系統重大漏洞（CVE-2021-44228）

接續：https://hackmd.io/@mko123654/B1SvxAKD9

自從Log4j編號為CVE-2021-44228漏洞公開之後，由於手上的專案都是使用SpringBoot建置的，陸陸續續升了好幾個版本...
###### tags: `資安` `Spring Boot` `Java` `工作筆記`


## 如何檢查運行在電腦內的Spring Boot專案是為已修補Log4j漏洞的版本?

1. 請自行Google關鍵字至Spring官網查看，如下圖，`2.5.8` `2.6.2`為修補了重大漏洞的版本。(但後面陸續還釋出了更新的修補版本)
![](https://i.imgur.com/7bs99ys.png)

2. 進入專案的Pom.xml檔案內，查看Spring Boot版本：
(因下方兩個專案架構的不同，Pom.xml的寫法可能略有差異)
![](https://i.imgur.com/bM6fxJB.png)

![](https://i.imgur.com/RImHdlL.png)

3. 升版方式為直接修改 `<version>${升級你要的版本號}</version>`，重新loading Maven並會進行升版。但有很大的機會會遇到版本升級後，因所依賴的Jar包被移除、修改了。導致程式內有使用到舊版Jar包內的部分無法編譯，需要再依錯誤訊息逐一Debug。


## 再次確認是否真的進行修補了
這裡以Maven為例，若專案沒有特別指定，Maven的本地儲存庫內Log4j的部分會在路徑
`c:\users\使用者名稱\.m2\repository\org\apache\logging\log4j\`

![](https://i.imgur.com/KmPRVmQ.png)

一一點開上方4個資料夾，可以看到之前Maven所下載過的歷史版本，而2.16.0以前的皆為有漏洞的版本，可以直接砍掉
![](https://i.imgur.com/ohXE5vq.png)

砍完之後，請把手上的所有Spring Boot build過(或是啟動專案)一次，確認.m2內沒有再長出舊版的log4j jar檔，那就是都已經修補完成。
如果有生出舊版的log4j jar檔，代表有漏掉哪一個專案沒有修改好pom.xml的版本，請再一一檢查。


## 升版後常遇到的問題

以下以 [bug in Springfox](https://stackoverflow.com/questions/70036953/springboot-2-6-0-spring-fox-3-failed-to-start-bean-documentationpluginsboot) 為例：

下方專案為例由`2.1.4 RELEASE` 升到 `2.6.4`，啟動後會發現噴出下面的錯誤訊息。


![](https://i.imgur.com/x4N6wR4.png)

![](https://i.imgur.com/eoU3NMH.png)

把噴出問題的關鍵至拿去StackOverflow上基本上都有解答。以這邊為例，原因是出在新版本的SpringBoot不支援舊的 `springfox-swagger2` 和 `springfox-swagger-ui` 需要將這兩個<dependency>移除掉，進加入下方新版本的依賴：

```
    <dependency>
        <groupId>org.springdoc</groupId>
        <artifactId>springdoc-openapi-ui</artifactId>
        <version>1.6.8</version>
    </dependency>
```

![](https://i.imgur.com/trfle80.png)
    
    
之後還沒完，程式內有依賴到舊版jar包內容的部分都需要進行人工修改：

![](https://i.imgur.com/3Zp3tdj.png)
    
![](https://i.imgur.com/CMHb2K4.png)

如果都修補了，那專案就順利升版啦!!

# **The End**






