在COVID-19疫情的陰影之下,全球好不容易才辛苦度過2021年,然而,在歲末年終、大家準備過節之際,一個被許多資安專家稱為「10年來最嚴重的漏洞」公開揭露,打亂了所有IT人員與資安人員的工作步調。

資安界最難熬的12月!Log4j幾乎週週都在發布漏洞與修補版本

這個震撼全球的資安漏洞稱為Log4Shell,存在一款常用的Java程式庫軟體套件Log4j之中。基本上,Log4j可用於資料的記錄(Logging),目前已有多達數百萬種Java應用系統採行,而在12月7日Apache軟體基金會釋出的2.15.0版中,因為修正並揭露具有高度風險的遠端程式碼執行漏洞,編號是CVE-2021-44228,嚴重等級達到CVSS 10分、屬於高度風險的弱點,引發軒然大波,而這也是當時Log4Shell為人所知的部分。

該漏洞影響的Log4j2軟體版本,主要是的2.0-beta9版到2.12.1版,以及2.13.0版到2.15.0版,問題就出在:用於傳遞組態、記錄訊息、參數的JNDI(Java Naming and Directory Interface),因為,這個目錄服務功能API,實際上,無法抵禦攻擊者控制的LDAP端點與其他JNDI端點的存取,只要攻擊者能控制記錄訊息或記錄訊息的參數,當訊息查詢代替機制(message lookup substitution)啟用時,對方就能從LDAP伺服器執行任意的程式碼,而在Log4j2的2.15.0版預設會停用這樣的行為,等到2.16.0版推出之際,會把該功能完全移除。而在Apache Logging Services的專案當中,會受到此弱點影響的部分是log4j-core,也就是Apache Log4j實作本身。

時隔兩週,在12月14日這天,Apache軟體基金會發布Log4j2的2.16.0版(適用Java8),以及2.12.2版(適用Java7),當中修正並揭露新的資安漏洞,也就是CVE-2021-45046,嚴重等級達到CVSS 9分的程度,屬於高度風險的弱點,但尷尬的是,此弱點源自推出不久的2.15.0版,因CVE-2021-44228修補不足所致,簡而言之,是指在特定的非預設組態上,未經完整處理──當系統的記錄組態使用非預設模式的呈現,進行$${ctx:loginId}這類前後文查詢方式時,攻擊者可透過執行緒前後文圖解(Thread Context Map)輸入資料的控制,並運用JNDI Lookup查詢的模式來變造惡意輸入資料,導致某些環境允許資訊外洩與遠端程式碼執行,以及所有環境容許就地程式碼執行的狀況,而且,這樣的遠端程式碼執行活動,已在MacOS、Fedora等多種作業系統證明可行。

過了三天(12月18日),Apache軟體基金會再度發布Log4j2的2.17.0版(適用Java8)、2.12.3版(適用Java7)、2.3.1版(適用Java6),修正並揭露新的資安漏洞CVE-2021-45105,嚴重等級達到CVSS 5.9分的程度、屬於中度風險的弱點,影響的Log4j2版本涵蓋2.0-alpha1版到2.16.0版(不包含2.12.3),問題在於執行自我參照查詢時,若出現非控制型遞迴處理的狀況,無法提供保護。

當系統的記錄組態運用非預設模式的呈現,進行$${ctx:loginId}這類前後文查詢方式時,攻擊者可透過執行緒前後文圖解(Thread Context Map)輸入資料的控制,來變造內含遞迴式查詢請求的惡意輸入資料,結果將導致出現堆疊意外的錯誤狀況(StackOverflowError)而中止整個執行流程,也就是所謂的阻斷式攻擊(DoS)。

到了12月29日,Apache軟體基金釋出Log4j2的2.17.1版(適用Java8)、2.12.4版(適用Java7)、2.3.2版(適用Java6),修正並揭露新的資安漏洞CVE-2021- 44832,嚴重等級達到CVSS 6.6分的程度、屬於中度風險的弱點,影響的Log4j2版本涵蓋2.0-alpha7版到2.17.0版(不包含2.12.4版與2.3.2版)。

這個漏洞也是與遠端程式碼執行有關的弱點,獲得修改系統記錄的組態檔案許可的攻擊者,可運用JDBC Appender這個能將事件記錄送進資料庫的API,搭配可執行遠端程式碼的JNDI統一資源標識符(URI)的資料來源參考,進而組建出惡意組態。而修正這問題的方式,是到Java協定當中去限制JNDI資料來源名稱,目前Log4j2 2.17.1版、2.12.4版、2.3.2版均支援上述作法。

圖片來源/Wiz
Log4Shell漏洞的嚴重性在於,任何知道濫用手法的人士均可觸發這樣的反應,而且更可怕的是,能夠穿透現行的網路邊界防禦機制,進到內部網路環境,將各種惡意軟體植入多種採用Log4j有漏洞版本的系統設備之中。

完成修補比例並不理想,很多人至今仍在下載與使用有弱點的版本

關於Log4Shell漏洞的威脅影響範圍,在2021年12月中與下半,已陸續有多家資安廠商提出他們的觀察。

以趨勢科技為例,他們表示,雖然僅有7%的用戶受到影響,但他們分散在不同地區──歐洲占26%,美洲占33%,日本占16%,歐洲中東及非洲占25%;若以國家來區分,該公司在美國受到影響的用戶數量最多,有5,069個,其次是日本,有4,223個用戶;若以產業來區分,趨勢科技受到此漏洞影響的用戶數量,依序為政府機關(1,950個)、零售業(1,537個)、製造業(1,507個)。

另一家資安廠商Wiz則與安永會計師事務所合作,他們在Log4Shell漏洞相關消息爆發10天之後(12月20日),分析200個企業雲端環境與數千個雲端帳戶的使用狀況,結果發現:有高達93%的雲端環境都處於有風險狀態,平均而言,僅有45%修補了這個漏洞,

而就不同產業的Log4Shell漏洞修補狀況而言,所有人公認的資安模範生:金融業,表現最好,修補率達到50%,其次是醫療照護產業、軟體業,修補率均為46%,接著是媒體與娛樂產業,以及零售業,修補率各為43%與41%,墊底的是製造業,僅有34%完成修補。

值得注意的是,這個比例只分析到雲端環境,若再加上內部網路、企業自行管理的環境,未修補Log4Shell漏洞與存在相關資安風險的比例,勢必會更高。

另一個Log4Shell影響範圍可參考的數據,則源於掌管開放原始碼軟體元件儲存庫Maven Central Repository的資安廠商Sonatype。根據他們的統計,以Log4j / log4j-core的下載量而言,在2021年8月到11月這4個月期間,合計超過2.86億次,若單看11月,下載量達到710萬,屬於相當受到用戶歡迎的套件。

同時,有將近7千個開放原始碼軟體專案存在著Log4j的相依性,這個套件已成為許多應用系統程式碼常見的部分,就連登陸火星的機智號無人探測直升機,都使用它作為系統建構模塊的一部分。

而在Log4j有無漏洞版本的下載數量與比例上,截至12月14日為止,下載當時Log4j最新版(log4j-core:2.15.0)的累積數量已超過63.3萬次,然而,相較於下載有漏洞版本的數量,已下載無漏洞版本的數量比例僅達到36.5%。

另外,根據Sonatype設立的Log4j下載狀態儀表板來看,全球下載Log4j有漏洞版本(log4j-core:2.15.0之前版本)的比例,從12月10日到1月5日為止,的確呈現開始下降的趨勢,但仍在3到4成之間擺盪。不過,令人擔憂的是,從12月下半到1月初,臺灣持續成為下載Log4j有漏洞版本比例最高的國家地區,雖然12月30日曾降至8成以下,但1月3日竟飆到93.75%,而且,臺灣下載Log4j無漏洞版本(log4j-core:2.15.0之後版本)的比例,至今仍無法突破30%,明顯遠低於世界各國的水準。

雖然下載軟體套件的行為,不能完全等同於必定使用,但還是有一定的關聯性,畢竟若不需要使用這樣的套件,自然就不會引發後續下載的動作,因此,臺灣面臨的Log4j資安風險程度,的確有可能遠高於其他國家。

為印證臺灣的狀況是否真如Sonatype統計所呈現的凶險,我們找上另一家開放原始碼軟體資安廠商WhiteSource代理商叡揚資訊,他們在12月10日到17日之間,對既有用戶進行了相關調查。

結果顯示,他們的用戶絕大部分都在用Log4j,以產業來看,金融業、科技與製造業、電信業,全都是100%,政府機構與財團法人是95%,而未使用的用戶,主要是因為本身採用.NET或非Java的程式語言來進行軟體開發。而這些用戶採行的Log4j版本上,使用1.2.x版的比例超過97%,1.x版與2.x版均使用的也超過六成。

值得一提的是,叡揚這份調查也特別針對用戶採行有漏洞Log4j版本的數量,進行了統計,突顯各個產業所面臨的漏洞管理作業規模差異。

在政府與法人機構,以及科技與製造等領域與產業的用戶當中,叡揚表示,使用1到3個Log4j有漏洞版本的用戶比例均為86%,使用7到9個有漏洞版本的比例都是14%。

若就他們的金融業用戶(包括銀行、證券、保險等公司)而言,目前採行10個以上Log4j有漏洞版本的用戶單位,竟高達一半,使用1到3個有漏洞版本為24%,使用4到6個有漏洞版本與使用7到9個有漏洞版本的比例,均為13%,顯然在因應Log4j的資安風險上,金融業勢必要投入更龐大的資源和心力進行檢整,否則有可能會因此出現更多防護破口,而讓駭客與惡意軟體有機可乘。

圖片來源/Sonatype
從下載具有漏洞Log4j版本的數量,可推測全球各地面臨Log4Shell漏洞的風險程度,掌管開放原始碼軟體元件儲存庫Maven Central Repository的資安廠商Sonatype也每天持續公布相關數據,希望能夠讓更多人了解全世界下載Log4j有無漏洞版本的最新統計。不幸的是,臺灣這個彈丸之地在下載安全性不足版本的數量比例上,竟然連續好幾週都位居世界第一,在2022年1月3日甚至還超過90%,顯見臺灣對於Log4Shell漏洞危險性的認知,不僅處於嚴重不足的狀態,而且還遠遠落在其他國家之後。

濫用漏洞的行為數量激增,駭客與惡意軟體攻擊已經展開實際行動

在Log4j推出改版,以及接連揭露資安漏洞之後,除了從這個軟體使用方式與普及度來探討其風險與涵蓋範圍,很多人更想知道的是:實際濫用這漏洞的攻擊行動出現了嗎?數量與規模有多大?

根據資安廠商Check Point在12月中發布的觀察分析結果來看,已出現大量尋找具有Log4Shell漏洞的系統的存取活動,累積次數超過430萬,而縱觀全球各地的企業內部網路環境當中,已有超過48%的比例,出現試圖濫用這個漏洞的行為。

若從各地區細分,他們表示,澳洲與紐西蘭、歐洲的內部網路,受此漏洞影響比例均超過50%,其次是南美洲、非洲,都逼近5成,北美洲與亞洲則低於全球平均(48.3%),但也有44%以上。

以產業而言,受此漏洞影響的多種領域內部網路比例,都超過一半,例如,教育與研究機構最高,逼近6成;其次是網路服務與代管服務業者,以及系統整合廠商、加值服務商、經銷商,都是57.4%;接著是金融與銀行,有53%受影響;至於政府與軍事單位,則是50.2%。

而在嘗試濫用Log4Shell漏洞的攻擊活動數量上,Check Point也在12月初Log4j 2.15.0推出的幾天後,公布他們所觀察到的暴增現象。

起初在12月10日,他們只看到幾千個攻擊,但隔天增至4萬以上,在最初爆發大量攻擊24小時之後(12月11日),濫用漏洞的攻擊暴漲至近20萬個,到了12月13日,也就是攻擊爆發後的72小時,已出現高達83萬個攻擊活動。關於這樣的發展態勢,資安廠商Palo Alto Networks也有類似發現:在12月5日出現濫用Log4Shell漏洞的攻擊,之後幾天攻擊數量緩慢增加,但到了12月10日以後開始暴增,11日突破1萬個,12日達到2萬個以上。

除了這類攻擊數量激增,另一個同時期發生的狀況,則是濫用Log4Shell漏洞的方式很快產生了大量變異。Check Point表示,在原始的Log4Shell漏洞濫用方式出現後的24小時之內,已衍生出超過60種的變異濫用方式。

而在實際事故的部分,在12月14日,Check Point發現,有5個國家出現加密貨幣挖礦團體嘗試濫用Log4Shell漏洞,而形成了網路攻擊;隔日,他們通報伊朗駭客團體Charming Kitten(APT 35)在過去24小時內曾試圖濫用Log4Shell漏洞,並鎖定以色列政府與商業領域的7個目標發動攻擊。

關於試圖濫用Log4Shell漏洞的活動大增,資安廠商Sophos也有相關發現。在12月9日到12日之間,他們偵測到數十萬次利用此弱點從事遠端執行程式碼的活動──它們會進行弱點掃描、弱點濫用測試,並企圖在這些系統安裝加密貨幣挖礦程式,有些會試著從中擷取有價值的資訊,像是AWS公有雲服務的用戶金鑰與私密資料。

在此同時,身兼系統、雲服務、資安等多重廠商身分的微軟,也有類似發現。他們表示,此類攻擊不只會趁機安裝挖礦程式,還會運用滲透測試軟體框架Cobalt Strike竊取帳號密碼、進行橫向移動,並且從受害系統中擷取資料。

目前還有哪些惡意軟體打算趁火打劫呢?資安業者Lacework發現一些攻擊正利用這個漏洞,來散播殭屍網路程式Mirai與挖礦程式Kinsing。另一家資安廠商Bitdefender也偵測到這類型網路威脅活動的現象,出現多種濫用Log4Shell漏洞的惡意軟體,像是:殭屍網路程式Muhstik、挖礦程式XMRIG、勒索軟體Khonsari、木馬程式Orcus。

至於針對內含有漏洞Log4j版本的IT系統所發起的攻擊活動,在12月29日也被揭露。根據資安廠商CrowdStrike的發現,有個專攻產業間諜與情報領域的中國駭客團體Aquatic Panda,攻擊一個大型學術機構,他們研判,之所以能侵入,破口可能是內含有漏洞Log4j版本的VMware Horizon系統。

圖片來源/Armis
關於Log4Shell漏洞濫用攻擊鎖定的設備類型,根據資安業者Armis在2021年12月26日的統計,有一半都是虛擬機器,其次是伺服器,有38%,合計就占了88%,但許多類型的設備也都被鎖定,像是個人電腦、手機、網路視訊攝影機、印表機、網路電話設備(VoIP),甚至還有影像儲存通訊系統(PACS)、SCADA伺服器、HMI控制面板,雖然比例很低,但由於Log4j普及度高,很難說這些嵌入式設備未使用這個元件,若不幸內含,也難以修補。

Log4Shell漏洞濫用的運作原理

圖片來源/Fastly

為何Log4Shell會是高風險的漏洞?網路上已有許多相關的圖解,我們特別選了資安廠商Fastly公司繪製的運作流程,比較能看到技術細節,而在臺灣也有人將這部分內容解說,拍成了YouTube影片,有興趣進一步了解相關內容的人,可到「育正葛葛的資安遊樂場」這個頻道去看看。

根據Fastly公司的解釋,在執行這類手法時,分成兩個階段:攻擊者在初期先將jndi:字串置入User-Agent HTTP標頭,隨之而來的統一資源標識符(URI)能夠存取次要的酬載,而且,這個酬載能可用來執行各種命令。

具有漏洞的Log4j系統,會去執行包含這段URI的LDAP查詢,在這之後,LDAP伺服器會對這個Log4j系統回應目錄服務的相關資訊,同時,這當中也包含了次要酬載的網址連結,以及javaFactory與javaCodeBase等屬性的數值,可用於建立包含Java類別的物件位置,以便重新呈現最終酬載,接著,Log4j系統會將這個Java類別載入記憶體,並且執行,最終完成整個程式碼執行過程。

 相關報導 

熱門新聞

Advertisement