文獻(xiàn)標(biāo)識(shí)碼: A
DOI: 10.19358/j.issn.2096-5133.2021.06.004
引用格式: 張德浩,徐云. 函數(shù)級(jí)別的復(fù)用開源代碼檢測(cè)方法[J].信息技術(shù)與網(wǎng)絡(luò)安全,2021,40(6):22-27,49.
0 引言
隨著軟件規(guī)模的日益增長(zhǎng)和開源生態(tài)的發(fā)展,復(fù)用開源代碼成為節(jié)省軟件開發(fā)時(shí)間成本和人力成本的有效手段[1]。然而,復(fù)用開源代碼存在引入開源漏洞和違反開源許可等問題。例如,基于Android的移動(dòng)操作系統(tǒng)CyanogenMod使用含有漏洞的JDK 1.5示例代碼解析證書,導(dǎo)致系統(tǒng)易于遭受中間人攻擊[2]。又如,Oracle查出Google在其Android項(xiàng)目中復(fù)用了來自O(shè)racleJDK的rangeCheck函數(shù)源碼和若干文件的反編譯源碼,為此雙方展開長(zhǎng)達(dá)數(shù)年的訴訟[3]。因此,有必要檢測(cè)開發(fā)軟件中函數(shù)級(jí)別的復(fù)用開源代碼。
由于復(fù)用代碼之間本身的相似性,使用代碼克隆檢測(cè)工具可以檢測(cè)到復(fù)用代碼。與此同時(shí),現(xiàn)有的克隆檢測(cè)工具檢出的克隆代碼中,還常常包含大量由于偶然原因而相似的代碼,稱為偶然克隆[4-5],并非復(fù)用代碼。由于一些高度相似甚至相同的常見函數(shù)可能是偶然克隆(例如Java中的hashCode、equals等函數(shù)),而一些經(jīng)過修改的復(fù)用代碼與被復(fù)用的原始代碼不完全相同,因此在代碼克隆檢測(cè)之后需要一種更為精準(zhǔn)的方法檢測(cè)復(fù)用代碼,以減少偶然克隆代碼的影響。據(jù)了解,關(guān)于復(fù)用代碼檢測(cè)的現(xiàn)有研究極少考慮到偶然克隆代碼的影響,而關(guān)于偶然克隆的現(xiàn)有研究大多為實(shí)證研究[4-6],目前尚未應(yīng)用到復(fù)用代碼檢測(cè)上。
本文詳細(xì)內(nèi)容請(qǐng)下載:http://ihrv.cn/resource/share/2000003595
作者信息:
張德浩1,2,徐 云1,2
(1.中國(guó)科學(xué)技術(shù)大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,安徽 合肥230027;
2.中國(guó)科學(xué)技術(shù)大學(xué) 國(guó)家高性能計(jì)算中心,安徽 合肥230026)