呂慶偉,曾慶凱
(1.南京大學(xué) 計(jì)算機(jī)軟件新技術(shù)國家重點(diǎn)實(shí)驗(yàn)室,江蘇 南京210093;2.南京大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)系,江蘇 南京210093)
輸入驗(yàn)證作為一種常見且有效的安全措施[1],目的在于保證到達(dá)安全敏感點(diǎn)的數(shù)據(jù)的正確性和安全性。很多Web應(yīng)用程序由于缺少對外來輸入數(shù)據(jù)進(jìn)行有效安全檢查而存在安全缺陷[1]。
Web注入型脆弱性便是因?yàn)槿狈ν鈦磔斎胱靼踩?yàn)證而引發(fā)的一類普遍存在且危害巨大的脆弱性。目前關(guān)于注入型脆弱性分析的方案大多基于污點(diǎn)分析[1-4]、字符串分析[5,6]等技術(shù)實(shí)現(xiàn)。污點(diǎn)分析通過標(biāo)記污染數(shù)據(jù)、提取從數(shù)據(jù)輸入點(diǎn)到安全敏感點(diǎn)的污染依賴關(guān)系來檢測脆弱性,但不能分析以控制語句形式出現(xiàn)的驗(yàn)證,可能引入誤報(bào)和降低分析的準(zhǔn)確性。字符串分析經(jīng)常與污點(diǎn)分析等結(jié)合來檢測注入型脆弱性,分析字符串操作的過濾能力能增強(qiáng)分析的準(zhǔn)確性,依然無法處理以控制語句形式出現(xiàn)的驗(yàn)證。基于系統(tǒng)依賴圖的信息流控制分析[7,8]可用于提取這種驗(yàn)證,然而系統(tǒng)依賴圖的構(gòu)造非常復(fù)雜,且需要事先收集程序中所有依賴信息,用于注入型脆弱性檢測時(shí)存在冗余。
針對現(xiàn)有工作的不足,本文使用污染驅(qū)動(dòng)的切片方法,有效提取程序中所有驗(yàn)證操作并生成驗(yàn)證圖,隨后使用分步的、攻擊者視角的字符串分析方法評價(jià)驗(yàn)證圖中操作的驗(yàn)證能力,根據(jù)評價(jià)結(jié)果自動(dòng)生成安全補(bǔ)丁和對應(yīng)的增強(qiáng)型攻擊模式。最后實(shí)現(xiàn)了原型系統(tǒng)Valer,實(shí)驗(yàn)表明本文方法在檢測注入型脆弱性時(shí)能有效減少分析中的誤報(bào)。
1.1.1 從表現(xiàn)形式分類
通常,Web應(yīng)用程序?yàn)榱朔乐棺⑷胂嚓P(guān)的攻擊,采取的措施有:對輸入進(jìn)行變換,使得變換后的數(shù)據(jù)滿足程序要求,或者檢測到異常數(shù)據(jù)時(shí)中止程序的運(yùn)行并返回錯(cuò)誤信息[1,9]。
根據(jù)驗(yàn)證操作的這種表現(xiàn)形式,可將驗(yàn)證操作分為過濾型驗(yàn)證和檢查型驗(yàn)證。過濾型驗(yàn)證通過變換或刪除輸入數(shù)據(jù)中不符合策略部分使返回?cái)?shù)據(jù)滿足策略[1];檢查型驗(yàn)證判斷輸入數(shù)據(jù)是否滿足某種策略,若滿足則繼續(xù)程序的運(yùn)行,若不滿足則中斷程序的運(yùn)行。
1.1.2 從驗(yàn)證能力分類
Web程序中的操作如trim或md5,無論輸入是什么,返回都是良定義的。而操作如preg_match,其驗(yàn)證功能依賴于具體參數(shù)。易見,驗(yàn)證操作在能力方面也有差異。
本文以驗(yàn)證操作的驗(yàn)證能力為依據(jù),將驗(yàn)證操作分為3類:0型驗(yàn)證、1型驗(yàn)證和partial型驗(yàn)證。0型驗(yàn)證指沒有驗(yàn)證能力的操作,如賦值、截?cái)嗟炔僮鳎?型驗(yàn)證具有完全的驗(yàn)證能力,不需要參數(shù)輔助,內(nèi)置過濾操作大多屬于此類;partial型驗(yàn)證是分析的重點(diǎn),此類操作的驗(yàn)證能力通常依賴其參數(shù),且該部分驗(yàn)證操作的驗(yàn)證能力評價(jià)是否準(zhǔn)確會(huì)影響最終分析的效果。對php程序中的驗(yàn)證操作按照驗(yàn)證能力分類的結(jié)果如表1所示。
表1 驗(yàn)證能力分類
1.2.1 污染驅(qū)動(dòng)的切片分析
本文使用污染驅(qū)動(dòng)的切片方法來提取驗(yàn)證。過濾型驗(yàn)證操作在程序中以變量定值的形式表現(xiàn),借助污點(diǎn)分析即可識(shí)別和提取。檢查型驗(yàn)證以控制語句形式出現(xiàn),但不是所有的控制語句都是檢查型驗(yàn)證操作,當(dāng)且僅當(dāng)控制語句既數(shù)據(jù)依賴于數(shù)據(jù)輸入點(diǎn)又控制依賴安全敏感點(diǎn),才是檢查型驗(yàn)證操作。污染驅(qū)動(dòng)的切片方法將污點(diǎn)分析和依賴分析結(jié)合,迭代分析程序中污染數(shù)據(jù)的依賴關(guān)系,可有效提取檢查型驗(yàn)證操作。
該技術(shù)的算法大致如下:①污點(diǎn)分析生成污染路徑,并根據(jù)污染路徑初始化驗(yàn)證圖,驗(yàn)證圖中包括從數(shù)據(jù)輸入點(diǎn)到安全敏感點(diǎn)的所有驗(yàn)證操作;②收集驗(yàn)證圖中候選節(jié)點(diǎn)并計(jì)算其控制依賴節(jié)點(diǎn);③分析第2步所得節(jié)點(diǎn)是否數(shù)據(jù)依賴于數(shù)據(jù)輸入節(jié)點(diǎn),若依賴將其加入驗(yàn)證圖并設(shè)置驗(yàn)證圖更新標(biāo)識(shí);④依據(jù)更新標(biāo)識(shí)判斷驗(yàn)證圖是否穩(wěn)定,若穩(wěn)定則分析結(jié)束,否則跳轉(zhuǎn)到第2步繼續(xù)分析。
1.2.2 分步的、攻擊者視角的字符串分析
字符串分析是一種有效的靜態(tài)分析驗(yàn)證操作能力的技術(shù),文獻(xiàn)[1,6]等借鑒字符串分析技術(shù)評價(jià)驗(yàn)證操作的驗(yàn)證能力來提升注入型脆弱性檢測的準(zhǔn)確度。然而傳統(tǒng)的字符串分析不能直接用于檢查型驗(yàn)證的驗(yàn)證能力評價(jià)。傳統(tǒng)的字符串分析基于流傳遞的連續(xù)性分析,且將字符串操作定義為輸入和輸出均為字符串的一類操作,而檢查型驗(yàn)證操作以字符串為輸入,以布爾型為輸出。從攻擊者視角,驗(yàn)證操作是相對獨(dú)立的,給定攻擊模式,不需要計(jì)算程序點(diǎn)的所有可能值集合,只需要判定其是否能有效阻塞潛在的惡意字符到達(dá)安全敏感點(diǎn)即可。
本文使用分步的、攻擊者視角的字符串分析評價(jià)驗(yàn)證操作的驗(yàn)證能力。既能分析兩種驗(yàn)證操作,又具有較小冗余,且便于生成對應(yīng)的安全補(bǔ)丁和增強(qiáng)型攻擊模式。
分步將評價(jià)分析分為兩個(gè)階段。首先依據(jù)驗(yàn)證操作的驗(yàn)證能力分類進(jìn)行粗分析,若操作為partial型,進(jìn)一步借助攻擊者視角的字符串分析來分析驗(yàn)證操作的驗(yàn)證能力。驗(yàn)證操作分類有助于降低攻擊者視角字符串分析的負(fù)擔(dān)。所謂攻擊者視角,是指在字符串分析用于web注入型脆弱性檢測時(shí),將輸入數(shù)據(jù)定義為滿足給定攻擊模式的惡意字符串,而不是任意格式的字符串。相比其他方法需要分析執(zhí)行完畢,攻擊者視角的分析一旦發(fā)現(xiàn)條件不滿足,分析即可終止。
1.2.3 安全補(bǔ)丁和增強(qiáng)型攻擊模式
分步的、攻擊者視角的字符串分析分析后會(huì)生成安全補(bǔ)丁建議和增強(qiáng)型攻擊模式。安全補(bǔ)丁在形式上與檢查型驗(yàn)證操作相似。一旦外來輸入與補(bǔ)丁中參數(shù)匹配,則中斷程序的運(yùn)行以防惡意輸入到達(dá)安全敏感點(diǎn)[5]。相比普通的攻擊模式,增強(qiáng)型攻擊模式還包括長度、必需字符或子串等信息。增強(qiáng)型攻擊模式有助于構(gòu)造具體的攻擊實(shí)例。
以圖1中的樣例程序?yàn)槔UZ句1接收外來輸入,為數(shù)據(jù)輸入點(diǎn),語句2判斷客戶端輸入數(shù)據(jù)是否是電子郵件格式,若不是則中止程序的繼續(xù)執(zhí)行,語句4判斷輸入數(shù)據(jù)長度,若長度大于20,由語句5對輸入數(shù)據(jù)做截?cái)?,語句6接收輸入并進(jìn)行sql查詢,為安全敏感點(diǎn)。易見,外來輸入到達(dá)安全敏感點(diǎn)即語句6之前要經(jīng)過語句2、4、5的驗(yàn)證,其中語句2、4為檢查型驗(yàn)證,語句5為過濾型驗(yàn)證。
圖1 樣例程序
借助污點(diǎn)分析、基于系統(tǒng)依賴圖的信息流控制分析及污染驅(qū)動(dòng)的切片分析對圖1中程序分析得到的結(jié)果分別如圖2(a)、(b)、(c)所示。比較易發(fā)現(xiàn),污染驅(qū)動(dòng)的切片分析計(jì)算得到的驗(yàn)證圖包含了所有的驗(yàn)證操作,且沒有冗余。
圖2 污點(diǎn)分析、系統(tǒng)依賴圖與驗(yàn)證
對所得驗(yàn)證圖作字符串分析,提交攻擊模式/.*;.*/,檢測發(fā)現(xiàn)程序存在注入型脆弱性,為其生成安全補(bǔ)丁建議[if(eregi(“/^.*;.*$/”,$email))exit;]和增強(qiáng)型攻擊模式[/.*;.*/,/.*@.*/,20],其中該模式表示攻擊實(shí)例中須包含字符@且限制在20個(gè)字符以內(nèi)。
基于第1節(jié)的設(shè)計(jì)分析,實(shí)現(xiàn)了如圖3所示原型系統(tǒng)Valer。Valer主要由驗(yàn)證提取子模塊和驗(yàn)證評價(jià)子模塊兩部分組成,另外為了增強(qiáng)系統(tǒng)地實(shí)用性,攻擊模式以配置文件的形式提供。
圖3 Valer基本框架
驗(yàn)證提取模塊由解析子模塊和污染驅(qū)動(dòng)切片子模塊組成。解析子模塊負(fù)責(zé)將php程序解析為控制流圖,污染驅(qū)動(dòng)的切片子模塊進(jìn)一步從控制流圖提取驗(yàn)證操作并生成驗(yàn)證圖。驗(yàn)證評價(jià)模塊由粗粒度分析子模塊和細(xì)粒度分析子模塊兩部分組成,以提取模塊生成的驗(yàn)證圖和攻擊模式為輸入,作分步的、攻擊者視角的字符串分析,生成分析報(bào)告并根據(jù)需要進(jìn)一步生成增強(qiáng)型攻擊模式和安全補(bǔ)丁。
Pixy[2]是一個(gè)開源的靜態(tài)檢測php程序中脆弱性的解決方案。驗(yàn)證提取模塊的實(shí)現(xiàn)時(shí)在Pixy解析模塊基礎(chǔ)上加入依賴分析和污點(diǎn)分析,實(shí)現(xiàn)了污染驅(qū)動(dòng)的程序切片模塊。
循環(huán)結(jié)構(gòu)的處理一直是程序分析和字符串分析要重點(diǎn)考慮的部分,本文在分析開源程序中循環(huán)結(jié)構(gòu)后發(fā)現(xiàn)驗(yàn)證操作幾乎不會(huì)出現(xiàn)在循環(huán)結(jié)構(gòu)或是循環(huán)條件中?;诖?,實(shí)現(xiàn)中對程序中的循環(huán)結(jié)構(gòu)采取了兩種處理,當(dāng)循環(huán)中不存在安全敏感點(diǎn)時(shí),用一個(gè)特殊的循環(huán)節(jié)點(diǎn)代替整個(gè)循環(huán)結(jié)構(gòu),如果存在時(shí),將循環(huán)作簡單的一次展開。
Pixy-parser部分負(fù)責(zé)將php程序解析為控制流圖,該過程是過程間、上下文敏感的。污染驅(qū)動(dòng)的切片模塊具體實(shí)現(xiàn)了污染驅(qū)動(dòng)的切片方法,能夠有效地提取程序中的過濾型驗(yàn)證操作和檢查型驗(yàn)證操作,并生成驗(yàn)證圖。
驗(yàn)證分析模塊以驗(yàn)證提取模塊計(jì)算得到的驗(yàn)證圖為輸入,同時(shí)調(diào)用攻擊模式庫執(zhí)行具體分析。粗粒度分析先對驗(yàn)證操作進(jìn)行粗粒度分類,根據(jù)分類的結(jié)果決定是否進(jìn)一步調(diào)用細(xì)粒度分析模塊作分析,最后生成分析報(bào)告。報(bào)告中除對驗(yàn)證圖的普通安全分析外,還包括增強(qiáng)型的攻擊模式和對應(yīng)的安全補(bǔ)丁建議。
2.3.1 粗粒度分析
粗粒度分析模塊以表1所示的驗(yàn)證能力分類表為依據(jù),對驗(yàn)證圖中的驗(yàn)證操作分類,根據(jù)分類結(jié)果來決定下一步動(dòng)作。如果驗(yàn)證操作全為0型驗(yàn)證可斷言與驗(yàn)證圖對應(yīng)的web程序部分存在注入型脆弱性,并為該脆弱性生成安全補(bǔ)丁建議。如果驗(yàn)證操作中存在1型驗(yàn)證,可斷言對應(yīng)的web程序部分是安全的。當(dāng)不存在1型驗(yàn)證又存在partial型驗(yàn)證時(shí),調(diào)用細(xì)粒度分析模塊來分析partial型驗(yàn)證是否具有完整的驗(yàn)證能力。
2.3.2 細(xì)粒度分析
細(xì)粒度分析模塊執(zhí)行攻擊者視角的字符串分析。該模塊 Anders M ller所實(shí)現(xiàn)自動(dòng)機(jī)運(yùn)算包dk.brics.automaton為基礎(chǔ)進(jìn)行實(shí)現(xiàn)。相比其他字符串分析模擬所有的字符串操作,細(xì)粒度分析模塊只模擬分析字符串替換、正則表達(dá)式匹配等partial型操作。另外,細(xì)粒度分析是攻擊者視角的,無需計(jì)算字符串操作后的所有可能值,而是將計(jì)算簡化為攻擊模式經(jīng)過字符串操作計(jì)算后是否為空,有效降低了計(jì)算復(fù)雜度。
原型系統(tǒng)Valer中數(shù)據(jù)輸入點(diǎn)和安全敏感點(diǎn)都是可配置的,本文的實(shí)驗(yàn)部分只檢測了待測試程序中的sql注入脆弱性,故將數(shù)據(jù)輸入點(diǎn)設(shè)置為{_GET,_POST,_COOKIE,_REQUEST},安全敏感點(diǎn)設(shè)置為{mysql_query}。另外,攻擊模式也由分析人員提供,本次實(shí)驗(yàn)使用的攻擊模式為/’or1=1/及其編碼格式/0x27or1=1/,表示繞過數(shù)據(jù)庫驗(yàn)證的一類sql注入攻擊。
實(shí)驗(yàn)選取了Eve activity tracker、Minibloggie、Utopia News Pro等3個(gè)開源web程序作為測試程序。其中Eve activity tracker是一個(gè)用戶行為追蹤程序,Minibloggie是一個(gè)小型博客系統(tǒng),Utopia News Pro是一個(gè)新聞管理系統(tǒng)。
表2 實(shí)驗(yàn)基本結(jié)果
表2記錄了實(shí)驗(yàn)基本結(jié)果,其中第一列為web應(yīng)用的名稱,第二列為每個(gè)應(yīng)用中代碼量,一定程度反映了程序的大小和復(fù)雜度,第三列表示程序中可能被sql注入攻擊的敏感點(diǎn)數(shù)量,第四列為提取分析模塊計(jì)算得到的各個(gè)web應(yīng)用中驗(yàn)證圖的數(shù)量,其中驗(yàn)證圖包含程序中從外界輸入點(diǎn)到安全敏感點(diǎn)的相關(guān)操作,最后一列是檢測到的脆弱性的數(shù)量。
表2可知,污染相關(guān)的檢查型驗(yàn)證確實(shí)存在于web程序中且具有一定比例,且不管程序中的敏感點(diǎn)還是最終的脆弱性數(shù)量都會(huì)隨著程序規(guī)模的增大而變多。另外Valer也為所檢測脆弱性生成了安全補(bǔ)丁建議和增強(qiáng)型攻擊模式。
表3中記錄了被分析程序中驗(yàn)證圖的詳細(xì)信息,其中第三列數(shù)據(jù)為數(shù)據(jù)對,表示包含內(nèi)置編碼過濾操作和自定義過濾操作的數(shù)量的驗(yàn)證圖數(shù)量,第五列為包含檢查操作的驗(yàn)證圖數(shù)量,第四、六列分別為驗(yàn)證圖中過濾操作和檢查操作具有完全過濾功能的驗(yàn)證圖數(shù)量。需要強(qiáng)調(diào)的是使用內(nèi)置的編碼操作是所提倡的編程習(xí)慣,然而大多內(nèi)置編碼操作依然只能過濾普通的惡意攻擊串,對攻擊串簡單變形便可逃避該類過濾的驗(yàn)證,如本次實(shí)驗(yàn)提供的編碼型攻擊模式。而用戶自定義的檢查操作正確的話能夠最大程度的反應(yīng)程序可接受輸入的集合。根據(jù)實(shí)驗(yàn)結(jié)果對比也容易發(fā)現(xiàn)檢查型驗(yàn)證操作對程序的安全具有極其重要的作用,忽略對檢查型驗(yàn)證的分析必然會(huì)產(chǎn)生誤報(bào)等問題。
表3 實(shí)驗(yàn)驗(yàn)證圖
以Utopia News Pro中comments.php頁面里的一個(gè)程序片斷$newsid=addslashes($ _POST[‘newsid’]);if(!preg_match(‘/^[\d]+$/’,$newsid)){unp_msgBox($gp_invalidrequest);exit;}$checknews=$DB->query("SELECT * FROM`unp_news`WHERE newsid=‘$newsid’");為例?;趥鹘y(tǒng)污點(diǎn)分析的檢測手段會(huì)檢測其為一個(gè)sql注入型脆弱性,而$newsid可接收的輸入集合為數(shù)字型變量,易發(fā)現(xiàn)是一個(gè)誤報(bào)。本文方案考慮了程序中檢查型驗(yàn)證,有效避免了該誤報(bào)的產(chǎn)生。
結(jié)合表2和表3,可知Eve activity tracker幾乎沒有任何驗(yàn)證措施,提取到的每個(gè)驗(yàn)證圖被驗(yàn)證評價(jià)模塊分析后都是有脆弱性的,而Minibloggie盡管采取了較多的驗(yàn)證操作,甚至過濾操作都為內(nèi)置編碼操作,12個(gè)驗(yàn)證圖中只有兩個(gè)驗(yàn)證圖是安全的,Utopia News Pro程序盡管檢測到56個(gè)脆弱性,因?yàn)榇罅渴褂昧擞脩糇远x的檢查型驗(yàn)證操作,包含檢查型驗(yàn)證操作的驗(yàn)證圖總共有85個(gè),具有完全驗(yàn)證功能的達(dá)到57個(gè)之多,大大降低了程序中脆弱性的比例。
文獻(xiàn)[2]設(shè)計(jì)了一個(gè)靜態(tài)分析工具Pixy來檢測web應(yīng)用中的脆弱性,實(shí)現(xiàn)了程序解析、常值分析、別名分析、污點(diǎn)分析等分析。因?yàn)轵?yàn)證提取不完全和沒有進(jìn)一步分析驗(yàn)證操作的驗(yàn)證能力,其誤報(bào)率有50%多。文獻(xiàn)[1,5-7]等或以Pixy的結(jié)果作分析或進(jìn)一步開發(fā),本文所實(shí)現(xiàn)系統(tǒng)Valer也以Pixy為基礎(chǔ)實(shí)現(xiàn)了污染驅(qū)動(dòng)的程序切片模塊。文獻(xiàn)[1]將靜態(tài)分析和動(dòng)態(tài)分析結(jié)合,來驗(yàn)證過濾操作的是否正確或完全,具有較好的效果。遺憾的是依然沒有考慮驗(yàn)證操作的全面性。文獻(xiàn)[10]是一個(gè)動(dòng)態(tài)解決方案,將污點(diǎn)分析和fuzz技術(shù)結(jié)合來檢測客戶端脆弱性,考慮了檢查型驗(yàn)證的分析。文獻(xiàn)[3,4]將污點(diǎn)分析和字符串分析結(jié)合,分別用于檢測sql注入和xss脆弱性檢測。相比,Valer能同時(shí)檢測兩種類型的脆弱性,并可生成增強(qiáng)型攻擊模式和安全補(bǔ)丁。與文獻(xiàn)[9,11]檢測web注入性脆弱性并可生成具體的攻擊實(shí)例不同,本文生成增強(qiáng)型攻擊模式,增強(qiáng)型攻擊模式有助于生成更多的攻擊實(shí)例。文獻(xiàn)[5,6]以Pixy為基礎(chǔ),實(shí)現(xiàn)了基于字符串的分析工具Stranger。使用Stranger來分析web脆弱性,生成脆弱性特征和安全補(bǔ)丁。Stranger直接依賴Pixy的結(jié)果做分析,本文考慮了驗(yàn)證操作提取的全面性,對Pixy作了相應(yīng)改進(jìn),并從攻擊者視角簡化字符串分析,生成增強(qiáng)型攻擊模式和安全補(bǔ)丁。
程序中驗(yàn)證操作提取的完整性以及對驗(yàn)證操作的驗(yàn)證能力評價(jià)的準(zhǔn)確性是評價(jià)注入型脆弱性檢測效果的兩個(gè)重要要素。本文使用污染驅(qū)動(dòng)的切片方法,比較完整地提取了程序中的所有驗(yàn)證操作,并借助分步的、攻擊者視角的字符串分析對驗(yàn)證操作的驗(yàn)證能力進(jìn)行評價(jià)分析,以更準(zhǔn)確的檢測web注入型脆弱性。相比已有工作,有效降低了分析過程中的誤報(bào),且能夠?yàn)闄z測到的脆弱性生成安全補(bǔ)丁和增強(qiáng)型攻擊模式,具有一定地實(shí)用性。
[1]Balzarotti D,Cova M,Vigna G,et al.Saner:Composing static and dynamic analysis to validate sanitization in web applications[C]//Proc of IEEE Symposium on Security and Privacy,2008.
[2]Jovanovic N,Kruegel C,Kirda E.Pixy:A static analysis tool for detecting web application vulnerabilities[C]//Proc of IEEE Symposium on Security and Privacy,2006.
[3]Wassermann G,Su Z.Sound and precise analysis of web applications for injection vulnerabilities[C]//Proc of the ACM SIGPLAN Conference on Programming Language Design and Implementation,2007.
[4]Wassermann G,Su Z.Static detection of cross-site scripting vulnerabilities[C]//Proc of the 30th International Conference on Software Engineering,2008.
[5]Alkhalaf M,F(xiàn)ang Yu,Bultan T.Patching vulnerabilities with sanitization synthesis[C]//Proc of International Conference on Software Engineering,2011.
[6]Yu F,Alkhalaf M,Bultan T.Stranger:An automata-based string analysis tool for php[C]//Proc of International Conference on Tools and Algorithms for the Construction and Analysis of Systems,2010.
[7]Hammer C,Krinke J,Snelting G.Information flow control for java based on path conditions in dependence graphs[C]//Proc of IEEE International Symposium on Secure Software Engineering,2006.
[8]Hammer C,Schaade R,Snelting G.Static path conditions for Java[C]//Proc of the Third ACM SIGPLAN Workshop on Programming Languages and Analysis for Security,2008.
[9]Kieyzun A,Guo P J,Jayaraman K,et al.Automatic creation of SQL injection and cross-site scripting attacks[C]//Proc of 30th International Conference on Software Engineering,2008.
[10]Saxena P,Hanna S,Song D,et al.Flax:Systematic discovery of client-side validation vulnerabilities in rich web applications[C]//Proc of the Network and Distributed System Security Symposium,2010.
[11]Martin M,Lam M.Automatic generation of XSS and SQL injection attacks with goal-directed model checking[C]//Proc of USENIX Security Symposium,2008.