Apache?Log4j2?遠(yuǎn)程代碼執(zhí)行漏洞分析+檢測(cè)+防護(hù)(最新推薦)
分析:
Apache Log4j2是一款開源的Java日志框架,被廣泛地應(yīng)用在中間件、開發(fā)框架與Web應(yīng)用中,用來記錄日志信息。由于Apache Log4j2某些功能存在遞歸解析功能,未經(jīng)身份驗(yàn)證的攻擊者通過發(fā)送特別構(gòu)造的數(shù)據(jù)請(qǐng)求包,可在目標(biāo)服務(wù)器上執(zhí)行任意代碼。漏洞PoC已在網(wǎng)上公開,默認(rèn)配置即可進(jìn)行利用,該漏洞影響范圍極廣,建議相關(guān)用戶盡快采取措施進(jìn)行排查與防護(hù)。
根據(jù)Iog4j的用途和復(fù)現(xiàn)的情況來看,攻擊入口取決于Iog4j從線上業(yè)務(wù)的哪些地方取數(shù)據(jù)放入 logger.error,所以沒有固定請(qǐng)求路徑。另外由于線上web業(yè)務(wù)的任何數(shù)據(jù)都可能寫入Iog4j,甚 至一些pre-auth的地方,比如注冊(cè)、登錄,所以這個(gè)漏洞的影響可能會(huì)被放大到未授權(quán)命令執(zhí)行。
檢測(cè):
人工檢測(cè)
1、相關(guān)用戶可根據(jù)Java jar解壓后是否存在org/apache/logging/log4j相關(guān)路徑結(jié)構(gòu),判斷是否使用了存在漏洞的組件,若存在相關(guān)Java程序包,則很可能存在該漏洞。
2、若程序使用Maven打包,查看項(xiàng)目的pom.xml文件中是否存在下圖所示的相關(guān)字段,若版本號(hào)為小于2.15.0,則存在該漏洞。
3、若程序使用gradle打包,可查看build.gradle編譯配置文件,若在dependencies部分存在org.apache.logging.log4j相關(guān)字段,且版本號(hào)為小于2.15.0,則存在該漏洞。
4、檢測(cè)Ivy依賴版本是否低于 2.15.0
5、 檢測(cè)SBT依賴版本是否低于 2.15.0
若沒有使用上述工具,那么可以全局搜索log4j
的相關(guān)jar包。
受影響版本:
Apache Log4j 2.x <= 2.14.1
已知受影響應(yīng)用及組件:
Apache Solr
Apache Flink
Apache Druid
srping-boot-strater-log4j2
更多組件可參考如下鏈接:
https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core/usages?p=1
不受影響版本:
Apache log4j-2.15.0-rc1
防護(hù):
1、升級(jí)
目前官方已發(fā)布測(cè)試版本修復(fù)該漏洞,受影響用戶可先將Apache Log4j2所有相關(guān)應(yīng)用到該版本,下載鏈接:https://github.com/apache/logging-log4j2/releases/tag/log4j-2.15.0-rc1
注:由于此版本非正式發(fā)行版,可能出現(xiàn)不穩(wěn)定的情況,建議用戶在備份數(shù)據(jù)后再進(jìn)行升級(jí)。
升級(jí)供應(yīng)鏈中已知受影響的應(yīng)用及組件:Apache Solr、Apache Flink、Apache Druid、srping-boot-strater-log4j2
2、流量攔截 rulel $(jndi:ldap://rule2 $(jndi:rmi://
以上流量特征可能出現(xiàn)在流量中的任何地方,也包括各種類型的請(qǐng)求(GET、POST等),所以需要對(duì) 整個(gè)請(qǐng)求流量做特征匹配。
以上正則對(duì)業(yè)務(wù)中的正常jndi流量無影響(惡意流量須包含${jndi:rmi或${jndi:ldap,正常 業(yè)務(wù)jndi流量通常只包含rmi://、 ldap:// ),但是如果你的正常流量也包含上述特征請(qǐng)慎用。
3、臨時(shí)防護(hù)
從官方給的信息和復(fù)現(xiàn)情況來看,利用手段是jndi注入無疑,jndi注入無非ldap、rmi,需要外連請(qǐng) 求Idap-server/exp-server,禁止外連能在一定程度上緩解,但是不能防御攻擊者已控其他內(nèi)部服務(wù) 器的情況。此外,JDK11.0.1、8u191、7u201、6u211或者更高版本默認(rèn)是無法利用JNDI注入,JDK6u141、7u131、8u121或者更高版本無法利用RMI注入,網(wǎng) 上的一些bypas s方法也是依賴本地特定的lib(相當(dāng)于找了新的gadgets),所以總結(jié):
1、禁止使用Iog4j的服務(wù)器外連(日志服務(wù)器正常不需要外連)
并在邊界對(duì)dnslog相關(guān)域名訪問進(jìn)行檢測(cè)。
部分公共dnslog平臺(tái)如下:
ceye.io
dnslog.link
dnslog.cn
dnslog.io
tu4.org
awvsscan119.autoverify.cn
burpcollaborator.net
s0x.cn
2、建議JDK使用高版本
3、添加jvm啟動(dòng)參數(shù):-Dlog4j2.formatMsgNoLookups=true
4、在應(yīng)用classpath下添加log4j2.component.properties配置文件,文件內(nèi)容為:log4j2.formatMsgNoLookups=true
5、將系統(tǒng)環(huán)境變量 FORMAT_MESSAGES_PATTERN_DISABLE_LOOKUPS 設(shè)置為 true
到此這篇關(guān)于Apache Log4j2 遠(yuǎn)程代碼執(zhí)行漏洞分析+檢測(cè)+防護(hù)的文章就介紹到這了,更多相關(guān)Apache Log4j2 遠(yuǎn)程代碼執(zhí)行漏洞內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Linux低電量自動(dòng)關(guān)機(jī)的實(shí)現(xiàn)方法
這篇文章主要給大家介紹了關(guān)于Linux低電量自動(dòng)關(guān)機(jī)的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用linux具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-11-11Linux自動(dòng)化構(gòu)建工具make和Makefile詳解
這篇文章主要介紹了Linux如何自動(dòng)化構(gòu)建工具make和makefile,文章中有詳細(xì)的圖片示例,對(duì)學(xué)習(xí)有一定的參考價(jià)值,感興趣的小伙伴可以參考一下2023-04-04CentOS7 重新分配分區(qū)大小的實(shí)現(xiàn)方法
這篇文章主要介紹了CentOS7 重新分配分區(qū)大小的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11詳解CentOS 6.4下PXE+Kickstart無人值守安裝操作系統(tǒng)
這篇文章主要介紹了詳解CentOS 6.4下PXE+Kickstart無人值守安裝操作系統(tǒng) ,PXE(Pre-boot Execution Environment,預(yù)啟動(dòng)執(zhí)行環(huán)境)是由Intel公司開發(fā)的最新技術(shù),有興趣的可以了解一下。2016-12-12Linux解決RocketMQ中NameServer啟動(dòng)問題的方法詳解
這篇文章主要為大家詳細(xì)介紹了Linux解決RocketMQ中NameServer啟動(dòng)問題的方法,文中通過圖片和示例代碼進(jìn)行了詳細(xì)講解,需要的小伙伴可以參考下2023-08-08