RASP

Featured image

可以實現任意遠端程式碼執行 “懂規矩”的漏洞,危險大的利用門檻高,利用門檻低的危害小,還算符合自然規律。這個漏洞並不按常規出牌,不但影響面廣,利用門檻低,危害還極大。三個因素重疊,到處被冠上“史詩級”的頭銜。
Java 的應用極其廣泛且生態龐大,而 Log4j 作為日誌處理的基礎元件被幾乎所有應用程式所使用。

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

即使在內網環境中 JNDI 外聯無法成功,攻擊者也可以結合 lookup 特性去讀取很多敏感資訊(如資料庫密碼、JAVA 環境變數等),再通過 DNS 協議把敏感資訊帶出內網。

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

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

這是對所有基於流量特徵安全防護產品的巨大挑戰。

當流量特徵不夠明顯時,基於流量特徵的規則陷入尷尬:要麼覆蓋不到,要麼產生嚴重誤報。只能持續不斷補充規則,在繞過和被繞過中迴圈往復。這種防禦手段,能在 0day 爆發初期非常有效的為漏洞修復爭取時間。但隨著各種利用手段的變化越來越多,則很難保證沒有被繞過或誤報。

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

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

RASP 能為應用程式提供執行時期防護。RASP 可攔截所有潛在的惡意流量,例如:SQL 資料隱碼攻擊 (SQL injection)、跨網站腳本攻擊 (cross-site scripting)、漏洞攻擊、殭屍網路,以及經由電子郵件、Slack 及其他訊息類型發動的攻擊。

由於 RASP 是直接內建在應用程式當中,因此能從內部監控應用程式的行為。所以,RASP 預防攻擊的準確度很高 ,因為它可輕易區分攻擊流量與合法請求之間的差別,進而降低誤判情況,如此一來,資安工程師就能專心對抗其他更嚴重的問題。

不僅如此,RASP 對於零時差漏洞攻擊的抵抗力也更好,RASP 可為一些暫時還無法套用修補更新的應用程式提供臨時的修補。同時,RASP 也不須依靠特徵碼來防範漏洞攻擊,因為它是以應用程式本身的行為當作判斷的依據。