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