RASP 介紹
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 解決方案報告並阻止應用程式攻擊
-
一種可能的架構
[圖源:靈蜥-應用自保護]
RASP在Java上的兩大實現方式
- 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能力範圍。
大體功能總結:
- 檢測,監控,上傳,分析
- 本地即時防禦
- 動態安全策略
- 虛擬補丁,遠端補丁
- 威脅告警
- 可擴充、外掛化 (多語言適配)
除去上述功能,他們都有成熟的後臺管理,態勢分析引擎。
靈蜥 - 安百科技
OpenRASP - 百度
思考
- 這感覺和傳統的防毒軟體的HOOK有些相似,不過一個是對於機器的防護,一個是對於應用自身的防護。
- 如何定義高危行為種類,百度定義了25種行為
- java是通過instrumentation實現的,Nodejs在8之後可以通過Inspector API機制實現,更多的語言實現方案可以參考位元組Elkeid開源專案
- 相容性問題, 不同的語言,不同的語言版本可能都需要重新開發。個人認為作為單獨的防護手段,既是優點,又是缺點。因為能精準根據行為進行防護,誤報率低,但是要普及到各式各樣的應用中,需要大量的人力物力,因此,RASP的大體設計上需要通用化,針對語言的部分要外掛化,以提高開發效率。
- 介於上述的特性,作為一種未知漏洞檢測程式,或者特定漏洞的熱修復程式,應該具有相當的優勢。應當與其他安全產品共同協作,作為一個應用安全的加固或者補充。