簡(jiǎn)述:前言虛擬補(bǔ)?。╒P)近年來一直是保護(hù)應(yīng)用程序最受歡迎的方法之一,如果在Web應(yīng)用程序防火墻層級(jí)添加VP功能,該功能可用于保護(hù)Web應(yīng)用程序免遭已知漏洞的威脅攻擊。簡(jiǎn)而言之,VP利用靜態(tài)應(yīng)用程序安全測(cè)試(SAST)的結(jié)果并使用它們來創(chuàng)建規(guī)則以
前言
虛擬補(bǔ)?。╒P)如果是近年來最受歡迎的保護(hù)應(yīng)用程序的方法之一Web添加應(yīng)用程序防火墻層級(jí)VP該功能可用于保護(hù)Web應(yīng)用程序免受已知漏洞的威脅。簡(jiǎn)而言之,VP靜態(tài)應(yīng)用安全測(cè)試(SAST)用它們來過濾規(guī)則的結(jié)果WAF上的HTTP請(qǐng)求。但問題是,SAST和WAF依賴于不同的應(yīng)用程序模型和決策方法。因此,目前還沒有一個(gè)可用的解決方案能夠使用SAST與WAF完美結(jié)合。SAST基于白盒模型,采用公式方法檢測(cè)代碼中的漏洞。然而,WAF將應(yīng)用程序視為黑盒子,因此它使用啟發(fā)式方式進(jìn)行攻擊檢測(cè)。但如果我們能讓步的話SAST和WAF完美結(jié)合在一起,我們可以通過SAST獲取應(yīng)用程序內(nèi)部結(jié)構(gòu)的信息,并提供這些信息WAF,這樣,我們就可以是一個(gè)“優(yōu)雅”檢測(cè)網(wǎng)絡(luò)攻擊的方法。
傳統(tǒng)VP
一般地,在Web在傳統(tǒng)的應(yīng)用程序自動(dòng)化虛擬修復(fù)方法中,我們需要方向WAF提供SAST檢測(cè)到的每個(gè)漏洞信息包括:
漏洞分類
Web應(yīng)用程序的弱點(diǎn)
攻擊所需的HTTP請(qǐng)求參數(shù)值
構(gòu)成攻擊向量脆弱點(diǎn)參數(shù)的值
一組字符或一個(gè)單詞可用于脆弱點(diǎn)參數(shù)中的漏洞。
一般來說,我們可以通過定義某些函數(shù)來獲得HTTP請(qǐng)求中的參數(shù)值,例如,以下是一段易受性XSS攻擊的ASP.NET頁面代碼片段:
通過分析上述頁面的攻擊向量代碼,我們可以生成一組攻擊向量值的符號(hào)公式:
{condition=“secret”⇒param∈{XSShtml-text}},其中XSShtml-text是TEXT用于上下文XSS向量集合攻擊。在實(shí)際應(yīng)用場(chǎng)景中,WAF虛擬補(bǔ)丁的描述符可以用來生成過濾規(guī)則,以防止所有可以使用相關(guān)漏洞的人HTTP請(qǐng)求。
雖然這肯定會(huì)導(dǎo)致一些攻擊,但它有一些很大的缺點(diǎn):
為示任何給定的漏洞,SAST需要找到可能的攻擊向量。但為了確保漏洞能夠真正消除,SAST處理所有可能的攻擊向量是必要的。SAST很難將這些信息傳遞給這些信息WAF,因?yàn)橛捎诠粝蛄空Z法的不規(guī)則性,矢量集不僅是無窮大的,甚至不能用正則表達(dá)式來表達(dá)。
使用漏洞所需的其他請(qǐng)求參數(shù)的值也是如此。
如果入侵點(diǎn)與脆弱執(zhí)行點(diǎn)之間的攻擊向量語法在其上下文中發(fā)生變化,則脆弱參數(shù)的信息將毫無價(jià)值。
由于這些設(shè)計(jì)缺陷,對(duì)于SAST檢測(cè)到的漏洞,VP該技術(shù)不能為其提供可能的攻擊保護(hù)。試著創(chuàng)造這個(gè)“全面的”流量過濾規(guī)則通常會(huì)阻止合法性HTTP請(qǐng)求并中斷Web操作應(yīng)用程序,讓我們稍微修改漏洞代碼:
與上一個(gè)例子不同的是,兩個(gè)請(qǐng)求參數(shù)都做了Decode新代碼的攻擊向量公式如下:
靜態(tài)分析將在相關(guān)計(jì)算流程圖中進(jìn)行(ConfiG)為了描述節(jié)點(diǎn)中的自定義解碼函數(shù)Base64-URL-Base64轉(zhuǎn)換鏈如下:
對(duì)于這樣的公式,我們?nèi)匀挥锌赡茉诖嘶A(chǔ)上建立漏洞,但由于以下原因,虛擬補(bǔ)丁的生成不能應(yīng)用于此:
只有在請(qǐng)求中“condition”參數(shù)包含“secret”只有在字符串中使用這個(gè)漏洞。然而,由于解碼功能的不規(guī)則性,該參數(shù)的值集非常大,不可行通過正則表達(dá)式表達(dá)該集。
事實(shí)上,攻擊向量的請(qǐng)求參數(shù)也被解碼了。SAST這組危險(xiǎn)元素?zé)o法描述為WAF。
由于傳統(tǒng)VP所有的問題都來自于基于白盒方法無法解決的問題WAF交互級(jí)別的應(yīng)用程序,因此明顯的解決方案是實(shí)現(xiàn)此功能并進(jìn)一步改進(jìn):
SAST向WAF在從進(jìn)入點(diǎn)到易受攻擊執(zhí)行點(diǎn)的整個(gè)過程中,提供易受攻擊的參數(shù)和所有轉(zhuǎn)換信息。
公式法替換了攻擊檢測(cè),并包含了任何漏洞的使用條件信息。
因此,運(yùn)行時(shí)虛擬補(bǔ)丁應(yīng)運(yùn)而生。
虛擬補(bǔ)丁運(yùn)行時(shí)
虛擬修復(fù)運(yùn)行時(shí)(RVP)基于原理PT應(yīng)用檢查器(PTAI)實(shí)現(xiàn)計(jì)算流程圖模型。類似于公式符號(hào)計(jì)算的語義表示,該模型是由應(yīng)用程序代碼的抽象解釋構(gòu)建的。模型中的圖節(jié)點(diǎn)包含目標(biāo)語言的生成公式,公式產(chǎn)生與相關(guān)執(zhí)行點(diǎn)上所有數(shù)據(jù)流相關(guān)的所有合法值,如下圖所示:
上圖中的流量稱為執(zhí)行點(diǎn)參數(shù)。CompFG可以評(píng)估,所以我們可以��;在任何執(zhí)行點(diǎn)計(jì)算所有參數(shù)的值。RVP分為部署(D)和運(yùn)行(R)這兩個(gè)階段對(duì)應(yīng)于應(yīng)用程序的生命周期,如下圖所示:
部署階段
在部署新版本的應(yīng)用程序之前,應(yīng)用程序是由PTAI分析受攻擊的執(zhí)行點(diǎn)進(jìn)行分析CompFG節(jié)點(diǎn)計(jì)算三個(gè)公式:
獲取脆弱執(zhí)行點(diǎn)的條件
獲取所有參數(shù)值的條件
所有參數(shù)及其相應(yīng)語法的值集
上述所有公式集將根據(jù)應(yīng)用程序的入口點(diǎn)進(jìn)行分組,入口點(diǎn)定義為分析器的數(shù)據(jù)庫,并進(jìn)行和諧PTAI支持的每個(gè)Web框架相關(guān)。基于代碼提取所包含的漏洞信息(基于S-expression語法的特殊語言編寫的代碼,編程語言使用不依賴于目標(biāo)語言的形式來描述CompFG提取相關(guān)公式列表形成報(bào)告,如上述代碼示例中描述脆弱點(diǎn)參數(shù)值的公式如下:
獲得脆弱點(diǎn)的公式是:
然后上傳報(bào)告PT應(yīng)用防火墻(PTAF),在報(bào)告的基礎(chǔ)上,PTWAF可以計(jì)算報(bào)表中包含的所有公式生成二進(jìn)制模塊。例如,用于計(jì)算上述脆弱點(diǎn)的反編譯代碼如下:
為計(jì)算公式,PTAF必須具備以下條件之一:
報(bào)告中可能出現(xiàn)的所有函數(shù)的預(yù)計(jì)算
有沙箱運(yùn)行環(huán)境,用于運(yùn)行Web例如,應(yīng)用程序或其他平臺(tái)CLR,JVM或PHP,Python或Ruby應(yīng)用程序中使用的解釋器)和庫
第一種方法可以在一定程度上保證速度快,但是WAF即使開發(fā)人員將范圍限制為標(biāo)準(zhǔn)庫函數(shù),開發(fā)人員也需要大量的手動(dòng)工作來描述預(yù)計(jì)算數(shù)據(jù)庫。第二種方法允許計(jì)算報(bào)告中可能出現(xiàn)的所有函數(shù),但這種方法會(huì)增加對(duì)每個(gè)函數(shù)的處理HTTP要求所需的時(shí)間,因?yàn)閃AF每個(gè)函數(shù)的計(jì)算操作需要訪問操作環(huán)境。這里最合適的解決方案是用第一種方法計(jì)算最常見的函數(shù),用第二種方法計(jì)算其他函數(shù)。
該公式可能包含分析器無法處理的函數(shù)或PTAF無法計(jì)算的函數(shù)將在公式中標(biāo)記為“unknown”,并以如下所述的特殊方式進(jìn)行處理。
運(yùn)行階段
在運(yùn)行階段,WAF將每個(gè)HTTP請(qǐng)求的處理委托給二進(jìn)制模塊,分析請(qǐng)求并檢測(cè)模塊Web應(yīng)用程序中的相關(guān)入口點(diǎn)。WAF選擇所有檢測(cè)到的漏洞公式,然后以特定的方式執(zhí)行計(jì)算操作。
首先,計(jì)算公式的兩個(gè)條件是:1)到達(dá)脆弱點(diǎn),2)獲得所有參數(shù)的值。在每個(gè)公式中,變量被相關(guān)請(qǐng)求參數(shù)的值所取代,然后計(jì)算公式值。如果公式標(biāo)記為“unknown”處理如下:
每個(gè)“unknown”標(biāo)志通過公式表達(dá)式樹自下而上擴(kuò)展,直到找到布爾表達(dá)式。
為了解決布爾的滿意度問題,這種表達(dá)式將被布爾變量所取代。
假設(shè)是通過上一步生成的“unknown”n個(gè)公式,然后計(jì)算每個(gè)公式的值。如果至少有一個(gè)公式是可以滿足的,那么假設(shè)也被認(rèn)為是可以滿足的。
假設(shè)計(jì)算顯示為假,即使所有的請(qǐng)求參數(shù)都有危險(xiǎn)值,HTTP請(qǐng)求不能將應(yīng)用程序引導(dǎo)到易受攻擊的點(diǎn)。在這種情況下,RVP只需向WAF可以處理核心模塊返回請(qǐng)求。若攻擊條件滿足,則WAF計(jì)算脆弱點(diǎn)的參數(shù)值取決于分析點(diǎn)的漏洞等級(jí)。這些算法之間的相似之處在于處理未知節(jié)點(diǎn)公式的邏輯:與假設(shè)公式不同,參數(shù)公式不會(huì)在計(jì)算中計(jì)算,而是會(huì)立即傳達(dá)WAF。為了更好地理解這一點(diǎn),我們現(xiàn)在將回顧用于檢測(cè)注入攻擊的最復(fù)雜算法。
注射攻擊檢測(cè)
注入攻擊通過將特定形成的輸入數(shù)據(jù)傳輸?shù)綉?yīng)用程序中進(jìn)行惡意操作“注入”在目標(biāo)文本中(包括)HTML,XML,JavaScript,SQL,URLs,以及文件路徑),文本包含了不需要應(yīng)用程序邏輯的句法結(jié)構(gòu)。如果一個(gè)脆弱點(diǎn)屬于這個(gè)攻擊類,它的參數(shù)值可以通過使用污點(diǎn)分析語義中抽象解釋的增量來確定。這種方法背后的想法是從下到上計(jì)算每個(gè)表達(dá)式,并獲得每個(gè)步驟的計(jì)算結(jié)果、每個(gè)函數(shù)的語義和傳統(tǒng)污點(diǎn)檢查的規(guī)則。例如,上述代碼及以下代碼HTTP請(qǐng)求參數(shù):
將該算法應(yīng)用于弱參數(shù)公式的結(jié)果如下:
然后根據(jù)脆弱點(diǎn)參數(shù)的語法標(biāo)記值。如果任何污點(diǎn)的片段與多個(gè)令牌匹配,則表示這是一次注入攻擊。
一旦計(jì)算出與當(dāng)前入口點(diǎn)相關(guān)的所有漏洞的公式,請(qǐng)求處理將與測(cè)試結(jié)果一起傳遞給WAF核心模塊。
RVP優(yōu)點(diǎn)及具體功能
與傳統(tǒng)VP這種基于代碼分析的應(yīng)用程序保護(hù)方法具有很大的優(yōu)勢(shì):
由于上述公式和方法以及中間轉(zhuǎn)換的所有能力,傳統(tǒng)VP解決了缺點(diǎn)。
只要公式不包含未知節(jié)點(diǎn),公式方法也完全排除了假陽性的可能性
對(duì)Web應(yīng)用程序的功能沒有不良影響,因?yàn)楸Wo(hù)是基于應(yīng)用程序的功能,而不是簡(jiǎn)單地試圖解決它們。
我們開發(fā)了一種用于測(cè)試該技術(shù)并確認(rèn)其有效性的方法PT應(yīng)用程序檢查器和PT應(yīng)用防火墻模塊原型的實(shí)驗(yàn)結(jié)果表明,約有15個(gè)開源內(nèi)容管理系統(tǒng)(CMS)性能測(cè)試顯示出良好的結(jié)果:使用RVP處理HTTP請(qǐng)求所需的時(shí)間和使用傳統(tǒng)(啟發(fā)式)WAF處理此類請(qǐng)求所需的時(shí)間相當(dāng)長(zhǎng)。Web應(yīng)用程序的平均性能如下:
非攻擊請(qǐng)求占0%
對(duì)于那些非攻擊請(qǐng)求,脆弱點(diǎn)的比例是6-10%
對(duì)于那些是攻擊請(qǐng)求的,且會(huì)導(dǎo)致脆弱點(diǎn)的占比為4-7%
盡管與傳統(tǒng)VP但是RVP概念上仍有幾個(gè)缺點(diǎn):
不可能在WAF從外部源計(jì)算的數(shù)據(jù)公式(包括文件資源、數(shù)據(jù)庫和服務(wù)器環(huán)境)。
該公式的質(zhì)量直接取決于分析過程中代碼片段的質(zhì)量(包括循環(huán)、遞歸和調(diào)用外部庫方法)。
為了描述預(yù)計(jì)算數(shù)據(jù)庫中函數(shù)的語義,開發(fā)人員需要加入其中。描述過程難以自動(dòng)化,容易出現(xiàn)人為錯(cuò)誤。
然而,我們已經(jīng)試圖通過使用一些RVP從應(yīng)用程序中刪除和使用功能RASP緩解這些缺陷的技術(shù)。
本文由安全客翻譯,請(qǐng)注明轉(zhuǎn)載“轉(zhuǎn)自安全客”,并附上鏈接。
騰佑科技(www.mubashirfilms.com)成立于2009年,總部位于河南鄭州,是一家集互聯(lián)網(wǎng)基礎(chǔ)設(shè)施及軟硬件于一體化的高新技術(shù)企業(yè),具有IDC/ISP/ICP/云牌照、雙軟等資質(zhì),并擁有多個(gè)國(guó)家版權(quán)局認(rèn)證。公司自成立以來,一直致力于發(fā)展互聯(lián)網(wǎng)IDC數(shù)據(jù)中心DataCenter、云計(jì)算Cloud、大數(shù)據(jù)BigDate、人工智能AI、內(nèi)容加速CDN、互聯(lián)網(wǎng)安全、軟件定制開發(fā)等產(chǎn)品服務(wù)及行業(yè)客戶技術(shù)一體化智能解決方案;2018年成為百度智能云AI河南服務(wù)中心。
售前咨詢熱線:400-996-8756
備案提交:0371-89913068
售后客服:0371-89913000
搜索詞
熱門產(chǎn)品推薦