天天看點

Apache Log4j2,RASP防禦優勢及原理

Apache Log4j2遠端代碼執行漏洞已爆發一周,安全廠商提供各類防禦方案和檢測工具,甲方團隊連夜應急。

影響持續至今,網上流傳的各種利用和繞過姿勢還在層出不窮,影響面持續擴大。所有安全人都開始反思一個問題:目前的防禦是否有效?針對這樣的0day再次發生,什麼是有效的手段?

阿裡雲安全團隊此次參與了諸多客戶應急,并從雲平台自身防禦總結經驗,嘗試抛出一些觀點以供讨論。

首先,我們先來從技術層面分析一下為什麼這次Log4j2這麼難搞。

Apache Log4j2漏洞們的特質

此次Log4j2漏洞有兩個很棘手的特質:

01

可以實作任意遠端代碼執行

“懂規矩”的漏洞,危險大的利用門檻高,利用門檻低的危害小,還算符合自然規律。這個漏洞并不按正常出牌,不但影響面廣,利用門檻低,危害還極大。三個因素重疊,到處被冠上“史詩級”的頭銜。

Java的應用極其廣泛且生态龐大,而Log4j作為日志處理的基礎元件被幾乎所有應用程式所使用。

通過JNDI注入的手段,可以實作任意遠端代碼執行,意味着攻擊者可以在存在漏洞的伺服器上為所欲為。

即使在内網環境中JNDI外聯無法成功,攻擊者也可以結合lookup特性去讀取很多敏感資訊(如資料庫密碼、JAVA環境變量等),再通過DNS協定把敏感資訊帶出内網。解法之一雲防火牆“主動外聯管控+DNS防火牆阻斷解析外帶資訊” 這兩重主動外聯管控能力,可以阻止漏洞利用和“不出網”的資訊洩露。

詳情可見《

警惕主動外聯!雲防火牆檢測攔截勒索、Muhstik僵屍網絡等 Log4j2漏洞利用

02

流量特征隐蔽

某些場景下幾乎沒有可以跟正常請求區分開來的強特征。

本次漏洞PoC構造非常簡單,漏洞觸發的點廣泛而靈活,配合各種變量和協定的嵌套繞過方式,導緻流量特征非常複雜和隐蔽。Log4j2的lookup功能支援一些特殊的寫法來對字元做二次處理,如${lower:j}Ndi、${upper:JN}di、${aaa:vv:cc:-j}ndi等寫法,都能打破字元串的連續性,造成利用時候的流量特征極為不明顯。

下圖是一款專門用于混淆Log4j2利用的工具對Payload進行混淆後的結果,可以看到混淆後的結果是極具欺騙性的:

Apache Log4j2,RASP防禦優勢及原理

這是對所有基于流量特征安全防護産品的巨大挑戰。

當流量特征不夠明顯時,基于流量特征的規則陷入尴尬:要麼覆寫不到,要麼産生嚴重誤報。隻能持續不斷補充規則,在繞過和被繞過中循環往複。這種防禦手段,能在0day爆發初期非常有效的為漏洞修複争取時間。但随着各種利用手段的變化越來越多,則很難保證沒有被繞過或誤報。

與Log4j2漏洞的某些“弱特征”甚至“0特征”利用方式類似的場景,還有加密流量、記憶體馬等,這些手段都曾在大型攻防演練中大放異彩,難以檢測的原理是類似的。

是以,有沒有一種技術,可以無視漏洞利用手法在流量特征上的各種變化或隐藏,防禦的更天然,甚至不依賴規則更新就可以防禦這類0day?

RASP在此次事件中重回視野

RASP(Runtime Application Self-Protection),運作時應用自我防護,安全行業其實對其并不陌生,卻因為傳統印象而采納不多。

這類技術的優勢在于,以疫情類比,傳統的邊界防禦類産品,類似口罩/防護服,而RASP則類似疫苗,會将自己注入到應用當中,伴随應用一起運作,通過hook關鍵函數實時檢測應用執行的高危行為。

Apache Log4j2,RASP防禦優勢及原理

RASP是哪一類0day的天敵?

不同于基于流量特征的檢測,RASP核心關注應用行為,而非流量本身。

當RASP發現一個應用,做了它正常不應該做的事情時,大機率意味着目前應用已經被攻擊者利用漏洞攻陷并做了一些高危操作(比如指令執行、檔案讀取、檔案上傳、SSRF等)。

其第一個優勢是:凡是被RASP防禦的行為,都已經是真正可以被成功利用的攻擊行為。

而應用的行為類型,相比于變幻無窮近乎無限的流量特征來說,往往是可以窮舉的。從應用行為異常的角度去檢測,範圍可以大幅收斂到有限的類型,這是RASP可以無視流量特征并且不依賴規則更新就可以防禦幾乎全部0day(包括加密流量和記憶體馬)的根本原因。

Apache Log4j2,RASP防禦優勢及原理

0day和一些弱特征漏洞利用方式之是以難以防禦的原因,上文已經提及。但不管流量特征如何變化,漏洞利用的本質:還是要回歸到讓應用來做一些不安全的動作上——也就是應用行為或者企圖。

以此次漏洞來看,RASP并不關注請求中的流量是否包含了惡意的Payload,而是去關注Log4j2究竟使用JNDI功能去做了什麼。如果進行正常的JNDI 查詢,就沒有問題;但如果企圖使用JNDI功能進行指令執行,就是一個顯而易見的危險行為。

RASP正是在這個階段發揮了極其重要的作用:在應用犯錯之前将其“懸崖勒馬”。

從這個角度上還可以引申出RASP的第二個優勢:誤報極低。

比如:如果應用壓根沒有使用Log4j2,基于Payload中的惡意特征上報攻擊就意味着誤報,一定程度上消耗安全人員的精力。

而由于RASP運作在應用内部,可以明确知道來自流量層的Payload是否成功進入了Log4j2的危險函數,是以不會存在“無效告警”。

近些年來,從weblogic到shiro、dubbo再到今天的Log4j2,由第三方元件導緻的0day不斷的大規模爆發。

因為這類元件的代碼并不由使用它的應用的開發們維護,一旦漏洞爆發,安全人員第一時間首先需要投入大量的精力去排查哪些應用在使用存在漏洞的元件,這并不是一個容易的事情。特别是對應用衆多、疊代快速的企業來說,自己也說不清楚哪些應用、在使用哪些元件的、哪些版本是非常正常的事情。

這裡引出了RASP的第三個優勢:第三方元件自查。

當一個0day出現時,可以第一時間排查到受影響元件的路徑,如下圖所示:

Apache Log4j2,RASP防禦優勢及原理

(通過阿裡雲RASP定位的Log4j元件路徑)

對于曆史上已經爆出過CVE漏洞的元件,RASP還可以自動檢測并關聯其對應的CVE漏洞編号、漏洞等級等資訊,友善安全和開發人員及時修複。

雲原生RASP

架構優勢加速落地

2014年,Gartner就将RASP列為應用安全的關鍵趨勢,但實際上RASP在生産環境中大規模落地一直比較緩慢,目前也隻有少數頭部的網際網路公司做到了。究其原因,最大的阻礙在于RASP技術對應用自身的入侵性,開發人員會非常擔憂産生性能、穩定性、相容性下降等問題。

阿裡巴巴集團從2015年開始部署自研的RASP産品,多年實踐已完成在生産網的大規模部署,并且經曆了生産網超大流量業務的實戰檢驗,在性能、穩定性和安全性(自我保護)控制方面實作最佳表現。不得不說,這其中的确需要大量時間來沉澱經驗和教訓,不斷調優,這也是甲方安全團隊自建RASP最大的難點。

阿裡雲安全團隊将RASP最佳實踐嘗試輸出,去年推出更通用、更适合使用者場景的RASP版本,并在多個金融、教育使用者的生産網中部署和應用。今年,打通雲架構優勢,實作雲原生ARMS産品應用一鍵接入RASP的絲滑體驗(開啟路徑:阿裡雲ARMS-應用安全菜單),極大降低雲上使用者使用RASP防禦能力的門檻。

近期事件接入RASP的使用者中,阿裡雲安全團隊觀測到非常兇猛的Log4j2漏洞利用和危險行為。以某金融使用者為例,接入2天,RASP檢測并攔截了涉及8個Java應用的184次真實攻擊,其中包含43次指令執行和141次DNS漏洞探測。如果缺少RASP的防禦一環阻攔,這些是極大可能真實執行成功的攻擊。

目前版本免費公測,應急的安全同志們可以接入RASP再從容更新。如果需保護應用暫時沒有上雲,也可以聯系我們部署線下版RASP。

PS:因漏洞管理規定,文中圖檔漏洞細節通過馬賽克做了模糊處理,敬請諒解

  阿裡雲安全  

國際領先的雲安全解決方案提供方,保護全國 40% 的網站,每天抵禦 60 億次攻擊。

2020 年,國内唯一雲廠商整體安全能力獲國際三大機構(Gartner/Forrester/IDC)認可,以安全能力和市場佔有率的絕對優勢占據上司者地位。

阿裡雲最早提出并定義雲原生安全,持續為雲上使用者提供原生應用、資料、業務、網絡、計算的保護能力,和基礎設施深度融合推動安全服務化,支援彈性、動态、複雜的行業場景,獲得包括政府、金融、網際網路等各行業使用者認可。

作為亞太區最早布局機密計算、最全合規資質認證和使用者隐私保護的先行者,阿裡雲從硬體級安全可信根、硬體固件安全、系統可信鍊、可信執行環境和合規資質等方面落地可信計算環境,為使用者提供全球最高等級的安全可信雲。