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