眾所周知,log4j 2.x安全事件引起了軒然大波,對于信息安全從業(yè)者來講可以稱之為“家喻戶曉”。與之同時引起大家關(guān)注的是RASP(Runtime application self-protection)技術(shù),該技術(shù)在2014年Gartner的應(yīng)用安全報告里被列為應(yīng)用安全領(lǐng)域的關(guān)鍵趨勢。雖然并不新穎,而受到如此多的關(guān)注還是頭一次。之所以如此,是因為RASP可以增強WAF防護(hù)工具的安全能力,形成縱深防御的安全防護(hù)體系。
RASP是一種內(nèi)置或鏈接到應(yīng)用程序環(huán)境中的安全技術(shù),與應(yīng)用程序融為一體,實時監(jiān)測、阻斷攻擊,使程序自身擁有自我保護(hù)的能力。那么,RASP技術(shù)是如何應(yīng)用、優(yōu)勢好處又有哪些呢?本篇文章為大家簡析RASP的相關(guān)內(nèi)容,讓大家對RASP技術(shù)有更多的了解。
RASP的工作原理
RASP技術(shù)是一種基于服務(wù)器的技術(shù),一旦應(yīng)用程序運行開始時就會激活。而且,所有RASP產(chǎn)品都包含一個運行時監(jiān)視器,該監(jiān)視器接收帶有關(guān)聯(lián)數(shù)據(jù)的連續(xù)事件流。每個RASP系統(tǒng)都有自己的一組安全規(guī)則列表,用于交叉檢查事件和相關(guān)數(shù)據(jù),以確保只有允許的事件才能執(zhí)行。其中,每種RASP技術(shù)提供的保護(hù)級別取決于安全規(guī)則的深度以及實現(xiàn)類型。
例如,RASP系統(tǒng)可能會出現(xiàn)以下事件:?
使用參數(shù)val = 42 和 key = 0xffe01234 調(diào)用“加密” 。
那么,RASP系統(tǒng)如何確定是否允許此調(diào)用需要根據(jù)情況而定。如有一些RASP產(chǎn)品允許基本的“數(shù)據(jù)清理”規(guī)則。這些規(guī)則檢查字符串參數(shù)中的可執(zhí)行代碼。但是,僅僅孤立地檢查函數(shù)調(diào)用序列和發(fā)送給這些調(diào)用的數(shù)據(jù),有許多安全方面是無法充分監(jiān)控的。
為了實現(xiàn)更高級的RASP安全級別,在RASP解決方案中需要兩個元素:動態(tài)上下文和元數(shù)據(jù)。
第一個元素,動態(tài)上下文,涉及到事件的調(diào)用邏輯。例如,RASP規(guī)則可以設(shè)計為僅允許在“check_credentials”的后方可調(diào)用“open_file”,但不能在“factorial”后調(diào)用。再例如,另一個規(guī)則可以設(shè)定為“free_memory”只能在“allocate_memory”之后,并且“free_memory”的參數(shù)需要與“allocate_memory”返回的值相匹配。通常,動態(tài)上下文指的是時間條件,如“執(zhí)行事件A 需要先滿足事件B”,“在調(diào)用D之前,需要先調(diào)用C”等等。
第二個元素,元數(shù)據(jù),指的是“關(guān)于數(shù)據(jù)的數(shù)據(jù)”。例如,在對“encrypt”的調(diào)用中,RASP工具可以檢查“key”的值是否由受信任的密鑰存儲庫發(fā)出的,并且在發(fā)出后直到“encrypt”函數(shù)使用它之前沒有被修改過。當(dāng)通過指針從內(nèi)存中讀取一個值時,RASP可以檢查這個指針是否允許引用該內(nèi)存。此外,當(dāng)通過網(wǎng)卡向外部發(fā)送數(shù)據(jù)時,RASP可以檢查該數(shù)據(jù)是否包含敏感信息,從而可以防止在網(wǎng)絡(luò)上暴露敏感數(shù)據(jù)。
RASP安全方法
RASP工作在應(yīng)用層,因此每個產(chǎn)品都需要以某種方式與應(yīng)用程序集成。監(jiān)控應(yīng)用程序使用(調(diào)用)或執(zhí)行(運行時)的方法有多種,每種方法的部署略有不同,收集的應(yīng)用程序運行方式略有不同。
Servlet 過濾器和插件:一些RASP平臺作為Web服務(wù)器插件或Java Servlet實現(xiàn),通常安裝到Apache Tomcat或 Microsoft .NET中以處理入站HTTP請求。插件在到達(dá)應(yīng)用程序代碼之前過濾請求,將檢測規(guī)則應(yīng)用于收到的每個入站請求。匹配已知攻擊特征的請求被阻止。這是一種相對簡單的將保護(hù)改造到應(yīng)用程序環(huán)境中的方法,可以有效地阻止惡意請求,但它沒有提供其他類型集成可能的深入應(yīng)用程序映射。
庫/JVM替換:通過替換標(biāo)準(zhǔn)應(yīng)用程序庫、JAR文件甚至Java虛擬機來安裝某些RASP產(chǎn)品。這種方法基本上劫持了對底層平臺的調(diào)用,無論是庫調(diào)用還是操作系統(tǒng)。RASP平臺被動地“看到”對支持功能的應(yīng)用程序調(diào)用,在請求被攔截時應(yīng)用規(guī)則。在此模型下,RASP工具可以全面了解應(yīng)用程序代碼路徑和系統(tǒng)調(diào)用,甚至可以學(xué)習(xí)狀態(tài)機或序列行為。更深入的分析提供上下文,允許更細(xì)粒度的檢測規(guī)則。
虛擬化或復(fù)制:這種集成有效地創(chuàng)建了應(yīng)用程序的副本,通常作為虛擬化容器或云實例,并在運行時檢測應(yīng)用程序行為。通過監(jiān)控應(yīng)用程序代碼路徑,請求結(jié)構(gòu)、參數(shù)和 I/O 行為,將規(guī)則應(yīng)用于應(yīng)用程序請求,并阻止惡意或格式錯誤的請求。
RASP常見用例
通常情況下,使用RASP可以幫助DevOps團(tuán)隊和開發(fā)人員實現(xiàn)如下四點:
1.業(yè)務(wù)程序運行時情境安全
應(yīng)用程序安全測試(AST)工具有助于在開發(fā)測試階段發(fā)現(xiàn)漏洞,但是當(dāng)應(yīng)用程序在運營的生產(chǎn)環(huán)境中時,缺少漏洞的檢測防護(hù)能力;而RASP技術(shù)將保護(hù)引擎植入應(yīng)用程序內(nèi)部,基于行為進(jìn)行上下文威脅的實時檢測和防御,不依賴外部防護(hù)設(shè)備就可以保證業(yè)務(wù)運行時安全。
2.保護(hù)安全軟件開發(fā)生命周期(S-SDLC)的正常完成
企業(yè)在使用DAST和IAST等應(yīng)用程序測試技術(shù)的同時,應(yīng)該在軟件開發(fā)過程中使用RASP保護(hù)應(yīng)用程序來完成安全軟件開發(fā)生命周期(S-SDLC)。例如,在安全編碼階段當(dāng)出現(xiàn)安全漏洞,并不確定需要修復(fù)哪些漏洞?應(yīng)該使用白名單還是黑名單的方法?哪些字符應(yīng)該在輸入數(shù)據(jù)中被刪除或允許?等等諸多問題時,修復(fù)已經(jīng)被利用的漏洞并將RASP插件放入應(yīng)用程序的部署包中,可以降低安全漏洞發(fā)生的風(fēng)險,確保代碼的構(gòu)建過程安全完成。
3.保護(hù)開源/第三方代碼應(yīng)用程序安全
由于開源軟件使用比較便利,眾多軟件開發(fā)人員在應(yīng)用程序的開發(fā)中使用了此類軟件,但是由于開源軟件中的安全漏洞比較嚴(yán)重,缺失系統(tǒng)的安全審查機制,使得軟件供應(yīng)鏈攻擊呈現(xiàn)上升趨勢。而RASP技術(shù)在不需要修改代碼的情況下,可以實時保護(hù)開源軟件和第三方代碼中的漏洞。
4.與WAF構(gòu)建積極防御的安全防線
當(dāng)下,應(yīng)用程序主要依賴外部保護(hù),如WAF或IPS(入侵防御系統(tǒng) Intrusion Prevention Systems),因此需要在應(yīng)用程序中構(gòu)建安全特性,以便在運行時保護(hù)自己。RASP 可以在應(yīng)用程序運行時檢測內(nèi)存中寫的數(shù)據(jù)或檢測未經(jīng)授權(quán)的數(shù)據(jù)庫訪問。而且,RASP具有實時能力,可以采取諸如終止會話、發(fā)出警報甚至退出進(jìn)程等操作。這些功能使RASP可以和企業(yè)內(nèi)現(xiàn)有的WAF進(jìn)行互補。
RASP的好處
由于RASP在服務(wù)器上運行,因此只要應(yīng)用程序開始運行,它就會啟動。一旦應(yīng)用程序開始運行,RASP 就會監(jiān)視網(wǎng)絡(luò)的攻擊面以檢測新出現(xiàn)的威脅并保護(hù)它免受任何負(fù)面的內(nèi)部或外部行為的影響。
1、RASP可以提供有關(guān)攻擊者準(zhǔn)確、可見的信息,及時溯源,為保護(hù)應(yīng)用程序提供了可見性。
2、只要Web應(yīng)用程序開始運行,RASP會自動啟動運行,保護(hù)系統(tǒng)的安全性。以防止任何威脅行為,包括網(wǎng)絡(luò)嗅探、篡改代碼、逆向工程和未經(jīng)身份驗證的數(shù)據(jù)泄漏。
3、與Web應(yīng)用程序防火墻 (WAF) 不同,RASP具有更高的準(zhǔn)確性,因為它可以洞察應(yīng)用程序邏輯和配置、事件和數(shù)據(jù)流、執(zhí)行的指令和數(shù)據(jù)處理。而且在預(yù)生產(chǎn)中很容易部署,能成功阻止攻擊。
4、RASP可隨應(yīng)用程序在本地、云、虛擬環(huán)境或容器中進(jìn)行部署,為DevOps提供安全特性。RASP 在大規(guī)模分布式環(huán)境中的優(yōu)勢在于,它可以輕松地跨環(huán)境部署,并將其保護(hù)調(diào)整到安裝它的每個應(yīng)用程序或微服務(wù)。無需更改代碼或配置,因為嵌入應(yīng)用程序的微代理會自動適應(yīng)服務(wù)堆棧。
5、RASP提供篡改檢測功能,并將保護(hù)功能添加到應(yīng)用程序的運行時環(huán)境中,從而提高了針對惡意攻擊的保護(hù)級別。且擁有查看基于邊界的解決方案無法查看的橫向或“東西向”流量的能力。
6、RASP 可以通過適當(dāng)?shù)目梢娦畔⒃跍y試工作中幫助和補充開發(fā)團(tuán)隊。通過使用儀表板,應(yīng)用程序威脅情報可以與提供的有關(guān)已測試部分、最不安全部分、存在安全威脅的代碼行、交易信息等的信息相結(jié)合。
應(yīng)用場景
根據(jù)前面講到的RASP安全特性我們可以看出來,RASP為應(yīng)用程序增加了威脅可見性和安全控制,幫助企事業(yè)單位持續(xù)發(fā)現(xiàn)應(yīng)用威脅并實時阻止。那么,此技術(shù)又比較適合應(yīng)用于什么場景中呢?
1、持續(xù)攻防演練
網(wǎng)絡(luò)攻防演練活動興起以來,不斷衍生出攻、防技術(shù),尤其是云原生、AI等新技術(shù)的不斷應(yīng)用,更多復(fù)雜、難預(yù)見的攻擊手段應(yīng)運而生。對于防守方而言,不能單純依賴于無法看到應(yīng)用程序內(nèi)部威脅的流量嗅探邊界(IPD/IDS、WAF)的解決方案,需要一種更有效的方法以更高的可見性監(jiān)控安全事件。而RASP工具將防護(hù)引擎嵌入到應(yīng)用內(nèi)部,可以在不依賴請求特征的情況下,準(zhǔn)確的識別代碼注入、反序列化等應(yīng)用異常,彌補了傳統(tǒng)防護(hù)工具的缺失;同時,又可以對威脅事件進(jìn)行實時監(jiān)控和響應(yīng),利于在攻防對抗中及時進(jìn)行策略調(diào)整,及時應(yīng)對。
2、緊急漏洞防御
0day漏洞是比較常見且難以防御的一類威脅,一旦被發(fā)現(xiàn)將對系統(tǒng)造成不可估量的損失。RASP代理位于應(yīng)用程序內(nèi)部,在運行時根據(jù)應(yīng)用程序代碼的上下文檢查請求負(fù)載,以確定請求是正常請求還是惡意應(yīng)用程序來保護(hù)自己,可以更好的應(yīng)對此類安全威脅。此外,也包括一些應(yīng)急的漏洞,都有較好的防御效果。
3、高級威脅防御
“道高一尺魔高一丈”,安全防護(hù)措施的不斷加強,勢必引起攻擊者執(zhí)行新的攻擊策略。諸如無文件攻擊、WebShell攻擊、內(nèi)存馬攻擊等攻擊手段不斷被應(yīng)用,而傳統(tǒng)的安全防護(hù)工具容易被繞過。RASP基于行為分析技術(shù),通過規(guī)則匹配、污點追蹤的檢測方法,可以對此類攻擊事件進(jìn)行實時監(jiān)測,發(fā)現(xiàn)威脅數(shù)據(jù)源,做好安全防御。
由于RASP的內(nèi)容比較多,本篇文章簡單為大家講述了部分內(nèi)容,后面將會慢慢更細(xì)致的將RASP技術(shù)分享給大家,希望大家對該技術(shù)有更深刻的了解和認(rèn)知。
參考鏈接:
https://securosis.com/blog/understanding-and-selecting-rasp-technology-overview
https://info.dovermicrosystems.com/blog/what-is-rasp
云鯊RASP
更多詳情盡在:https://rasp.xmirror.cn/