# [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**