[發(fā)明專利]一種隱式污點傳播系統(tǒng)及其方案無效
| 申請?zhí)枺?/td> | 201110237712.1 | 申請日: | 2011-08-18 |
| 公開(公告)號: | CN102306098A | 公開(公告)日: | 2012-01-04 |
| 發(fā)明(設(shè)計)人: | 陳廳;張小松;郭世澤;王為尉;牛偉;戴衛(wèi)國 | 申請(專利權(quán))人: | 電子科技大學 |
| 主分類號: | G06F9/44 | 分類號: | G06F9/44 |
| 代理公司: | 成都華典專利事務(wù)所(普通合伙) 51223 | 代理人: | 楊保剛;徐豐 |
| 地址: | 611731 四川省成*** | 國省代碼: | 四川;51 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 污點 傳播 系統(tǒng) 及其 方案 | ||
技術(shù)領(lǐng)域
本發(fā)明涉及一種污點數(shù)據(jù)分析技術(shù),尤其涉及污點數(shù)據(jù)的傳播系統(tǒng)和方案。
背景技術(shù)
污點分析技術(shù)是最近幾年提出的新技術(shù),目前在軟件行為分析、軟件缺陷分析、漏洞利用代碼的自動生成、漏洞特征碼的自動生成等領(lǐng)域都有應(yīng)用。污點數(shù)據(jù)是指由用戶指定的不可信的輸入數(shù)據(jù),例如:鍵盤鼠標輸入、文件輸入、網(wǎng)絡(luò)輸入等。在編程過程中,通常使用1位存儲空間來標示某個內(nèi)存區(qū)域或寄存器是否是污點數(shù)據(jù):如果標識為1則表示是污點數(shù)據(jù),如果為0則表示不是污點數(shù)據(jù)。
污點分析技術(shù)包含三個主要的功能模塊:污點標記模塊、污點傳播模塊和策略模塊。污點標記模塊的主要功能是將不可信輸入打上標記,例如:程序讀入一個文件后,將文件所在的內(nèi)存區(qū)域都標識為污點。污點傳播模塊的主要功能是監(jiān)視程序執(zhí)行情況,傳播污點信息,例如:一條語句int?target=source+10;如果source是污點數(shù)據(jù),那么這條語句執(zhí)行后target也會變?yōu)槲埸c數(shù)據(jù)。策略模塊的主要功能動態(tài)監(jiān)視程序執(zhí)行情況是否與策略相符,并調(diào)用相應(yīng)的處理流程,例如:函數(shù)調(diào)用strcpy(target,source);如果source是污點數(shù)據(jù),那么就產(chǎn)生警報。
然而,現(xiàn)有的污點分析技術(shù)并不是完美的,現(xiàn)有的污點傳播都是針對數(shù)據(jù)流傳播進行監(jiān)控。比如int?target=source+10;source是數(shù)據(jù),target也是數(shù)據(jù),這條語句執(zhí)行后target是否是污點直接由source是否是污點決定。本文中將這種污點傳播方式稱為顯式污點傳播。除此以外,控制流同樣會導(dǎo)致污點傳播,由以下的例1進行說明:
1??void?func(int?source)?{
2????int?target,?other;
3????if(source?==?20)?
4??????target?=?1;
5????else
6??????target?=?2;
7????other?=?3;
8????print(target);
9????print(other);
10??}
例1中,source為污點數(shù)據(jù),程序執(zhí)行完成后,target只能為1或者2,由于1和2是立即數(shù),則必然不是污點數(shù)據(jù),所以按照顯式污點傳播方案,target不是污點數(shù)據(jù)。但從程序語義上看,target究竟取1還是2是由source的值決定的,而source本身是污點數(shù)據(jù),所以正確的結(jié)論是target是污點數(shù)據(jù)。可以看出,污點信息沒有通過數(shù)據(jù)流進行傳播,而是通過if…else…這樣的控制流進行傳播。本文中將這種通過控制流進行污點傳播的方式稱為隱式污點傳播。
現(xiàn)有的污點分析技術(shù)只能對顯式污點傳播進行處理,這使得一些應(yīng)該被標記為污點的數(shù)據(jù)沒有被標記,最終使得策略模塊在處理時,一些應(yīng)該產(chǎn)生報警的情況沒有產(chǎn)生報警。換句話說,現(xiàn)有污點分析技術(shù)無法處理隱式污點傳播,因此整體漏報率偏高。
發(fā)明內(nèi)容
針對上述現(xiàn)有技術(shù),本發(fā)明要解決的技術(shù)問題是提供一種在污點分析技術(shù)中,能夠?qū)﹄[式污點傳播進行處理,便于后續(xù)的策略模塊處理的隱式污點傳播系統(tǒng)。
為了解決上述技術(shù)問題,本發(fā)明采用如下技術(shù)方案:一種隱式污點傳播系統(tǒng),包括:
控制流圖生成裝置,用于對輸入的被測試應(yīng)用程序進行處理生成該應(yīng)用程序的控制流圖;
立即后支配樹生成裝置,用于對輸入的被測試應(yīng)用程序的控制流圖進行處理輸出該被測試應(yīng)用程序的立即后支配樹;
程序執(zhí)行監(jiān)控裝置,用于執(zhí)行被測試應(yīng)用程序,并動態(tài)監(jiān)控該被測試應(yīng)用程序的執(zhí)行情況;
污點控制流定位裝置,用于定位導(dǎo)致污點傳播的控制流,所述污點控制流為有某個或某些操作數(shù)是污點的分支語句;
污點控制數(shù)據(jù)識別裝置,用于識別受到污點控制流影響的數(shù)據(jù),所述污點控制數(shù)據(jù)為污點控制流節(jié)點到其立即后支配節(jié)點之間的所有語句的目的數(shù)據(jù);
污點標記裝置,用于對污點控制數(shù)據(jù)打上污點標志。
進一步地,所述程序執(zhí)行監(jiān)控裝置能夠獲得被測試應(yīng)用程序運行的當前指令、當前寄存器值、當前內(nèi)存值、函數(shù)調(diào)用情況。
一種隱式污點傳播方案,包括如下步驟:
(1)利用控制流圖繪制軟件獲得被測試應(yīng)用程序的控制流圖;
(2)利用算法或函數(shù)庫獲得被測試應(yīng)用程序的立即后支配樹;
(3)利用程序執(zhí)行監(jiān)控裝置將被測試程序運行起來,同時設(shè)置一個集合S為空集;
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于電子科技大學,未經(jīng)電子科技大學許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201110237712.1/2.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。





