Log4Shell (CVE-2021-44228、CVE-2021-45046 和 CVE-2021-45105) 是一種遠端程式碼執行 (RCE) 漏洞,可讓駭客從遠端執行任意的 Java 程式碼,進而掌控被攻擊的伺服器。
2021 年是零時差漏洞非常忙碌的一年,其中最嚴重的就是 Log4Shell 漏洞,這是一個使用廣泛的 Java 記錄檔函式庫 Apache Log4j 被發現的一個重大漏洞。CVE 正式編號為 CVE-2021-44228,在通用漏洞評分系統 (CVSS v3.1) 當中屬於等級最嚴重的 10 分 (滿分 10 分)。
此漏洞最早是在 2021 年 11 月 24 日通報給 Apache,然後在 2021 年 12 月 9 日被公開揭露,並在 Apache Log4j 2.15.0 版當中首次修正。
接著,有關網路上實際攻擊案例的新聞,使得有多個國家的網路資安單位對外發布警告,包括:美國網路資安與基礎架構安全局 (Cybersecurity and Infrastructure Security Agency,簡稱 CISA) 、英國國家網路資安中心(National Cyber Security Center,簡稱 NCSC) 以及加拿大網路資安中心 (Canadian Center for Cyber Security)。由於 Apache Log4j 非常受歡迎,因此全球有數以百萬計的裝置受到影響。
Log4Shell 是一個 Java 命名與目錄介面 (Java Naming and Directory Interface™,簡稱 JNDI) 程式碼注入漏洞,可讓駭客從遠端執行程式碼 (RCE)。駭客在攻擊時,只需將惡意的資料加入含有此漏洞的 Apache Log4j 記錄檔訊息當中,就可以透過 JNDI 查詢來連上駭客的伺服器。如此一來,駭客就能從世界的任何角落完全掌控您的系統。
由於 JNDI 查詢支援多種目錄服務,例如:DNS、LDAP (可提供有關企業網路裝置的寶貴資訊)、RMI 以及 IIOP,因此 Log4Shell 還可造成其他威脅,例如:
下圖顯示一種可能的感染過程:
基本上,任何對外連上網際網路的裝置如果正在使用 2.0 至 2.14.1 版的 Apache Log4j 都受到影響,目前已知使用了這些受影響版本的軟體包括:Apache Struts、Apache Solr、Apache Druid、Elasticsearch 、Apache Dubbo 和 VMware vCenter。
Apache 一開始釋出了 Apache Log4j 2.15.0 版來修正此漏洞。但是這個版本只適用於 Java 8,所以,使用較早版本的用戶,必須採取一些暫時的防範措施。就在本文發布時,Apache 又釋出了 2.16.0 版,並建議使用者盡速更新其受到影響的函式庫。
其他可採取的防範措施還包有虛擬修補,此外我們也強烈建議採用一套入侵偵測/防護 (IDS/IPS) 系統。虛擬修補可防止漏洞遭到進一步攻擊,IDS/IPS 則可檢查出口和入口流量來監控可疑行為。