• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      一種基于無(wú)害處理識(shí)別的嵌入式設(shè)備漏洞檢測(cè)方法

      2023-10-11 08:23:54周建華湛藍(lán)藍(lán)杜躍進(jìn)
      信息安全研究 2023年10期
      關(guān)鍵詞:污點(diǎn)漏洞嵌入式

      周建華 李 豐 湛藍(lán)藍(lán) 杜躍進(jìn) 霍 瑋

      1(中國(guó)科學(xué)院信息工程研究所 北京 100093)2(中國(guó)科學(xué)院大學(xué)網(wǎng)絡(luò)空間安全學(xué)院 北京 100049)3(中國(guó)科學(xué)院網(wǎng)絡(luò)測(cè)評(píng)技術(shù)重點(diǎn)實(shí)驗(yàn)室 北京 100195)4(網(wǎng)絡(luò)安全防護(hù)技術(shù)北京市重點(diǎn)實(shí)驗(yàn)室 北京 100195)5(三六零科技集團(tuán)有限公司 北京 100015)

      物聯(lián)網(wǎng)設(shè)備在國(guó)民經(jīng)濟(jì)中發(fā)揮著日益重要的作用,然而,設(shè)備廠商對(duì)網(wǎng)絡(luò)安全的忽視導(dǎo)致物聯(lián)網(wǎng)設(shè)備的安全問(wèn)題嚴(yán)重突出.根據(jù)公開(kāi)安全研究報(bào)告顯示[1],57%的物聯(lián)網(wǎng)設(shè)備存在中、高危安全漏洞,給互聯(lián)網(wǎng)帶來(lái)巨大的安全威脅.其中,家用路由器、網(wǎng)絡(luò)攝像頭等嵌入式設(shè)備由于開(kāi)放了多種服務(wù)(如Web服務(wù)、DNS服務(wù)),因此,近年來(lái)這些嵌入式設(shè)備的安全漏洞頻頻暴露.

      污點(diǎn)分析是檢測(cè)嵌入式設(shè)備漏洞的重要手段,而無(wú)害處理操作(sanitizer)又是污點(diǎn)分析的重要組成部分[2].污點(diǎn)分析的無(wú)害處理操作是指檢查程序是否對(duì)污點(diǎn)數(shù)據(jù)進(jìn)行了安全操作或者過(guò)濾,使污點(diǎn)數(shù)據(jù)不再具有安全風(fēng)險(xiǎn).現(xiàn)有方法通常依賴符號(hào)執(zhí)行或者簡(jiǎn)單模式匹配識(shí)別無(wú)害處理操作,然而,前者存在路徑爆炸和耗時(shí)的約束求解問(wèn)題;后者沒(méi)有判斷約束表達(dá)式中的變量和污點(diǎn)變量的關(guān)聯(lián)關(guān)系,導(dǎo)致識(shí)別結(jié)果存在漏報(bào).

      為了解決上述問(wèn)題,本文分析了無(wú)害處理操作的代碼特征,在此基礎(chǔ)上設(shè)計(jì)并實(shí)現(xiàn)了一種基于無(wú)害處理識(shí)別的嵌入式設(shè)備漏洞檢測(cè)方法(approach based on sanitizer identification, ASI).該方法首先通過(guò)建立污點(diǎn)變量及其長(zhǎng)度變量的關(guān)聯(lián)關(guān)系,識(shí)別基于路徑條件約束的無(wú)害處理操作;同時(shí)通過(guò)啟發(fā)式方法檢測(cè)攻擊字符過(guò)濾函數(shù),從而識(shí)別基于函數(shù)的無(wú)害處理操作;最后,檢查傳入危險(xiǎn)函數(shù)的關(guān)鍵變量是否經(jīng)過(guò)無(wú)害處理,如果不滿足,則報(bào)告存在疑似緩沖區(qū)溢出或者命令注入漏洞.

      1 相關(guān)工作與挑戰(zhàn)

      在嵌入式設(shè)備固件程序中,污點(diǎn)傳播過(guò)程中的無(wú)害處理主要涉及2類(lèi)操作,分別為基于路徑條件約束對(duì)用戶輸入數(shù)據(jù)的長(zhǎng)度限制和基于無(wú)害處理函數(shù)對(duì)用戶輸入數(shù)據(jù)的有效性檢查.當(dāng)用戶輸入傳遞到數(shù)據(jù)訪問(wèn)類(lèi)的危險(xiǎn)函數(shù)時(shí),如果缺少對(duì)輸入數(shù)據(jù)的長(zhǎng)度約束,則可能導(dǎo)致緩沖區(qū)溢出漏洞;當(dāng)用戶輸入傳遞到命令執(zhí)行類(lèi)的危險(xiǎn)函數(shù)時(shí),如果缺少對(duì)輸入數(shù)據(jù)的有效性檢查(如是否過(guò)濾特殊字符或字符串),則可能存在命令注入的風(fēng)險(xiǎn).

      為了準(zhǔn)確識(shí)別無(wú)害處理操作,現(xiàn)有方法在以下2方面進(jìn)行了嘗試[3-9]:一種是基于符號(hào)執(zhí)行的路徑約束收集,代表性工作為Karonte[10]和SaTC[11].然而,基于符號(hào)執(zhí)行的方法存在路徑爆炸和耗時(shí)的約束求解問(wèn)題,導(dǎo)致漏洞檢測(cè)時(shí)間開(kāi)銷(xiāo)高.另一種無(wú)害處理識(shí)別方法為基于簡(jiǎn)單的模式匹配方法,其中代表性工作為Dtaint[12]和EmTaint[13].Dtaint和EmTaint通過(guò)檢查傳入危險(xiǎn)函數(shù)的關(guān)鍵變量是否經(jīng)過(guò)指定模式的約束表達(dá)式,從而確認(rèn)路徑條件約束是否存在,如Dtaint重點(diǎn)關(guān)注“n

      通過(guò)變量關(guān)聯(lián)關(guān)系進(jìn)行識(shí)別是識(shí)別無(wú)害處理操作的有效手段,然而嵌入式設(shè)備固件程序以二進(jìn)制形態(tài)呈現(xiàn),程序通過(guò)寄存器和堆棧對(duì)變量進(jìn)行存儲(chǔ)和訪問(wèn),因此代表變量類(lèi)型和名稱(chēng)的語(yǔ)義信息丟失,使得分析人員無(wú)法直觀獲取某變量對(duì)應(yīng)的長(zhǎng)度變量信息.

      2 方法設(shè)計(jì)與實(shí)現(xiàn)

      2.1 總體框架

      本文通過(guò)分析無(wú)害處理操作的特征,設(shè)計(jì)并實(shí)現(xiàn)了基于無(wú)害處理識(shí)別的嵌入式設(shè)備漏洞檢測(cè)方法ASI.ASI通過(guò)識(shí)別基于路徑條件約束的無(wú)害處理操作和基于函數(shù)的無(wú)害處理操作,提升污點(diǎn)分析技術(shù)的精度,降低漏洞檢測(cè)結(jié)果的誤報(bào).如圖1所示,ASI主要包含基于長(zhǎng)度約束的變量關(guān)聯(lián)關(guān)系識(shí)別、啟發(fā)式的攻擊字符過(guò)濾函數(shù)識(shí)別、基于無(wú)害處理識(shí)別的漏洞檢測(cè)3個(gè)階段.

      2.2 基于長(zhǎng)度約束的變量關(guān)聯(lián)關(guān)系識(shí)別

      在嵌入式設(shè)備固件程序中,基于路徑條件約束的無(wú)害處理操作主要是對(duì)污點(diǎn)變量的長(zhǎng)度進(jìn)行約束.因此,基于路徑條件約束的無(wú)害處理識(shí)別需要檢查污點(diǎn)變量在傳入危險(xiǎn)函數(shù)之前是否進(jìn)行了長(zhǎng)度約束.本文基于路徑條件約束的無(wú)害處理識(shí)別,重點(diǎn)識(shí)別變量之間的“內(nèi)容-長(zhǎng)度”關(guān)系,并基于這種關(guān)聯(lián)關(guān)系推斷路徑條件約束表達(dá)式中的變量是否為污點(diǎn)變量的長(zhǎng)度變量.

      該階段首先根據(jù)長(zhǎng)度變量被獲取時(shí)的3種代碼特征,識(shí)別變量之間的長(zhǎng)度關(guān)聯(lián)關(guān)系.其次,基于識(shí)別出的污點(diǎn)變量及其長(zhǎng)度變量,采取2種形式對(duì)變量關(guān)聯(lián)關(guān)系進(jìn)行標(biāo)記.最后,進(jìn)行變量關(guān)聯(lián)關(guān)系的傳播.

      2.2.1 關(guān)聯(lián)關(guān)系識(shí)別

      為了識(shí)別變量“內(nèi)容-長(zhǎng)度”之間的關(guān)聯(lián)關(guān)系,本文總結(jié)了長(zhǎng)度變量被獲取時(shí)的3種代碼特征:1)根據(jù)常見(jiàn)污點(diǎn)源函數(shù)(如recvmsg)接收數(shù)據(jù)報(bào)文并指定報(bào)文長(zhǎng)度;2)通過(guò)特定內(nèi)存訪問(wèn)模式建立關(guān)聯(lián)關(guān)系,如通過(guò)strlen-malloc-memcpy等函數(shù)建立原始變量長(zhǎng)度與新申請(qǐng)變量之間的關(guān)聯(lián)關(guān)系;3)根據(jù)長(zhǎng)度獲取函數(shù)(如strlen)獲取關(guān)聯(lián)關(guān)系.

      根據(jù)上述3種代碼特征,本文采用3種方式識(shí)別變量之間的“內(nèi)容-長(zhǎng)度”關(guān)聯(lián)關(guān)系.

      首先,基于標(biāo)準(zhǔn)污點(diǎn)源函數(shù)原型確定參數(shù)變量之間的關(guān)聯(lián)關(guān)系.本文通過(guò)內(nèi)置4種庫(kù)函數(shù)的變量關(guān)聯(lián)關(guān)系規(guī)則(如表1所示),標(biāo)記數(shù)據(jù)及其長(zhǎng)度的對(duì)應(yīng)關(guān)系.

      表1 常見(jiàn)的報(bào)文接收函數(shù)及其參數(shù)關(guān)聯(lián)關(guān)系

      其次,根據(jù)內(nèi)存訪問(wèn)模式識(shí)別變量關(guān)聯(lián)關(guān)系.通過(guò)識(shí)別“長(zhǎng)度獲取-內(nèi)存申請(qǐng)-內(nèi)存賦值”訪問(wèn)模式,檢查程序是否獲取了污點(diǎn)變量的長(zhǎng)度(記為taintLen),并將其和新申請(qǐng)的內(nèi)存變量taintVar進(jìn)行關(guān)聯(lián).

      最后,基于標(biāo)準(zhǔn)化的長(zhǎng)度獲取函數(shù)識(shí)別變量關(guān)聯(lián)關(guān)系.本文根據(jù)標(biāo)準(zhǔn)長(zhǎng)度獲取操作,包括sizeof(),strlen()等獲取污點(diǎn)變量的長(zhǎng)度信息.

      2.2.2 關(guān)聯(lián)關(guān)系標(biāo)記

      基于初始識(shí)別出的“內(nèi)容-長(zhǎng)度”關(guān)聯(lián)關(guān)系,本文采取2種方式進(jìn)行關(guān)聯(lián)關(guān)系的標(biāo)記:

      第1種標(biāo)記方式是在污點(diǎn)狀態(tài)中進(jìn)行關(guān)聯(lián)關(guān)系標(biāo)記,即直接在污點(diǎn)狀態(tài)信息中標(biāo)記污點(diǎn)變量對(duì)應(yīng)的長(zhǎng)度變量;

      第2種標(biāo)記方式是利用特定結(jié)構(gòu)標(biāo)記存儲(chǔ)具有長(zhǎng)度關(guān)聯(lián)關(guān)系的變量結(jié)構(gòu)體信息.即如果污點(diǎn)變量和長(zhǎng)度變量存儲(chǔ)在具備相同基地址和不同偏移的棧空間,則判定2個(gè)變量位于該基地址所指向的結(jié)構(gòu)體,并標(biāo)記結(jié)構(gòu)體的偏移信息.

      2.2.3 關(guān)聯(lián)關(guān)系傳播

      對(duì)于標(biāo)記在污點(diǎn)狀態(tài)中的關(guān)聯(lián)關(guān)系,隨著污點(diǎn)傳播實(shí)現(xiàn)對(duì)長(zhǎng)度關(guān)系的傳播即可.對(duì)于標(biāo)記在特定結(jié)構(gòu)體中的關(guān)聯(lián)關(guān)系,如果后續(xù)存在對(duì)結(jié)構(gòu)中偏移信息的訪問(wèn),則進(jìn)行關(guān)聯(lián)關(guān)系傳播.

      2.3 啟發(fā)式的攻擊字符過(guò)濾函數(shù)識(shí)別

      當(dāng)污點(diǎn)數(shù)據(jù)傳入命令執(zhí)行類(lèi)危險(xiǎn)函數(shù)時(shí),為了防止命令注入漏洞的發(fā)生,嵌入式設(shè)備廠商常通過(guò)無(wú)害處理函數(shù)對(duì)用戶輸入數(shù)據(jù)的有效性進(jìn)行檢查.無(wú)害處理函數(shù)的使用主要體現(xiàn)在2個(gè)方面:一是通過(guò)對(duì)特殊字符串的過(guò)濾;二是調(diào)用常見(jiàn)無(wú)害處理函數(shù)的包裝函數(shù).

      對(duì)于特殊字符串過(guò)濾函數(shù),ASI基于以下啟發(fā)式方法進(jìn)行識(shí)別:1)識(shí)別函數(shù)中是否存在對(duì)可導(dǎo)致命令執(zhí)行的7種特殊字符或者字符串的過(guò)濾,包括“;,.sh,iptables,telnetd,|,’,&”;2)識(shí)別函數(shù)體是否包含對(duì)字符串匹配后的分支處理;3)函數(shù)功能是否單一.由于過(guò)濾函數(shù)的目的是對(duì)參數(shù)中出現(xiàn)的特殊字符或者字符串進(jìn)行檢查,因此函數(shù)中包含的基本塊數(shù)量和所調(diào)用的函數(shù)數(shù)量相對(duì)較少.根據(jù)經(jīng)驗(yàn),本文設(shè)置函數(shù)基本塊數(shù)量上限為7,所調(diào)用的函數(shù)數(shù)量上限為5.

      對(duì)于無(wú)害處理包裝函數(shù)識(shí)別,ASI內(nèi)置了6個(gè)常見(jiàn)的無(wú)害處理函數(shù)列表,如表2所示.ASI將上述函數(shù)及其包裝函數(shù)識(shí)別為無(wú)害處理函數(shù).

      表2 常見(jiàn)無(wú)害處理函數(shù)列表

      2.4 基于無(wú)害處理識(shí)別的漏洞檢測(cè)

      該過(guò)程以獲取的變量關(guān)聯(lián)關(guān)系和攻擊字符過(guò)濾函數(shù)為基礎(chǔ),實(shí)現(xiàn)基于路徑條件約束的無(wú)害處理識(shí)別和基于函數(shù)的無(wú)害處理識(shí)別,并同步完成漏洞檢測(cè).當(dāng)用戶輸入傳遞到數(shù)據(jù)訪問(wèn)類(lèi)的危險(xiǎn)函數(shù)時(shí),如果不存在對(duì)輸入數(shù)據(jù)的長(zhǎng)度約束,則報(bào)告存在疑似緩沖區(qū)溢出漏洞;當(dāng)用戶輸入傳遞到命令執(zhí)行類(lèi)的危險(xiǎn)函數(shù)時(shí),如果缺少對(duì)輸入數(shù)據(jù)的有效性檢查,則報(bào)告存在疑似命令注入漏洞.

      對(duì)于緩沖區(qū)溢出漏洞檢測(cè),本文關(guān)注路徑約束表達(dá)式中是否存在對(duì)傳入危險(xiǎn)函數(shù)關(guān)鍵變量的長(zhǎng)度變量的判斷,如果滿足則說(shuō)明存在無(wú)害處理操作;否則報(bào)告存在疑似緩沖區(qū)溢出漏洞.例如,對(duì)于if(n

      對(duì)于命令注入漏洞檢測(cè),本文主要檢查傳入命令執(zhí)行類(lèi)函數(shù)的關(guān)鍵變量是否經(jīng)過(guò)攻擊字符過(guò)濾函數(shù)的無(wú)害處理,如果滿足則說(shuō)明存在無(wú)害處理操作;否則認(rèn)為不存在無(wú)害處理,并報(bào)告存在疑似命令注入漏洞.

      3 實(shí)驗(yàn)與分析

      3.1 實(shí)驗(yàn)配置

      本文在已有嵌入式設(shè)備漏洞檢測(cè)原型系統(tǒng)ITS[14]的基礎(chǔ)上,設(shè)計(jì)并實(shí)現(xiàn)了基于無(wú)害處理識(shí)別的嵌入式設(shè)備漏洞檢測(cè)系統(tǒng)ASI@VARAS.為了驗(yàn)證本文方法的有效性,本文分析了基于無(wú)害處理識(shí)別的嵌入式設(shè)備漏洞檢測(cè)的精度和效率.

      本文采用與ITS相同的實(shí)驗(yàn)測(cè)試集,包括5個(gè)主流的嵌入式設(shè)備廠商的10款設(shè)備固件(如表3所示).本文實(shí)驗(yàn)均在英特爾i7處理器上運(yùn)行,內(nèi)存為32GB的64位的Ubuntu18.04系統(tǒng).

      表3 無(wú)害處理識(shí)別測(cè)試集

      3.2 漏洞檢測(cè)結(jié)果分析

      本節(jié)利用表3所示測(cè)試集進(jìn)行了漏洞檢測(cè)實(shí)驗(yàn).實(shí)驗(yàn)主要對(duì)比在加入基于無(wú)害處理識(shí)別的嵌入式設(shè)備漏洞檢測(cè)技術(shù)前后的漏洞檢測(cè)結(jié)果.由于該測(cè)試集選取的是ITS全部測(cè)試集,且本文方法也是在ITS基礎(chǔ)上進(jìn)行實(shí)現(xiàn)的,因此加入ASI前的漏洞檢測(cè)數(shù)據(jù)可以直接采信ITS的結(jié)果.

      采用ASI前后的漏洞檢測(cè)結(jié)果如表4所示.其中,前3列為選取的測(cè)試集信息,第5,6列為采信的ITS的實(shí)驗(yàn)結(jié)果,第7,8列為加入無(wú)害處理識(shí)別后的漏洞檢測(cè)結(jié)果.ASI生成檢測(cè)報(bào)告中包含可能引入用戶輸入的污點(diǎn)源變量所在位置,以及可能出現(xiàn)緩沖區(qū)溢出、命令注入的漏洞位置.本文對(duì)ASI生成的檢測(cè)報(bào)告逐一進(jìn)行人工審計(jì),采用與ITS相同的誤報(bào)判定方式,將從污點(diǎn)源到漏洞位置(匯聚點(diǎn))之間不存在可達(dá)路徑的漏洞報(bào)告標(biāo)識(shí)為誤報(bào).

      表4 漏洞檢測(cè)結(jié)果

      通過(guò)表4中的統(tǒng)計(jì)數(shù)據(jù)可以看出,加入基于無(wú)害處理識(shí)別的嵌入式設(shè)備漏洞檢測(cè)技術(shù)前,針對(duì)10款設(shè)備固件,系統(tǒng)累計(jì)報(bào)告了201個(gè)漏洞,其中59個(gè)經(jīng)人工分析確認(rèn)為誤報(bào),誤報(bào)率為29.35%((總結(jié)果-正確結(jié)果)/總結(jié)果).加入無(wú)害處理識(shí)別技術(shù)后,ASI累計(jì)報(bào)告了177個(gè)漏洞,其中35個(gè)經(jīng)人工分析確認(rèn)為誤報(bào),誤報(bào)率為19.77%.經(jīng)比較,ASI的誤報(bào)率相對(duì)于ITS降低了9.58%(從29.35%降低到19.77%).

      從實(shí)驗(yàn)數(shù)據(jù)可以看出,Netgear R8300,Tenda W20E等大部分設(shè)備固件在加入基于無(wú)害處理識(shí)別的嵌入式設(shè)備漏洞檢測(cè)技術(shù)后,報(bào)告的漏洞均有一定數(shù)量的減少,漏洞檢測(cè)結(jié)果的準(zhǔn)確性有所提高.但是對(duì)于D-Link DIR859和Tenda AC9固件,漏洞檢測(cè)結(jié)果和之前沒(méi)有變化.通過(guò)人工分析,由于該固件之前的誤報(bào)主要是由于將輸入進(jìn)行類(lèi)型轉(zhuǎn)換后,將字符串類(lèi)型轉(zhuǎn)為int類(lèi)型,導(dǎo)致漏洞無(wú)法觸發(fā),所以加入無(wú)害處理識(shí)別后并沒(méi)有影響系統(tǒng)對(duì)該固件漏洞檢測(cè)的準(zhǔn)確率.

      3.3 漏洞檢測(cè)性能分析

      表5統(tǒng)計(jì)了加入ASI技術(shù)之后,本文系統(tǒng)在表3所示固件測(cè)試集上的時(shí)間開(kāi)銷(xiāo).原有工作ITS在進(jìn)行性能分析時(shí),對(duì)嵌入式設(shè)備固件中的所有二進(jìn)制文件進(jìn)行了實(shí)驗(yàn)分析.與ITS不同的是,本文通過(guò)人工提取了可能會(huì)導(dǎo)致漏洞的二進(jìn)制程序進(jìn)行分析.可以看出,對(duì)于10款嵌入式設(shè)備固件,在加入ASI技術(shù)之前,本文系統(tǒng)的平均時(shí)間開(kāi)銷(xiāo)為36.05min,加入ASI技術(shù)之后,系統(tǒng)的平均時(shí)間開(kāi)銷(xiāo)為38.73min.即在加入ASI技術(shù)之后,本文系統(tǒng)的平均分析時(shí)間增加了2.68min,占原有系統(tǒng)總時(shí)間的7.43%.

      表5 漏洞檢測(cè)性能分析 min

      4 結(jié) 語(yǔ)

      本文通過(guò)分析嵌入式設(shè)備服務(wù)程序中基于路徑條件約束的無(wú)害處理以及基于函數(shù)的無(wú)害處理操作的代碼特征,實(shí)現(xiàn)了基于無(wú)害處理識(shí)別的嵌入式設(shè)備漏洞檢測(cè)方法ASI,通過(guò)對(duì)主流廠商的10款設(shè)備固件的實(shí)驗(yàn)結(jié)果顯示,相較于已有嵌入式設(shè)備漏洞檢測(cè)方法ITS,ASI的誤報(bào)率降低9.58%(從29.35%降低到19.77%),而檢測(cè)時(shí)間開(kāi)銷(xiāo)僅增加7.43%.同時(shí),獲取的變量關(guān)聯(lián)關(guān)系信息可以支持為嵌入式設(shè)備廠商提供漏洞修補(bǔ)[15]解決方案.

      猜你喜歡
      污點(diǎn)漏洞嵌入式
      漏洞
      基于代碼重寫(xiě)的動(dòng)態(tài)污點(diǎn)分析
      搭建基于Qt的嵌入式開(kāi)發(fā)平臺(tái)
      使用Lightroom污點(diǎn)去除工具清理照片中的瑕疵
      嵌入式軟PLC在電鍍生產(chǎn)流程控制系統(tǒng)中的應(yīng)用
      三明:“兩票制”堵住加價(jià)漏洞
      漏洞在哪兒
      高鐵急救應(yīng)補(bǔ)齊三漏洞
      我國(guó)“污點(diǎn)證人”刑事責(zé)任豁免制度的構(gòu)建
      Altera加入嵌入式視覺(jué)聯(lián)盟
      通化市| 林口县| 会理县| 侯马市| 文昌市| 林口县| 阿城市| 平武县| 稷山县| 荆州市| 景德镇市| 侯马市| 德州市| 静安区| 济阳县| 三亚市| 磐石市| 西乌珠穆沁旗| 渝中区| 虞城县| 永城市| 页游| 合川市| 鹿邑县| 高雄县| 滦南县| 赤壁市| 武定县| 沂南县| 前郭尔| 天镇县| 湟中县| 交口县| 安远县| 张北县| 余江县| 瑞昌市| 开江县| 峨眉山市| 手游| 常德市|