Runtime Application Self-protection 運作時應用自我保護

[圖源:綠盟科技]
Gartner (著名資訊技術研究和分析廠商) 在2014年提出了RASP的概念,即将防護引擎嵌入到應用内部,不再依賴外部防護裝置。RASP 是一種新型應用安全防護技術。這種技術直接将防護引擎嵌入到應用内部,能夠感覺應用上下文,與應用程式融為一體,實時監測、阻斷攻擊,使程式自身擁有自保護的能力。并且應用程式無需在編碼時進行任何的修改,隻需進行簡單的配置即可。
舉個例子,當發生SQL注入攻擊時,WAF隻能看到HTTP請求。而RASP技術不但能看到完整的SQL語句,還可以和目前的HTTP請求進行關聯,并結合語義引擎、使用者輸入識别等能力,實作對SQL注入的檢測。
2017 - “RASP 市場規模預計将從 2017 年的 2.947 億美元增長到 2022 年的 12.401 億美元,複合年增長率 (CAGR) 為 33.3%。”[2]
結合了相關資料和個人的一些想法
低誤報。邊界裝置基于請求特征檢測攻擊,通常無法得知攻擊是否成功。
對于掃描器的踩點⾏為、nday 掃描,⼀般會産⽣⼤量報警。RASP 運⾏在應⽤内部,失敗的攻擊不
會觸發檢測邏輯,是以每條攻擊都是成功的報警。
發現更多攻擊與攻擊溯源。以SQL注為例,邊界裝置隻能看到請求資訊。RASP 不但能夠
看到請求資訊,還能看到完整的SQL語句,并進⾏關聯。如果SQL注⼊讓伺服器産⽣了文法錯誤或
者其他異常,RASP引擎也能夠識别和處理。另外,黑客一旦繞過一次WAF,并在伺服器上遺留了後門,WAF将沒什麼辦法,但是RASP卻可以繼續防護。亦或者,伺服器上發現了後門,傳統情況下,我們不能知道黑客曾經做過什麼,但是RASP可以檢查後門執行過程,追溯黑客行為。對所有攻擊ip以及攻擊的檔案進行聚合,用時間軸進行展示。這樣就可以定位到黑客是從上面時候開始進行攻擊的,攻擊中通路了哪些檔案,觸發了哪些攻擊攔截。然後對所有大緻相同的ip進行歸類,可以引出來一個專業用于攻擊溯源的産品。
對抗未知漏洞與0day防禦。發⽣攻擊時,邊界防護裝置⽆法掌握應⽤下⼀步的動向。RASP
技術可以識别出異常的程式邏輯,⽐如反序列化漏洞導緻的指令執⾏,是以可以對抗未知漏洞。0day防禦
對已經hook的關鍵點進行告警通知并且要攔截攻擊行為,然後在公網部署多種不同cms的web蜜罐。如若已經觸發到了告警通知,那麼已經證明攻擊已經成功。且攔截到的漏洞可能為0day。
虛拟更新檔。RASP 可以防止傳入攻擊,是以它為工程團隊提供了時間來修複漏洞,而無需在危機期間工作壓。
應用監控與代碼審計。 可以更好的進行性能監控、日志采集等工作。對于rasp中運用到的技術,換一種思維方式,可以不進行攔截,而進行記錄,對所有記錄的日志結合上下文進行代碼審計。
無需學習和預測。 與WAF類似,RASP通過阻止惡意行為來工作,但無需大量預設規則和調整。RASP 不是建構經過訓練的模型或預測行為,而是在運作時監視應用程式以檢視這些操作是否實際執行。例如,是否發生了對資料庫的請求調用、是否執行了 shell 指令或打開了檔案。
加強微服務安全。 微服務重塑了現代應用程式的開發方式,也越來越流行。由于微服務的分布式特性,傳統的邊界防禦很難持續監控和保護微服務。RSAP通過允許安全、開發和營運團隊協同工作來提高 HTTP 層以外的安全性,深入發現利用漏洞産生的攻擊。
相容性問題,可能編譯語言和應用程式的版本不一緻都導緻RASP産品無法通用。技術棧複雜時,實作的技術難度大,在通用性上也是費時費力,未來可能成為該技術的掣肘。
性能問題,需要在應用中注入防護引擎,肯定會影響伺服器的性能。百度曾經cpu占用率25%,跟換js引擎後降至5%,位元組15%(自認為影響不大)
技術問題,如果RASP技術中對底層攔截點不熟悉,可能導緻漏掉重要hook點,導緻繞過。RASP代碼本身如果有漏洞,也難以解決,甚至降低應用的安全性。
産品認可問題,客戶是否願意将防護引擎注入到他們自身的應用中。
受限上下文,純粹從技術角度來看,由于 RASP 位于應用程式架構内,是以它可能看起來是比 WAF 等外圍防禦解決方案更智能的替代方案。然而,實際上,沒有任何應用程式是獨立的。它們與大量其他服務群組件互動。考慮到每個應用程式子產品都可以部署在不同的端點,這進一步限制了 RASP 的可見性和功能。
缺少分布式保護,由于RASP僅具有目前應用程式上下文的可見性,是以RASP無法有效解決其他應用程式級分布式拒絕服務。邊界防禦解決方案可以完全隔離該流量,吸收它,甚至在攻擊到達應用程式堆棧之前采取防禦措施。
RASP 可以內建為一個架構或子產品,與程式的代碼、庫和系統調用一起運作。該技術也可以實作為虛拟化。 RASP 類似于互動式應用程式安全測試 (IAST),主要差別在于 IAST 專注于識别應用程式中的漏洞,而 RASP 則專注于防止可能利用這些漏洞或其他攻擊媒介的網絡安全攻擊。
RASP 解決方案可以以兩種不同的方式部署:監控模式或保護模式。在監控模式下,RASP 解決方案會報告應用程式攻擊,但不會阻止任何攻擊。在保護模式下,RASP 解決方案報告并阻止應用程式攻擊
一種可能的架構
[圖源:靈蜥-應用自保護]
Java Instrumentation
Virtualization
在 RASP 的 Java 實作中,有兩大類:Instrumentation技術和虛拟化,即基于容器的實作。Instrumentation涉及任何需要更改應用程式内容(例如源代碼、部署描述符或二進制檔案)的過程。此類更改需要重新編譯或重新部署,這都需要在引入或更新 RASP 配置時進行操作幹預。而虛拟化或這種基于容器的 RASP 實施的優勢在于允許更改 RASP 配置而不影響應用程式生命周期或其操作。
Among Java implementations of RASP, there are two broad categories: those that affect protection by instrumenting code and those that use virtualization, meaning container-based implementations. Instrumentation refers to any process that requires a change to application artifacts such as source code, deployment descriptors, or binaries. Such changes require recompilation or redeployment, both requiring operational intervention when the RASP configuration is introduced or updated. Virtualized or container-based RASP implementations have the advantage of allowing RASP configurations to be altered without affecting the application lifecycle or its operation.
可以從成熟的産品中了解RASP能力範圍。
大體功能總結:
檢測,監控,上傳,分析
本地即時防禦
動态安全政策
虛拟更新檔,遠端更新檔
威脅告警
可拓展、插件化 (多語言适配)
除去上述功能,他們都有成熟的背景管理,态勢分析引擎。
這感覺和傳統的防毒軟體的HOOK有些相似,不過一個是對于機器的防護,一個是對于應用自身的防護。
如何定義高危行為種類,百度定義了25種行為
java是通過instrumentation實作的,Nodejs在8之後可以通過Inspector API機制實作,更多的語言實作方案可以參考位元組Elkeid開源項目
相容性問題, 不同的語言,不同的語言版本可能都需要重新開發。個人認為作為單獨的防護手段,既是優點,又是缺點。因為能精準根據行為進行防護,誤報率低,但是要普及到各式各樣的應用中,需要大量的人力物力,是以,RASP的大體設計上需要通用化,針對語言的部分要插件化,以提高開發效率。
介于上述的特性,作為一種未知漏洞檢測程式,或者特定漏洞的熱修複程式,應該具有相當的優勢。應當與其他安全産品共同協作,作為一個應用安全的加強或者補充。
百度安全OpenRASP
市場調查
RASP-新型Java應用安全
WIKI
RASP在微服務中的實踐
綠盟科技-RASP概述
位元組Elkeid開源項目
靈蜥-應用自保護平台
Sqreen國外軟體
RASP攻防技術淺談