應(yīng)用實時安全防護探索
隨著數(shù)字化轉(zhuǎn)型進程的不斷加快,應(yīng)用程序安全作為安全防護關(guān)鍵一環(huán),日益成為企業(yè)安全運營關(guān)注的焦點,運營人員需要為應(yīng)用程序提供最佳的安全保護。當前常用的安全防護措施被視為一種附加安全層,它通過增加防御機制來保護應(yīng)用程序,然而應(yīng)用程序安全僅僅依靠外部加固安全解決方案和網(wǎng)絡(luò)安全措施來保護是不夠的,總結(jié)G行網(wǎng)絡(luò)攻防演習(xí)經(jīng)驗,我們開始關(guān)注探索運行時應(yīng)用程序自我保護(RASP)對于應(yīng)用程序的保護。RASP技術(shù)可以實時地檢測和阻斷安全攻擊,確保應(yīng)用程序的運行連續(xù)性同時保護其安全性。本文旨在探討運行時應(yīng)用程序自我保護的工作原理、優(yōu)勢和不足、實施和維護方法。
現(xiàn)狀分析
G行基于分層分級安全防護原則構(gòu)建安全防護體系,建設(shè)信息安全運營指揮中心,縱深部署3大平臺:態(tài)勢感知平臺、安全數(shù)據(jù)湖和WEB應(yīng)用防火墻,以平臺能力、可視化能力、安全資產(chǎn)能力、人員能力建設(shè),開展全天候安全威脅監(jiān)測和運營處置工作,實現(xiàn)及時預(yù)警、瞬時響應(yīng)處置,保障業(yè)務(wù)和系統(tǒng)安全。
WEB應(yīng)用防火墻是針對WEB防護、網(wǎng)頁保護的安全防護設(shè)備,主要防護功能基于流量規(guī)則的防御,存在一定誤報率和繞過風險,而RASP技術(shù)防御是根據(jù)應(yīng)用代碼運行態(tài)請求上下文,在惡意攻擊代碼被執(zhí)行前,進行有效識別和攔截。同時,隨著應(yīng)用分布式演進導(dǎo)致應(yīng)用模塊數(shù)量不斷增加,應(yīng)用程序和中間件安全運維的壓力逐漸增大,傳統(tǒng)的基于已有規(guī)則的應(yīng)用過濾和安裝安全補丁等被動安全防護手段不僅投入大而且效能低,特別是在應(yīng)對0day漏洞攻擊手段時更是收效甚微,應(yīng)用主動安全防護需求將成為企業(yè)安全防護必要補充。
功能介紹
傳統(tǒng)的安全措施通常建立在“最小特權(quán)原則”的基礎(chǔ)上,這意味著應(yīng)用程序只能使用它具有的最小權(quán)限以避免安全漏洞。RASP技術(shù)是在應(yīng)用程序?qū)用嫔蠈Π踩录M行管理,能夠?qū)崟r檢測到應(yīng)用程序的安全事件并對其采取相應(yīng)措施的技術(shù)。這里的安全事件指在代碼級別執(zhí)行安全檢查,類似代碼審計,及時檢測出異常攻擊行為。當檢測到安全事件時,RASP技術(shù)可以阻止不安全的操作、嘗試修復(fù)漏洞以及發(fā)出告警,從而保護應(yīng)用程序的安全。
RASP技術(shù)可以在幾個方面為應(yīng)用程序提供保護:
能夠?qū)崟r檢測和響應(yīng)安全事件RASP技術(shù)可以在應(yīng)用程序運行時實時檢測并響應(yīng)安全事件。這可以幫助安全人員在攻擊者發(fā)起攻擊之前便能夠阻止攻擊事件的發(fā)生,從而加強了應(yīng)用程序的安全性。
能夠保護應(yīng)用程序的數(shù)據(jù)和用戶RASP技術(shù)可以通過實時監(jiān)控應(yīng)用程序的行為,保護應(yīng)用程序的數(shù)據(jù)和用戶。例如,RASP技術(shù)可以檢測到SQL注入攻擊并阻止攻擊,以保護應(yīng)用程序的數(shù)據(jù)。
能夠自主阻斷不安全的操作RASP技術(shù)可以自主決定何時阻斷不安全的操作,而不是僅僅依靠網(wǎng)絡(luò)安全措施。這可以幫助安全人員為應(yīng)用程序提供更好的防御措施,以保護其數(shù)據(jù)和用戶。
工作原理
各種語言均提供RASP技術(shù)實現(xiàn)方式,技術(shù)原理類似,下面以Java語言為例探討RASP技術(shù)工作方式。
JVM字節(jié)碼技術(shù)提供了一種實現(xiàn)RASP技術(shù)的方法,其可準確捕獲應(yīng)用程序的運行時行為,可以很好地獲取應(yīng)用程序運行時的所有細節(jié),包括調(diào)用的方法、變量值及其他參數(shù),然后使用這些信息可以檢測到不安全的行為,并采取相應(yīng)的措施防止攻擊。
JVM字節(jié)碼使用Java-Agent實現(xiàn),Agent是一個運行在目標JVM的特定程序,它的職責是負責從目標JVM中獲取數(shù)據(jù),然后將數(shù)據(jù)傳遞給外部進程。從Java SE 5開始,開發(fā)者可以使用Java的Instrumentation接口構(gòu)建?個獨?于應(yīng)?程序的代理程序(Agent),用來監(jiān)測和協(xié)助運行在JVM 上的程序,甚至能夠替換和修改某些類的定義。
圖1 基于JVM的RASP技術(shù)實現(xiàn)方法
Java Agent支持目標JVM啟動時加載,也支持在目標JVM運行時加載,這兩種不同的加載模式會使用不同的入口函數(shù),如果需要在目標JVM啟動的同時加載Agent,那么可以選擇實現(xiàn)下面的方法:
public static void premain(String agentArgs, Instrumentation inst);
public static void premain(String agentArgs);
在premain函數(shù)中,我們可以對字節(jié)碼進?操作,編?RASP的安全探針。
public static void premain(String agentArgs, Instrumentation inst){
inst.addTransformer(new ClassTransformer());}
借助ClassFileTransformer接口,實現(xiàn)對字節(jié)碼的修改,定義一個類,實現(xiàn)ClassFileTransformer接口,并重寫transform方法,在這個方法中,通過ASM 技術(shù)修改字節(jié)碼。
在特定高風險類執(zhí)行時,檢查其字段、參數(shù)和方法行為:如"eval", "getRuntime().exec()", "/bin/sh", "/bin/bash", "HttpURLConnection", "HttpClient", "SocketChannel" 或者SQL注入類型"select", "from", "insert", "union", ";", "and", "or", "drop", "update", "delete"等高風險行為時進行攔截和告警。
基于JVM字節(jié)碼底層實現(xiàn),RASP技術(shù)可以針對以下常見的安全漏洞提供保護:
- SQL注入攻擊;
- 跨站點腳本攻擊;
- 跨站點請求偽造攻擊。
優(yōu)勢和不足
優(yōu)勢:
- 準確性高RASP技術(shù)是在代碼級別運行的,可以有效攔截混淆和加密的流量,從而具有更高的精度,這意味著它可以提供更高質(zhì)量的保護。
- 可擴展性強由于JVM字節(jié)碼可以處理大量的Java等應(yīng)用程序,因此RASP技術(shù)也可以對許多不同的應(yīng)用程序進行擴展。這使得RASP技術(shù)適合在應(yīng)用大規(guī)模部署使用的時候非常有幫助。
- 資源成本低RASP技術(shù)根植于應(yīng)用程序,在應(yīng)用程序動態(tài)運行時進行檢測和保護,基于這種實時檢測并響應(yīng)安全事件機制,相對于網(wǎng)絡(luò)安全措施而言,具有更低的資源消耗。
- 維護成本低RASP從底層函數(shù)進行保護,監(jiān)控和阻斷攻擊的最終危害行為,所以基本上不需要對RASP的規(guī)則做過多調(diào)整即可實現(xiàn)內(nèi)建應(yīng)用安全。
- 為應(yīng)對0day漏洞提供幫助RASP技術(shù)能夠根據(jù)0day漏洞的提權(quán)、寫入和執(zhí)行等行為特征快速識別并響應(yīng)應(yīng)用程序的各種安全事件,并對安全攻擊回溯追源效率較高。
不足:
- 語言兼容性限制RASP技術(shù)的實現(xiàn)需要編程語言和框架支持,目前Java、PHP等語言實現(xiàn)兼容性較好,但對其他語言需要額外開發(fā)和集成支持。
- 應(yīng)用兼容性RASP技術(shù)在應(yīng)用程序內(nèi)部執(zhí)行,應(yīng)用程序不規(guī)范的運行代碼可能會導(dǎo)致兼容問題,同時應(yīng)用投產(chǎn)變化如后臺WEB直接編輯命令等類似場景,需要RASP對應(yīng)進行白名單注冊。
- 性能影響RASP和應(yīng)用同時工作在運行時環(huán)境,和應(yīng)用共享一定的計算資源,對高并發(fā)低時延的應(yīng)用存在影響風險。例如對于跨站腳本攻擊(XSS)類攻擊,需要在用戶請求和服務(wù)器響應(yīng)中分析是否嵌入惡意腳本,當存在龐大攻擊樣本表單的場景中,XSS的正則匹配將會消耗大量的資源。但是可以根據(jù)業(yè)務(wù)場景,控制正則匹配范圍來動態(tài)調(diào)整檢測精度和檢測速度。
實施和維護
實施RASP技術(shù)需要以下步驟:
- 確定保護目標遵循分層分級的防護策略,對互聯(lián)網(wǎng)邊界和重點防護系統(tǒng)進行篩選和重點防護,分級的保護目標對應(yīng)執(zhí)行不同的防護方案,同步RASP技術(shù)需要檢測的不同安全事件類型。
- 選擇適當?shù)腞ASP技術(shù)G行對外業(yè)務(wù)程序主流Java程序,成熟的Java字節(jié)碼實現(xiàn)的RASP技術(shù)已在社區(qū)廣泛流行,如OpenRASP、OneRASP等。社區(qū)和互聯(lián)網(wǎng)大廠大規(guī)模部署后多年實踐和更新迭代,RASP技術(shù)在性能、穩(wěn)定性和安全性控制方面表現(xiàn)優(yōu)秀,尤其是其聯(lián)動WAF雙管齊下的場景,有效監(jiān)測和攔截隱藏的安全攻擊。
- 實施RASP技術(shù)G行基于Java字節(jié)碼技術(shù)的鷹眼系統(tǒng)Agent已大范圍部署,可探索集成RASP功能實現(xiàn)。同時,Poin統(tǒng)一開發(fā)框架亦可集成RASP技術(shù)形成統(tǒng)一通用的安全防護方案。目前,信創(chuàng)中間件已適配RASP運行時應(yīng)用自防護機制可攔截WEB安全攻擊,如內(nèi)置命令注入、失效身份認證、敏感數(shù)據(jù)泄露、跨站腳本(XSS)等40余種常見安全漏洞,具備安全事件分類統(tǒng)計能力,為運維安全防護提供數(shù)據(jù)支撐,實現(xiàn)精準加固,提升業(yè)務(wù)系統(tǒng)安全性。
- 監(jiān)測和調(diào)整對于應(yīng)用集成RASP技術(shù)匯報的安全事件,安全人員可以實時監(jiān)測和調(diào)整RASP技術(shù)策略以保持應(yīng)對安全事件的準確性和時效性。RASP技術(shù)防護提供的特征可提供給WAF、全流量系統(tǒng)、廠商等,可有效判定未知0day并對安全攻擊回溯追源,同時,持續(xù)評估RASP技術(shù)的功能和表現(xiàn),以保持其長期有效性。
總結(jié)
RASP技術(shù)提供了一種可行的方法來為應(yīng)用程序提供安全保護。它提供了應(yīng)用程序安全性更為全面的保護,并且能夠更好地識別和響應(yīng)各種安全事件。盡管RASP技術(shù)仍存在一些缺點,但從根本上來說,RASP技術(shù)為應(yīng)用程序提供了高效、可擴展和靈活的安全保護。后續(xù)我們將繼續(xù)探索RASP技術(shù)實施和維護的有效方案,以期更好地保護應(yīng)用程序和信息,服務(wù)好廣大客戶。