400-638-8808
|
微信公眾號(hào)








穩(wěn)定可靠 永不間斷

海外收發(fā) 暢通無(wú)阻

協(xié)同辦公 資源管理

超大郵件 超級(jí)功能

智能反垃圾郵件技術(shù)
易管理 免維護(hù)

微信掃一掃 關(guān)注"天下數(shù)據(jù)"商品一律九折
![]()
搜索"朗玥科技"關(guān)注,了解最新優(yōu)惠


前言
虛擬補(bǔ)丁(VP)近年來(lái)一直是保護(hù)應(yīng)用程序最受歡迎的方法之一,如果在Web應(yīng)用程序防火墻層級(jí)添加VP功能,該功能可用于保護(hù)Web應(yīng)用程序免遭已知漏洞的威脅攻擊。簡(jiǎn)而言之,VP利用靜態(tài)應(yīng)用程序安全測(cè)試(SAST)的結(jié)果并使用它們來(lái)創(chuàng)建規(guī)則以用來(lái)過(guò)濾WAF上的HTTP請(qǐng)求。 但問(wèn)題在于,SAST和WAF依賴于不同的應(yīng)用程序模型和不同的決策方法。因此,目前可用的解決方案中沒(méi)有一個(gè)能夠?qū)AST與WAF完美的結(jié)合起來(lái)。SAST基于白盒模型,它采用公式方法來(lái)檢測(cè)代碼中的漏洞。然而,WAF將應(yīng)用程序視為黑盒子,因此它使用啟發(fā)式方式進(jìn)行攻擊檢測(cè)。但是如果我們能讓SAST和WAF完美的結(jié)合在一起使用,我們可以通過(guò)SAST獲取有關(guān)應(yīng)用程序內(nèi)部結(jié)構(gòu)的信息,并將這些信息提供給WAF,這樣我們就可以以一種“優(yōu)雅”的方式來(lái)檢測(cè)網(wǎng)絡(luò)攻擊。
傳統(tǒng)VP
一般地,在Web應(yīng)用程序傳統(tǒng)自動(dòng)化虛擬修補(bǔ)方法中,我們需要向WAF提供SAST檢測(cè)到的每個(gè)漏洞信息,這些信息包括:
漏洞分類
Web應(yīng)用程序的脆弱點(diǎn)
攻擊所需的HTTP請(qǐng)求參數(shù)值
構(gòu)成攻擊向量脆弱點(diǎn)參數(shù)的值
脆弱點(diǎn)參數(shù)中可用于漏洞利用的一組字符或一個(gè)單詞。
一般地,我們可以通過(guò)定義某些函數(shù)來(lái)獲取HTTP請(qǐng)求中的參數(shù)值,例如下面是一段易受XSS攻擊的ASP.NET頁(yè)面的代碼片段:

通過(guò)分析針對(duì)上面頁(yè)面的攻擊向量代碼,我們可以生成一組攻擊向量值的符號(hào)公式:
{condition =“secret”⇒param∈{XSShtml-text}} ,其中XSShtml-text是TEXT上下文中用于XSS攻擊的向量集合。在實(shí)際的應(yīng)用場(chǎng)景中,WAF虛擬補(bǔ)丁的描述符可用于生成過(guò)濾規(guī)則,以阻止所有能夠利用相關(guān)漏洞的HTTP請(qǐng)求。
雖然這種做法肯定會(huì)導(dǎo)致某些攻擊,但它有一些很大的缺點(diǎn):
為了表示任何給定的漏洞,SAST需要發(fā)現(xiàn)一個(gè)可能的攻擊向量。 但為了確保能夠真正消除一個(gè)漏洞,SAST有必要處理所有可能的攻擊向量。但是SAST很難將這些信息傳遞給WAF,因?yàn)橛捎诠粝蛄空Z(yǔ)法的不規(guī)則性,矢量集不僅是無(wú)窮大的,甚至不能用正則表達(dá)式來(lái)表達(dá)。
對(duì)于漏洞利用所需的其他請(qǐng)求參數(shù)的值也是如此。
如果入侵點(diǎn)和脆弱執(zhí)行點(diǎn)之間的攻擊向量語(yǔ)法在其上下文中發(fā)生了變化,那么有關(guān)脆弱參數(shù)的信息將變得沒(méi)有任何的價(jià)值。
由于這些設(shè)計(jì)上的缺陷,對(duì)于SAST檢測(cè)到的漏洞,VP技術(shù)不能針對(duì)其提供可能的攻擊保護(hù)。嘗試創(chuàng)建這種“全面的”流量過(guò)濾規(guī)則通常會(huì)阻止合法HTTP請(qǐng)求并中斷Web應(yīng)用程序的操作,下面讓我們稍微修改漏洞的代碼:

與上一個(gè)例子的區(qū)別是:在對(duì)兩個(gè)請(qǐng)求參數(shù)都做了Decode處理,針對(duì)該新代碼的攻擊向量公式如下所示:

靜態(tài)分析會(huì)在相關(guān)計(jì)算流程圖(ConfiG)節(jié)點(diǎn)中為自定義解碼函數(shù)導(dǎo)出一個(gè)公式,以描述Base64-URL-Base64轉(zhuǎn)換鏈,如下所示:

針對(duì)這樣的公式,我們?nèi)匀挥锌赡茉谄浠A(chǔ)上構(gòu)建一個(gè)漏洞,但是由于以下原因,生成虛擬補(bǔ)丁的方法不能應(yīng)用于此:
只有當(dāng)請(qǐng)求中的“condition”參數(shù)包含“secret”子字符串時(shí),才可能利用此漏洞。 然而,該參數(shù)的值集是非常大的,并且由于解碼功能的不規(guī)則性,通過(guò)正則表達(dá)式表達(dá)該集合是不可行的。
事實(shí)上,攻擊向量的請(qǐng)求參數(shù)也被解碼。因此,SAST無(wú)法將該組危險(xiǎn)元素描述為WAF。
由于傳統(tǒng)VP的所有問(wèn)題都源于無(wú)法與基于白盒方法的WAF級(jí)別的應(yīng)用程序進(jìn)行交互,因此明顯的解決方案是實(shí)現(xiàn)此功能并進(jìn)一步改進(jìn),以便:
SAST向WAF提供有關(guān)易受攻擊的參數(shù)以及從進(jìn)入點(diǎn)到易受攻擊的執(zhí)行點(diǎn)這整個(gè)過(guò)程中對(duì)攻擊變量所做的所有轉(zhuǎn)換信息。
對(duì)于攻擊檢測(cè),啟發(fā)式方法被公式方法所替換,并且包含任何漏洞的利用條件信息。
因此,運(yùn)行時(shí)虛擬補(bǔ)丁應(yīng)運(yùn)而生。
運(yùn)行時(shí)虛擬補(bǔ)丁
運(yùn)行時(shí)虛擬修補(bǔ)(RVP)的原理是基于PT應(yīng)用檢查器(PT AI)中的計(jì)算流程圖模型實(shí)現(xiàn)的。與公式符號(hào)計(jì)算的語(yǔ)義表示類似,該模型是使用應(yīng)用程序代碼的抽象解釋構(gòu)建出來(lái)的,模型中的圖節(jié)點(diǎn)包含了目標(biāo)語(yǔ)言的生成公式,并且公式產(chǎn)生與相關(guān)執(zhí)行點(diǎn)上的所有數(shù)據(jù)流相關(guān)聯(lián)的所有合法值的集合,具體如下圖所示:

上圖中的這些流被稱為執(zhí)行點(diǎn)參數(shù)。 由于CompFG是可評(píng)估的,因此我們可��根據(jù)輸入?yún)?shù)的值,在任何執(zhí)行點(diǎn)上計(jì)算所有參數(shù)的值。 通常情況下,RVP分為部署(D)和運(yùn)行(R)兩個(gè)階段,這倆個(gè)階段分別對(duì)應(yīng)于應(yīng)用程序生命周期,具體如下圖所示:

部署階段
在部署新版本的應(yīng)用程序之前,應(yīng)用程序由PT AI分析,并且為那些易受攻擊的執(zhí)行點(diǎn)中的每個(gè)CompFG節(jié)點(diǎn)計(jì)算三個(gè)公式:
獲取脆弱執(zhí)行點(diǎn)的條件
獲取其所有參數(shù)值的條件
所有參數(shù)及其相應(yīng)語(yǔ)法的值集
上述中的所有公式集都將按照應(yīng)用程序的入口點(diǎn)進(jìn)行分組,入口點(diǎn)定義于分析器的數(shù)據(jù)庫(kù)中,并和PT AI支持的每個(gè)Web框架相關(guān)聯(lián)。通過(guò)提取包含的漏洞信息以及從代碼(基于S-expression語(yǔ)法的特殊語(yǔ)言編寫(xiě)的代碼,編程語(yǔ)言使用不依賴于目標(biāo)語(yǔ)言的形式來(lái)描述CompFG公式)中提取相關(guān)的公式列表形成一份報(bào)告,例如上述代碼示例中描述脆弱點(diǎn)參數(shù)值的公式如下:

獲取脆弱點(diǎn)的公式是:

然后將報(bào)告被上傳到PT應(yīng)用防火墻 (PT AF),在報(bào)告的基礎(chǔ)上,PT WAF生成二進(jìn)制模塊,該模塊可以計(jì)算報(bào)表中包含的所有公式。 例如,用于計(jì)算達(dá)到上述脆弱點(diǎn)的條件的反編譯代碼如下:

為了對(duì)公式進(jìn)行計(jì)算操作,PT AF必須具有以下條件之一:
預(yù)先計(jì)算可能在報(bào)告中出現(xiàn)的所有函數(shù)
具有沙箱運(yùn)行環(huán)境,用于運(yùn)行Web應(yīng)用程序或其他平臺(tái)(如CLR,JVM或PHP,Python或Ruby解釋器)以及應(yīng)用程序中使用的庫(kù)
第一種方法在一定程度上能夠保證速度很快,但WAF開(kāi)發(fā)人員需要大量的手動(dòng)工作來(lái)描述預(yù)計(jì)算數(shù)據(jù)庫(kù),即使開(kāi)發(fā)人員將范圍限制為標(biāo)準(zhǔn)庫(kù)函數(shù)。第二種方法允許計(jì)算報(bào)告中可能出現(xiàn)的所有函數(shù),但這種方法會(huì)增加處理每個(gè)HTTP請(qǐng)求所需的時(shí)間,因?yàn)閃AF需要訪問(wèn)運(yùn)行時(shí)環(huán)境來(lái)對(duì)每個(gè)函數(shù)執(zhí)行計(jì)算操作。這里最合適的解決方案是使用第一種方法進(jìn)行最常見(jiàn)函數(shù)的計(jì)算,而對(duì)其余函數(shù)使用第二種方法。
公式中很可能會(huì)包含分析器無(wú)法處理的函數(shù)或者PT AF無(wú)法計(jì)算的函數(shù),這些函數(shù)在公式中會(huì)被標(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會(huì)選擇所有檢測(cè)到的漏洞公式,然后以特定方式執(zhí)行計(jì)算操作。
首先,計(jì)算公式的兩個(gè)條件為:1)到達(dá)脆弱點(diǎn),2)獲取其所有參數(shù)的值。 在每個(gè)公式中,變量用相關(guān)請(qǐng)求參數(shù)的值代替,之后計(jì)算公式值。 如果公式包含標(biāo)記為“unknown”的表達(dá)式,則其處理如下:
每個(gè)“unknown”標(biāo)志通過(guò)公式表達(dá)式樹(shù)自下而上擴(kuò)展,直到找到布爾表達(dá)式。
在公式中,這樣的表達(dá)式會(huì)被布爾變量替換,以用來(lái)解決布爾可滿足性問(wèn)題。
假設(shè)通過(guò)上一步驟生成了關(guān)于“unknown”的n個(gè)公式,那么計(jì)算每個(gè)公式的值。 如果至少有一個(gè)公式是可滿足的,那么該假設(shè)也被認(rèn)為是可以滿足的。
如果計(jì)算顯示假設(shè)為假,那么即使所有請(qǐng)求參數(shù)都有危險(xiǎn)的值,HTTP請(qǐng)求也無(wú)法將應(yīng)用程序引導(dǎo)到易受攻擊的點(diǎn)。在這種情況下,RVP只需向WAF的核心模塊返回請(qǐng)求處理即可。如果攻擊條件滿足,那么WAF會(huì)計(jì)算脆弱點(diǎn)的參數(shù)值,使用的算法取決于分析點(diǎn)所屬的漏洞等級(jí)。這些算法之間的相似之處是用于處理包含未知節(jié)點(diǎn)公式的邏輯:與假設(shè)公式不同,在計(jì)算時(shí)參數(shù)公式不會(huì)被計(jì)算,而是立即被傳達(dá)給WAF。為了更好地理解這一點(diǎn),我們現(xiàn)在將回顧一下用于檢測(cè)注入攻擊的最復(fù)雜的算法。
檢測(cè)注入攻擊
注入攻擊通過(guò)將特定形成的輸入數(shù)據(jù)傳遞給應(yīng)用程序來(lái)執(zhí)行惡意操作,當(dāng)這些數(shù)據(jù)被“注入”到目標(biāo)文本中(包括HTML, XML, JavaScript, SQL, URLs, 以及文件路徑)時(shí),文本中包含了應(yīng)用程序邏輯不想要的句法結(jié)構(gòu)。如果一個(gè)脆弱點(diǎn)屬于這個(gè)攻擊類,那么它的參數(shù)值是可以通過(guò)使用污點(diǎn)分析語(yǔ)義中抽象解釋的增量計(jì)算來(lái)確定的。這種方法背后的思想是:從下到上分別計(jì)算每個(gè)表達(dá)式,同時(shí)獲得每個(gè)步驟的計(jì)算結(jié)果、每個(gè)函數(shù)的語(yǔ)義以及傳統(tǒng)污點(diǎn)檢查的規(guī)則。例如,對(duì)于上述代碼和以下HTTP請(qǐng)求參數(shù):

將此算法應(yīng)用于弱點(diǎn)參數(shù)的公式的結(jié)果如下(污染參數(shù)標(biāo)記為紅色):

然后根據(jù)脆弱點(diǎn)參數(shù)的語(yǔ)法對(duì)該值進(jìn)行標(biāo)記,如果任何污點(diǎn)的片段匹配多個(gè)令牌,那么就代表這是一次注入的攻擊。

一旦與當(dāng)前入口點(diǎn)相關(guān)的所有漏洞的公式計(jì)算結(jié)束,請(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)得到了解決。
公式方法也完全排除了假陽(yáng)性的可能性,只要公式不包含未知節(jié)點(diǎn)
對(duì)Web應(yīng)用程序功能沒(méi)有不利影響,因?yàn)楸Wo(hù)是建立在應(yīng)用程序的功能上,而不是簡(jiǎn)單地試圖解決它們。
為了測(cè)試該技術(shù)并確認(rèn)其有效性,我們開(kāi)發(fā)了一種用于PT應(yīng)用程序檢查器和PT應(yīng)用程序防火墻的模塊原型,實(shí)驗(yàn)結(jié)果表明大約十五個(gè)開(kāi)源內(nèi)容管理系統(tǒng)(CMS)的性能測(cè)試顯示出很好的結(jié)果:使用RVP處理HTTP請(qǐng)求所需的時(shí)間與使用傳統(tǒng)(啟發(fā)式)WAF方法處理此類請(qǐng)求所需的時(shí)間相當(dāng)。 Web應(yīng)用程序的平均性能如下:
對(duì)于那些非攻擊的請(qǐng)求占比為0%
對(duì)于那些非攻擊請(qǐng)求,但會(huì)導(dǎo)致脆弱點(diǎn)的占比為6-10%
對(duì)于那些是攻擊請(qǐng)求的,且會(huì)導(dǎo)致脆弱點(diǎn)的占比為4-7%
盡管與傳統(tǒng)VP相比有明顯優(yōu)勢(shì),但RVP仍有幾個(gè)概念上的缺點(diǎn):
不可能在WAF(包括文件資源,數(shù)據(jù)庫(kù)和服務(wù)器環(huán)境)上計(jì)算包含來(lái)自外部源的數(shù)據(jù)公式。
公式的質(zhì)量直接取決于分析期間代碼片段的質(zhì)量(包括循環(huán),遞歸和對(duì)外部庫(kù)方法的調(diào)用)。
為了描述預(yù)計(jì)算數(shù)據(jù)庫(kù)中函數(shù)的語(yǔ)義,需要開(kāi)發(fā)人員加入到其中,該描述過(guò)程很難自動(dòng)化,且容易出現(xiàn)人為錯(cuò)誤。
然而,我們已經(jīng)設(shè)法通過(guò)將一些RVP功能從應(yīng)用程序中刪除并使用RASP技術(shù)來(lái)緩解上述這些缺陷。
本文由 安全客 翻譯,轉(zhuǎn)載請(qǐng)注明“轉(zhuǎn)自安全客”,并附上鏈接。
產(chǎn)品與服務(wù)
香港服務(wù)器 香港高防服務(wù)器 美國(guó)服務(wù)器 韓國(guó)服務(wù)器 新加坡服務(wù)器 日本服務(wù)器 臺(tái)灣服務(wù)器云服務(wù)器
香港云主機(jī) 美國(guó)云主機(jī) 韓國(guó)云主機(jī) 新加坡云主機(jī) 臺(tái)灣云主機(jī) 日本云主機(jī) 德國(guó)云主機(jī) 全球云主機(jī)高防專線
海外高防IP 海外無(wú)限防御 SSL證書(shū) 高防CDN套餐 全球節(jié)點(diǎn)定制 全球?qū)>GPLC關(guān)于我們
關(guān)于天下數(shù)據(jù) 數(shù)據(jù)招商加盟 天下數(shù)據(jù)合作伙伴 天下數(shù)據(jù)團(tuán)隊(duì)建設(shè) 加入天下數(shù)據(jù) 媒體報(bào)道 榮譽(yù)資質(zhì) 付款方式關(guān)注我們
微信公眾賬號(hào)
新浪微博
天下數(shù)據(jù)手機(jī)站 關(guān)于天下數(shù)據(jù) 聯(lián)系我們 誠(chéng)聘英才 付款方式 幫助中心 網(wǎng)站備案 解決方案 域名注冊(cè) 網(wǎng)站地圖
天下數(shù)據(jù)18年專注海外香港服務(wù)器、美國(guó)服務(wù)器、海外云主機(jī)、海外vps主機(jī)租用托管以及服務(wù)器解決方案-做天下最好的IDC服務(wù)商
《中華人民共和國(guó)增值電信業(yè)務(wù)經(jīng)營(yíng)許可證》 ISP證:粵ICP備07026347號(hào)
朗信天下發(fā)展有限公司(控股)深圳市朗玥科技有限公司(運(yùn)營(yíng))聯(lián)合版權(quán)
深圳總部:中國(guó).深圳市南山區(qū)深圳國(guó)際創(chuàng)新谷6棟B座10層 香港總部:香港上環(huán)蘇杭街49-51號(hào)建安商業(yè)大廈7樓
7×24小時(shí)服務(wù)熱線:4006388808香港服務(wù)電話:+852 67031102
本網(wǎng)站的域名注冊(cè)業(yè)務(wù)代理北京新網(wǎng)數(shù)碼信息技術(shù)有限公司的產(chǎn)品