近日,中國人民大學(xué)信息學(xué)院信息安全實(shí)驗(yàn)室智能軟件安全研究團(tuán)隊(duì)2篇論文被ICSE 2024錄用。ICSE全稱為International Conference on Software Engineering,是國際公認(rèn)的軟件工程領(lǐng)域旗艦會(huì)議,被中國計(jì)算機(jī)學(xué)會(huì)(CCF)列為A類會(huì)議,每年召開一次,2024年是其第46屆會(huì)議。信息學(xué)院教師黃建軍分別為兩篇論文的第一作者和通訊作者。
論文介紹
1、論文題目:Raisin: Identifying Rare Sensitive Functions for Bug Detection
作者:Jianjun Huang, Jianglei Nie, Yuanjun Gong, Wei You, Bin Liang, Pan Bian
稀有函數(shù)是軟件系統(tǒng)中調(diào)用次數(shù)稀少的一類函數(shù),敏感函數(shù)則是軟件系統(tǒng)中易導(dǎo)柱漏洞的關(guān)鍵函數(shù)。本文提出了一種基于上下文的類比推理方法Raisin,來識(shí)別軟件系統(tǒng)中的稀有敏感函數(shù),其工作流程如圖1所示。圖1中,上半部分為識(shí)別頻繁的敏感函數(shù)(即調(diào)用次數(shù)較多的敏感函數(shù)),以頻繁函數(shù)和其上下文函數(shù)聚類后的簇作為配對(duì),通過類比推理方法識(shí)別出與給定種子函數(shù)(如kmalloc)相似的頻繁敏感函數(shù)。下半部分為識(shí)別稀有敏感函數(shù),主要包括:將稀有函數(shù)的調(diào)用上下文中的稀有函數(shù)展開,獲取具有更準(zhǔn)確嵌入向量的頻繁函數(shù)作為上下文函數(shù),并對(duì)它們做聚類,將每個(gè)簇與稀有函數(shù)進(jìn)行配對(duì);對(duì)稀有函數(shù)分詞后的子詞進(jìn)行嵌入,然后基于子詞出現(xiàn)頻率加權(quán)累加計(jì)算出各個(gè)稀有函數(shù)的較高質(zhì)量的嵌入向量;根據(jù)頻繁敏感函數(shù)的識(shí)別結(jié)果,提取與敏感操作關(guān)聯(lián)的關(guān)鍵子詞,以之過濾稀有函數(shù),使得類比推理僅面向更可能的候選敏感函數(shù)。最后,經(jīng)類比推理識(shí)別出的稀有敏感函數(shù)被配置到靜態(tài)漏洞檢測(cè)工具中,對(duì)目標(biāo)軟件系統(tǒng)開展漏洞檢測(cè)。
對(duì)Linux kernel、FreeBSD、OpenSSL、FFmpeg和QEMU等5個(gè)大型開源安軟件系統(tǒng)展開測(cè)試,發(fā)現(xiàn)了上萬個(gè)稀有敏感函數(shù),平均精確率達(dá)91%。在Linux和FreeBSD中共檢測(cè)發(fā)現(xiàn)27個(gè)漏洞,其中21個(gè)已被內(nèi)核開發(fā)者確認(rèn)。
圖1 Raisin工作流程
2. 論文題目:FuzzInMem: Fuzzing Programs via In-memory Structures
作者:Xuwei Liu, Wei You, Yapeng Ye, Zhuo Zhang, Jianjun Huang*, Xiangyu Zhang
現(xiàn)有基于變異的模糊測(cè)試方法通常面向輸入中的位粒度或字節(jié)粒度進(jìn)行變異以獲得測(cè)試種子。對(duì)于具有較為復(fù)雜數(shù)據(jù)結(jié)構(gòu)或具有復(fù)雜內(nèi)部約束的輸入來說,現(xiàn)有方法通常需要花費(fèi)更多的時(shí)間來產(chǎn)生有效的測(cè)試種子。本文提出了一種新的方法FuzzInMem來變異與輸入相關(guān)的內(nèi)存數(shù)據(jù)結(jié)構(gòu),并重用目標(biāo)程序的邏輯來將編譯后的數(shù)據(jù)結(jié)構(gòu)寫回文件中。FuzzInMem的工作流程如圖2所示。首先分析目標(biāo)程序,解析出關(guān)鍵數(shù)據(jù)結(jié)構(gòu);然后利用一個(gè)合成器來分析源代碼并合成出自動(dòng)變異內(nèi)存數(shù)據(jù)結(jié)構(gòu)的代碼,這一步會(huì)生成新的頭文件并重新定義關(guān)鍵數(shù)據(jù)結(jié)構(gòu),相比其原始定義,這些重定義的數(shù)據(jù)結(jié)構(gòu)中某些字段會(huì)發(fā)生改變以輔助后續(xù)的變異;在運(yùn)行時(shí),監(jiān)控并劫持目標(biāo)程序的執(zhí)行,將關(guān)鍵數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換為重定義的類型并在內(nèi)存中做變異;利用目標(biāo)程序常帶的內(nèi)建打印輸出功能(如“另存為”)將內(nèi)存中變異后的數(shù)據(jù)結(jié)構(gòu)寫入滿足格式要求的文件中,這些文件將作為后續(xù)模糊測(cè)試的種子輸入。
在15個(gè)真實(shí)的應(yīng)用程序上開展測(cè)試,F(xiàn)uzzInMem展現(xiàn)出了顯著優(yōu)于多種現(xiàn)有方法工具的性能,在真實(shí)應(yīng)用程序上發(fā)現(xiàn)了29個(gè)全新的漏洞。
圖2 FuzzInMem工作流程
作者簡介
黃建軍,中國人民大學(xué)信息學(xué)院碩士生導(dǎo)師,主要研究方向?yàn)檐浖踩苑治觯赥SE、ICSE、FSE、CCS、Usenix Security等軟件工程和信息安全領(lǐng)域頂級(jí)期刊會(huì)議發(fā)表論文20余篇,曾獲ACM SIGSOFT杰出論文獎(jiǎng)、CCF科學(xué)技術(shù)獎(jiǎng)自然科學(xué)一等獎(jiǎng)。