Log4j爆"核彈級"漏洞,那就來做個拆彈專家吧
背景
近日,Apache發(fā)布了Log4j任意代碼執(zhí)行漏洞安全更新補丁。Log4j-2中存在JNDI注入漏洞,當程序?qū)⒂脩糨斎氲臄?shù)據(jù)進行日志記錄時,即可觸發(fā)此漏洞,成功利用此漏洞可以在目標服務器上執(zhí)行任意代碼。該組件應用范圍非常廣泛,如:Apache Struts2、Apache Solr、Apache Druid等開發(fā)框架及中間件中,相關(guān)POC和細節(jié)已經(jīng)被公開且已存在在野利用,漏洞利用簡單,危害巨大
漏洞描述
Apache Log4j 2是一個基于Java的日志記錄工具,當程序?qū)⒂脩糨斎氲臄?shù)據(jù)進行日志記錄時,即可觸發(fā)此漏洞,攻擊者可通過構(gòu)造惡意請求利用該漏洞實現(xiàn)在目標服務器上執(zhí)行任意代碼。
影響版本
Apache Log4j 2.x < 2.15.0-rc2
看看官方的更新操作,就知道這個問題有多么危急,最近9天連更8個版本,稍微再近一點的更新時間都是3月份的了

解決方法
更新log4j版本至Apache Log4j 2.15.0-rc2或更高版本(優(yōu)先)
添加jvm啟動參數(shù):-Dlog4j2.formatMsgNoLookups=true
在應用classpath下添加log4j2.component.properties配置文件,文件內(nèi)容為:log4j2.formatMsgNoLookups=true
建議JDK使用11.0.1、8u191、7u201、6u211及以上的高版本,可以在一定程度上限制JNDI等漏洞利用方式
版本更新操作
1、排查應用是否引用Log4j相關(guān)代碼包,Idea可以安裝插件“Maven Helper”,分析相關(guān)包依賴情況

2、現(xiàn)在中央倉庫已經(jīng)有2.16.0版本的log4j相關(guān)包,如果依賴比較深或者短時間內(nèi)無法獲取第三方的更新版本,可以自行排除依賴,重新引入2.16.0的包


? ? ? ?
? ? ? ?<dependency>
? ? ? ? ? ?<groupId>org.springframework.bootgroupId>
? ? ? ? ? ?<artifactId>spring-boot-starter-loggingartifactId>
? ? ? ? ? ?<exclusions>
? ? ? ? ? ? ? ?<exclusion>
? ? ? ? ? ? ? ? ? ?<groupId>org.apache.logging.log4jgroupId>
? ? ? ? ? ? ? ? ? ?<artifactId>log4j-to-slf4jartifactId>
? ? ? ? ? ? ? ?exclusion>
? ? ? ? ? ?exclusions>
? ? ? ?dependency>
? ? ? ?<dependency>
? ? ? ? ? ?<groupId>org.apache.logging.log4jgroupId>
? ? ? ? ? ?<artifactId>log4j-to-slf4jartifactId>
? ? ? ? ? ?<version>2.16.0version>
? ? ? ?dependency>
