999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于敏感語義關聯的代碼切片及應用研究

2024-05-21 05:22:35帥活力唐成華
科技資訊 2024年4期
關鍵詞:關聯語義

帥活力 唐成華

摘??要:利用程序的可伸縮性對程序進行代碼切片,識別出受敏感變量影響的關鍵語句,消除噪音并挖掘程序內部依賴,用以檢測代碼的漏洞與缺陷。針對切片對依賴過于敏感的問題,提出一種基于敏感語義關聯的代碼過程間切片方法,提取表征敏感信息的有效語句,捕獲語義依賴關聯,將代碼漏洞觸發點轉化為上下文敏感的缺陷依賴流,并基于約束規則提升切片效率,結合缺陷約束獲取代碼漏洞的異常來源。實驗結果表明該方法在代碼切片的效率、質量以及漏洞檢測的精度上有較好的表現。

關鍵詞:代碼切片?敏感語義?控制流?漏洞檢測

中圖分類號:TP309

Research?on?Code?Slicing?Based?on?Sensitive?Semantic?Association?and?Its?Application

SHUAI?Huoli??TANG?Chenghua

Guangxi?Key?Laboratory?of?Trusted?Software,?Guilin?University?of?Electronic?Technology,?Guilin,?Guangxi?Zhuang?Autonomous?Region,?541004?China

Abstract:?By?utilizing?the?scalability?of?the?program?to?slice?the?code?of?the?program,?key?statements?affected?by?sensitive?variables?can?be?identified,?noise?can?be?eliminated,?and?the?internal?dependencies?of?the?program?can?be?mined,?so?as?to?detect?vulnerabilities?and?defects?in?the?code.?In?order?to?solve?the?problem?of?the?excessive?sensitivity?of?slicing?to?dependencies,?this?paper?proposes?an?inter-procedural?slicing?method?of?the?code?based?on?sensitive?semantic?association,?which?extracts?effective?statements?that?represent?sensitive?information,,?captures?semantic?dependent?association,?transforms?the?trigger?points?of?code?vulnerabilities?into?context-sensitive?defect?dependency?flows,?improves?slicing?efficiency?based?on?constraint?rules,?and?obtains?the?abnormal?source?of?code?vulnerabilities?in?combination?with?defect?constraints.?Experimental?results?show?that?this?method?performs?well?in?the?efficiency?and?quality?of?code?slicing?and?the?accuracy?of?vulnerability?detection.

Key?Words:?Code?slicing;?Sensitive?semantics;?Control?flow;?Vulnerability?detection

更新迭代的軟件在提供優質服務的同時,結構不斷復雜,并發、循環、函數調用等動態執行機制使得存在于整個軟件開發生命周期的代碼缺陷更難以避免,若在開發中復用到漏洞代碼,新程序將延續其脆弱性,則識別出缺陷的難度更大。研究表明,缺陷修復將消耗軟件開發成本的50%~70%。為重視代碼安全,提高軟件魯棒性,進行缺陷漏洞與惡意代碼檢測等相關工作必不可少。程序是軟件中相應表征分解的語義及其集合,程序行為特征能從指令層直觀體現代碼功能,而挖掘漏洞與缺陷發現往往以程序內部依賴關系、語義信息以及行為特征做支撐,由于對程序理解層面的不完善導致代碼缺陷漏檢等問題,學者們不斷從程序代碼本身提取相關信息,增強語義理解[1]。

軟件的相關分析工作耗時又費力,若能先進行程序切片,排除無關代碼,使缺陷特征信息變緊密,則降低檢查時的工作復雜度。通過利用程序可伸縮性,程序切片能識別提取出受變量影響或影響變量的直至不動點的關鍵語句,能消除噪音語句干擾以靈活理解程序。由于切片程序與源程序在結果執行上語義一致,所以利用切片技術預處理輸入程序后,便于推理控制流及數據流軌跡,切片后的程序分析效率要優于傳統程序分析[2-3]。在分析惡意代碼和缺陷程序時,注重實體內部流特征[4-5],結合語法結構和語義信息構建函數和過程間的相關依賴屬性圖[6-7],充分捕獲數據變換和轉移軌跡,能有效檢測惡意操作和發現存在的數據泄露。這為我們提供了用更精確的靜態方法進行數據依賴分析的空間,再結合切片技術注重行為關聯,緊密缺陷特征,應用于脆弱性分析有效檢測漏洞。

1??基于敏感語義關聯的代碼切片模型

通過程序控制流提供執行邏輯順序,構建以結點保存依賴信息的控制流變量依賴圖(CFVDG),利用圖可達性執行切片,檢測代碼缺陷,總體模型如圖1所示。首先,提取代碼變量間定義使用、參數傳遞、返回值依賴等語義信息,并記錄敏感變量的相關關聯集,結點保存依賴信息;其次,生成控制流支持的程序變量依賴圖,并根據交叉函數的控制流變量依賴圖進行參數切片,切片輪廓保存至函數聲明結點;最后,對切片準則中的變量遍歷程序的控制流變量依賴圖進行切片,捕捉與切片準則相關的完備切片結果,根據缺陷約束庫內的約束檢查切片語句的語義,發現錯誤執行狀態,追蹤敏感數據傳播,在降低圖時間和空間復雜度的同時,提高代碼缺陷檢測準確率。

1.1?控制流變量依賴圖CFVDG的構建

數據流分析應保證結構層面的依賴關系是完整的、函數調用是上下文敏感的,以圖作為程序中間表示時,圖結點和邊應盡可能包含語句執行的有效信息,以支持后續遍歷圖執行切片。本文構建的控制流變量依賴圖由變量依賴關系,控制流執行順序指導進行,通過將構圖粒度限制在變量間,記錄變量之間的影響關系,明確和區分數據傳播和控制依賴路徑。

控制流變量依賴圖的結點主要包括普通結點、函數聲明結點和函數調用結點。其中普通結點由語句行號、定義集、使用集、語句類型組成;函數聲明結點由聲明行號、函數名、形參、參數切片結果組成;函數調用結點由定義集、調用行號、聲明行號、實參組成。通過程序代碼中的語義依賴信息構建控制流變量依賴圖。語義依賴信息存在于函數內的源碼語句之間和函數調用時的參數傳遞之間,其體現了控制流支撐下的數據轉移關聯,可分為數據依賴和控制依賴。在構建依賴圖的創建結點階段,結點間變量的數據依賴關系包括變量定義與使用依賴、交叉函數參數依賴、返回值依賴等依賴關系。控制依賴關系包括順序控制依賴、分支選擇控制依賴、循環邏輯控制依賴等。

1.2?變量關聯集合的獲取

變量關聯集合用于記錄控制流變量依賴圖忽略的依賴關聯。分析與指針、數組、結構體等這類變量相關的語句時,可能涉及域敏感問題,因此將對局部成員或元素的操作視為是對整體變量的操作。使用模糊匹配觀察變量依賴,如對于訪問結構體成員的操作都視為是對結構體的操作。

代碼切片的結果需回溯(即進行兩次檢查)才能保證完整的依賴關系處于切片結果中。通常采用對程序進行前向依賴后再進行后向依賴分析的方式,或是采用一次切片后根據相關依賴記錄對程序進行二次完整依賴切片的方式。通過利用變量關聯集合平行歸檔與切片準則中的變量關聯的變量,使切片輪廓包括與目標變量有間接依賴關系的相關語句,以提高切片結果正確性。依賴圖建立后,有選擇地將變量關聯集合中變量的切片語句集合并,實現切片結果的提取一次完成,以關聯檢查程序缺陷。

從程序語句中查找相關變量關聯,輸出指針、數組、結構體等類型的變量關聯集合。涉及變量關聯的語句主要體現為成員變量的單獨定義或引用、成員變量間的別名賦值等。通過獲得一個需考慮域敏感分析的變量(指針、數組和結構體等)的關聯集合,集合中的變量按變量關聯度降序排列。一旦獲取到完整的變量關聯集合,在進行語義分析時,將集合中關聯度高的相關變量優先設置為切片階段要跟蹤的變量,語義分析檢查相關切片語句,使代碼缺陷的檢測更嚴謹。變量關聯度由變量間影響次數和影響權重計算而得,本文規定語句中變量賦值操作的影響權重大于判斷比較等操作的影響權重。

2??代碼切片

代碼切片過程的核心是語義依賴分析和變量關聯分析。在經過前述的依賴分析后進入切片階段,依照切片規則約束對切片準則中進行切片,并補充參數或返回值的子切片構成最終切片輪廓。

2.1?切片約束規則

切片約束規則定義了在提取切片準則中的變量?的切片輪廓?時,切片過程需滿足的規則,主要包括以下7條邏輯約束規則:

(1)若語句s定義變量?,語句s使用?,即滿足變量定義與使用依賴,則提取兩者對應結點信息存入切片輪廓?。

(2)若條件判斷語句中存在相關依賴,并且其后繼結點分支語句中存在關聯,則將包含條件判斷及關聯語句行號存于切片輪廓?內。

(3)若循環結構語句中存在依賴,并且其后繼結點循環語句中存在關聯,則將包含循環判斷及關聯語句行號存于切片輪廓?內。

(4)若遇函數調用結點時,根據交叉函數參數依賴,將對應切片語句行號加入最終切片輪廓?。

(5)若結點cp順序執行到達結點cp,cp執行到達cp,前者屬于切片輪廓,后者不存在與變量?的依賴關系,則切片輪廓跳過cp,計算cp的依賴。

(6)若切片準則賦值為函數返回值,即滿足返回值依賴,則將返回值的切片結果加入最終切片輪廓?。

(7)若語句為無條件跳轉或其他變量無關控制語句,則將語句行號加入切片輪廓?。

2.2?代碼切片的執行

在切片過程中,一方面,變量可能作為實際參數調用交叉函數,但交叉函數在內部操作形式參數時,會間接影響實際參數;另一方面,交叉函數的返回值會傳遞到函數外賦值給變量。因此有必要追蹤形參和返回值在交叉函數中的依賴關系和執行邏輯。

即便在交叉調用函數中會存在對形式參數的操作不影響實際參數的情況,但這種傳播方式給隱式惡意操作提供了可乘之機,因此追蹤實參在交叉函數中依賴關系和執行邏輯是必要的。自定義函數間接輔助了程序功能的實現,對于不同的調用,其處理過程與執行語義相同。為避免不同上下文多次對交叉函數切片,使用增量方式存儲參數切片結果并關聯映射至函數聲明結點的參數切片結果,從而減少構造交叉函數依賴圖的結點空間,降低過程間依賴邊的連接復雜度。

依照依賴關系圖中函數調用結點保存的參數對應關系,進行參數切片,提取結點語句行號,結果語句序列映射至聲明結點中,當調用函數時,根據參數對應關系先在聲明該函數的現有對應列表中查找是否存在該參數的切片語句,若存在直接提取序列添加至切片輪廓,構成最終切片結果;若不存在,則依照或建立該函數的控制流變量依賴圖進行參數切片,序列保存至聲明節點中。另外,當變量位于賦值操作左側時,右側為函數調用,則說明變量被調用函數的返回值賦值,滿足返回值依賴,需根據函數中返回語句的返回變量在切片規則約束下進行切片并存儲。

3??應用敏感語義代碼切片的漏洞檢測

敏感API的不規范使用和語句約束檢查的缺少會有很大概率造成漏洞,如內存分配函數和釋放函數未正確配對、數組或指針加下標的元素無邊界檢查、取余或截斷指令導致的整數溢出等,因此將敏感API和操作約束添加至缺陷約束庫輔助檢查缺陷。通過構建程序CFVDG對缺陷相關變量執行切片后,提供了可疑變量或函數上下文敏感的依賴信息流,利用缺陷約束庫提供的敏感操作約束訪問檢查語句操作是否合法,檢測出錯誤狀態。

根據變量依賴關聯建立CFVDG,切片分析含空指針引用的部分開源代碼,如圖2所示,其代碼第33行的指針d在通過idvgetnode(i)函數返回值進行賦值,并在第36行被賦值使用,通過交叉函數idvgetnode?()中s指針行為操作分析,可以看到若不滿足55行分支處條件,則返回?NULL?值,當調用完成后順序執行36行d->limit=rate語句。

構建程序的CFVDG后,第36行的語句類型vist為指針操作,若以d為切片準則進行切片檢查,因交叉函數idvgetnode?()中有返回值語句,則idvgetnode函數對應的CFVDG中聲明結點內應存儲返回值s切片,即,最終切片輪廓為,對其進行語義操作檢查,發現第33行d賦值為第58行的返回值null,由于在第34-36行之間沒有進行指針為空判斷,則第36行賦值操作將導致空指針解引用。

4??實驗過程及分析

實驗環境為Inter(R)Xeon(R)?CPU?E5-1603?0?2.8GHz處理器,Windows10操作系統,采用PyCharm、Python語言。選用SIR(http://sir.unl.edu/portal/index.php)網站的schedule?、printtokens?、gzip?等5個項目部分錯誤版本作為實驗數據集,同時,選取系統依賴圖SDG[6]、數據流圖DFG[8]進行實驗對比。

4.1?切片效率

為評估代碼切片方法的有效性,針對5個數據集的SDG、DFG和CFVDG3種方法的切片時間、切片約簡比ω以及切片時間縮短占比進行對比,如表1所示,其中ω=(PN-SN)/PN,PN為程序總代碼數,SN為切片總代碼數。ω值越高,說明切片執行后與缺陷相關的特征代碼越緊密,代碼缺陷分析越快。

由表1可知,CFVDG方法切簡比平均達28.7%,相比DFG平均提高約4.73%。另外,由于二次執行的交叉函數可直接提取CFVDG存儲的參數切片輪廓,縮減了切片提取時間,使得CFVDG相比傳統的SDG和DFG方法切片時間最高縮短4.23秒,時間縮短相比對應傳統方法的切片時間占比最高為20%。

4.2?切片質量

實驗中使用平均精度率和平均減少率來評估CFVDG質量和切片改進程度,平均精度率用a表示,代表對于每個切片準則中的變量?,是CFVDG切片與SDG(DFG)切片交集中的代碼數與CFVDG切片數的平均之比;平均減少率用β表示,代表對于每個切片準則?,是CFVDG切片代碼數與SDG(DFG)切片數的平均之比,計算方法如下:

(1)

(2)

式(1)和式(2)中的n(?)表示切片準則數目,SN?表示對準則中變量?的切片語句數目,不同依賴圖切片方法對數據集的平均精度率和平均減少率差異如圖3和圖4所示。針對5個數據集,CFVDG切片的平均精度率均在88.5%之上,并且切片減少率最高達8.94%,最低到1.54%。

4.3?缺陷檢測精度

為驗證惡意約束庫中缺陷約束發現代碼漏洞和減少誤報效果,選取精準率和錯誤率作為脆弱性分析評估指標,精確率代表實際總缺陷數中正確檢測數的占比,誤檢率則代表實際總缺陷數中誤報數占比,精準率和誤檢率分別用Z和X表示。

Z?=?tp/tp?+?fp????????????????(3)

X?=?fp/tp?+?fp????????????????(4)

式(3)和式(4)中的tp為檢測缺陷正確數,fp為檢測缺陷誤報數,缺陷檢測情況如表2所示,數據集缺陷檢測精準率明顯增加(范圍70%~82%,平均74.8%),同比切片前提高平均約6%;誤檢率明顯減少(范圍6%~9%,平均7.4%),同比切片前減少平均2.8%。

4.4?程序規模對性能影響

為驗證程序規模對切片效果影響,分析了代碼行數從750~10?000的程序平均切片大小和代碼缺陷覆蓋率,如圖5所示。隨著代碼行數的增加,切片仍能平均約簡16.5%的代碼;同時,隨著程序規模的擴大,會較小程度影響切片缺陷覆蓋率,但仍能覆蓋平均83.8%的缺陷代碼。

5??結語

本文提出了遍歷控制流變量依賴圖CFVDG的變量關聯切片方法,約簡無效漏洞代碼信息,使用中間參數切片的映射,能有效提高切片的效率和質量,以及提升缺陷檢測精準率,降低誤檢率。接下來,通過嘗試對多語言、混合語言切片,優化和精確語義依賴理解,以實現深層次的漏洞檢測,并結合動態切片和約束求解考慮執行狀態進行缺陷定位分析。

參考文獻

[1]?王淑棟,尹文靜,董玉坤,等.面向順序存儲結構的數據流分析[J].軟件學報,2020,31(5):1276-1293.

[2]?鄒德清,李響,黃敏桓,等.基于圖結構源代碼切片的智能化漏洞檢測系統[J].網絡與信息安全學報,?2021,7(5):113-122.

[3]?梅瑞,嚴寒冰,沈元,等.二進制代碼切片技術在惡意代碼檢測中的應用研究[J].信息安全學報,2021,6(3):125-140.

[4]?潘家曄,莊毅,孫炳林.基于漸進擴展的二進制程序數據流分析方法[J].軟件學報,2022,33(9):3249-3270.

[5]?黎君玉,羅琴,劉智.基于控制流分析的導向性灰盒模糊測試方法[J].電子測量技術,2022,45(15):21-27.

[6]?GALINDO?C,?Pérez?S,?Silva?J.?Exception-Sensitive?Program?Slicing[J].?Journal?of?Logical?and?Algebraic?Methods?in?Programming,2023,?130:100832.

[7]?壽增,許睿超,馬驍,等.基于數據依賴圖聚類的開源軟件靜態分析系統[J].中國電子科學院研究院學報,2022,17(8):743-747,772.

[8]?Jiang?T,?CUI?L,?LIN?Z,?et?al.?A?Survey?of?Malware?Classification?Methods?Based?on?Data?Flow?Graph[C]?//Proc?of?8th?International?Conference?of?Pioneering?Computer?Scientists,?Engineers?and?Educators,?Chengdu,?China:?CCIS,?2022:80-93.

猜你喜歡
關聯語義
不懼于新,不困于形——一道函數“關聯”題的剖析與拓展
“苦”的關聯
當代陜西(2021年17期)2021-11-06 03:21:36
語言與語義
“一帶一路”遞進,關聯民生更緊
當代陜西(2019年15期)2019-09-02 01:52:00
奇趣搭配
智趣
讀者(2017年5期)2017-02-15 18:04:18
“上”與“下”語義的不對稱性及其認知闡釋
現代語文(2016年21期)2016-05-25 13:13:44
認知范疇模糊與語義模糊
“深+N季”組配的認知語義分析
當代修辭學(2011年6期)2011-01-29 02:49:50
語言學與修辭學:關聯與互動
當代修辭學(2011年2期)2011-01-23 06:39:12
主站蜘蛛池模板: 欧美国产成人在线| 在线永久免费观看的毛片| 91免费国产高清观看| 欧美精品伊人久久| 自慰网址在线观看| 亚洲精品无码抽插日韩| 亚洲永久色| 98超碰在线观看| 谁有在线观看日韩亚洲最新视频| 亚洲 欧美 偷自乱 图片| 久久久久免费精品国产| 国产成人你懂的在线观看| 无码日韩视频| 国产在线八区| 久久毛片网| 国产在线无码一区二区三区| 久久精品日日躁夜夜躁欧美| 黄色污网站在线观看| 久久久受www免费人成| 999精品在线视频| 日韩国产黄色网站| 99草精品视频| 国产成人盗摄精品| 丁香亚洲综合五月天婷婷| 中文字幕永久在线看| 91精品国产91欠久久久久| 亚洲免费播放| 欧美一区二区三区香蕉视| 欧美无遮挡国产欧美另类| 国产精品美女网站| 久久青青草原亚洲av无码| 91po国产在线精品免费观看| 四虎永久免费地址| 色综合天天综合中文网| 亚洲精品无码抽插日韩| 特级aaaaaaaaa毛片免费视频 | 日韩欧美国产区| 99国产精品国产高清一区二区| 狠狠做深爱婷婷久久一区| 精品自窥自偷在线看| 在线视频亚洲色图| а∨天堂一区中文字幕| 五月天久久综合| 亚洲三级a| 一本一道波多野结衣一区二区| 中文字幕首页系列人妻| 免费国产黄线在线观看| 午夜成人在线视频| 毛片一级在线| 污网站免费在线观看| 一级全黄毛片| 国产99久久亚洲综合精品西瓜tv| 青青热久免费精品视频6| 亚洲国产亚洲综合在线尤物| 久久国产精品波多野结衣| 超清无码一区二区三区| 亚洲无码一区在线观看| 亚洲系列中文字幕一区二区| 欧美成人aⅴ| 国产精品网址你懂的| 精品无码视频在线观看| 国产91成人| 久久综合干| 全午夜免费一级毛片| 国产精品福利在线观看无码卡| 亚洲人成人伊人成综合网无码| 欧美午夜精品| 欧美在线三级| 亚洲一级毛片在线观播放| 亚洲AⅤ无码国产精品| 国产精鲁鲁网在线视频| 丰满的少妇人妻无码区| 日韩精品免费在线视频| 国产欧美精品一区二区| 无码中文字幕乱码免费2| 中国国产一级毛片| 强乱中文字幕在线播放不卡| 在线无码九区| 天天干伊人| 亚洲精品无码在线播放网站| 手机永久AV在线播放| 成人福利在线看|