• 
    

    
    

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

      緩沖區(qū)溢出漏洞分析及檢測技術(shù)進展

      2020-07-04 02:13:18賈疏桐桂燦蘇星宇
      電腦知識與技術(shù) 2020年13期
      關(guān)鍵詞:緩沖區(qū)

      賈疏桐 桂燦 蘇星宇

      摘要:如今,信息技術(shù)高速發(fā)展,各式各樣的軟件如雨后春筍一般出現(xiàn)。然而,由于軟件自身存在的漏洞而被攻擊的事件也屢見不鮮,緩沖區(qū)溢出漏洞便是其中的代表之一。伴隨信息安全技術(shù)的不斷發(fā)展,緩沖區(qū)溢出漏洞的檢測技術(shù)也在不斷發(fā)展。該文將首先介紹有關(guān)緩沖區(qū)及緩沖區(qū)溢出漏洞的知識,再闡述近幾年關(guān)于緩沖區(qū)溢出漏洞檢測的新技術(shù),最后是對關(guān)于緩沖區(qū)未來可能發(fā)展地探討,以期讀者可以對緩沖區(qū)溢出漏洞及其相關(guān)檢測技術(shù)有大致的認識。

      關(guān)鍵詞:緩沖區(qū);緩沖區(qū)溢出漏洞;緩沖區(qū)漏洞檢測技術(shù)

      中圖分類號:TP311 文獻標(biāo)識碼:A

      文章編號:1009-3044(2020)13-0057-03

      1緒言

      今天的大多數(shù)計算機系統(tǒng)都給予馮·諾依曼體系結(jié)構(gòu),其中一個重要思想就是將數(shù)據(jù)和程序均放到同樣的存儲空間中,使得攻擊者很容易利用緩沖區(qū)溢出漏洞進行攻擊。而且C/c++迄今為止仍然是最流行的語言,將其作為開發(fā)語言的項目和軟件也不計其數(shù)。然而C/C++提供了大量的封裝函數(shù)使得技術(shù)人員可以直接或間接的手動操作和分配內(nèi)存,這也恰恰造成了緩沖區(qū)溢出漏洞的產(chǎn)生。一旦數(shù)據(jù)的移動,API的調(diào)用缺少所需的邊界檢測或輸入長度驗證時就極易發(fā)生緩沖區(qū)溢出漏洞,輕則會使編輯器拋出異常,程序無法正常執(zhí)行,重則會造成內(nèi)存泄漏,數(shù)據(jù)被惡意篡改,甚至被黑客利用以達到不法目的。

      根據(jù)CNNVD 2020年以來每周的漏洞報告文檔中,緩沖區(qū)溢出漏洞的所占總漏洞數(shù)量的百分比一直高居前五。360CERT發(fā)布2017年漏洞態(tài)勢一回顧及分析中緩沖區(qū)溢出漏洞所占的比例高達16.66%。在中國科學(xué)院大學(xué)國家計算機網(wǎng)絡(luò)入侵防范中心發(fā)布的2019年1月十大重要安全漏洞分析中將緩沖區(qū)溢出漏洞作為第九名,在2019年2月十大重要安全漏洞分析也有多個漏洞問題涉及緩沖區(qū)。因此本文針對近幾年出現(xiàn)的緩沖區(qū)溢出漏洞技術(shù)進行整理、分析、探討和總結(jié),以期幫助科技人員進行更好的研究及應(yīng)用。

      本文將首先介紹有關(guān)緩沖區(qū)溢出漏洞的基本知識,幫助讀者建立一個基本的知識框架,其次將近幾年新出現(xiàn)的緩沖區(qū)漏洞溢出檢測技術(shù)進行分類并在分類的基礎(chǔ)上對一些典型或新出現(xiàn)的技術(shù)進行闡述,最后對論文進行總結(jié),并提出未來可能的熱點研究方向。

      2緩沖區(qū)溢出漏洞的基礎(chǔ)知識

      2.1棧緩沖區(qū)溢出

      緩沖區(qū)溢出是指當(dāng)計算機要填充的數(shù)據(jù)長度超過緩沖區(qū)自身所規(guī)定容量,溢出的數(shù)據(jù)覆蓋了合法數(shù)據(jù)或影響到了指令的執(zhí)行。在實際情況下,絕大多數(shù)程序都會假設(shè)所提供的數(shù)據(jù)長度小于等于所分配的緩沖區(qū)空間,且一般不會主動檢測邊界條件。這就為緩沖區(qū)溢出漏洞的產(chǎn)生埋下了伏筆。操作系統(tǒng)使用的緩沖區(qū),主要為堆和堆棧,緩沖區(qū)漏洞溢出最致命的即“堆和堆棧溢出”。

      堆棧(簡稱棧)是操作系統(tǒng)提供的一種先進后出的數(shù)據(jù)結(jié)構(gòu),操作系統(tǒng)一般提供了兩個專門的寄存器來存儲棧頂指針和棧底指針,其中ESP寄存器存儲指向棧頂?shù)闹羔?,EBP寄存器存儲指向棧底的指針,EIP寄存器存儲了下一條指令執(zhí)行的地址。棧緩沖區(qū)溢出的本質(zhì)即某個棧幀發(fā)生溢出,且溢出的內(nèi)容覆蓋了EIP寄存器的內(nèi)容,改變了原本下一條指令的地址,從而導(dǎo)致程序無法正常執(zhí)行或被黑客利用執(zhí)行惡意代碼m。因此棧溢出多發(fā)生在程序調(diào)用或?qū)彌_區(qū)操作的情況下。

      2.2堆緩沖區(qū)溢出

      堆也是一種基本的數(shù)據(jù)結(jié)構(gòu),它是可由程序員自行分配,由低地址向高地址增長的不連續(xù)的線性內(nèi)存區(qū)域。堆溢出是指程序向某個堆塊中寫入的字節(jié)數(shù)超過了堆塊本身可使用的字節(jié)數(shù)(之所以是可使用而不是用戶申請的字節(jié)數(shù),是因為系統(tǒng)會對用戶所申請的字節(jié)數(shù)進行調(diào)整,這也導(dǎo)致可利用的字節(jié)數(shù)都不小于用戶申請的字節(jié)數(shù)),因而導(dǎo)致了數(shù)據(jù)溢出,并覆蓋到物理相鄰的高地址的下一個堆塊。堆緩沖區(qū)溢出并不像棧緩沖區(qū)溢出一樣可以控制EIP,其精髓為精心構(gòu)造的數(shù)據(jù)去溢出下一個塊的塊首,改寫塊首中的前向指針和后向指針,從而訪問任意內(nèi)存區(qū)域。

      3靜態(tài)檢測技術(shù)

      緩沖區(qū)溢出漏洞一直是計算機研究領(lǐng)域的一個活躍的研究主題,關(guān)于其檢測技術(shù)亦不斷更新。靜態(tài)檢測技術(shù)擁有無須運行程序,消耗資源少,直接分析程序源碼并定準(zhǔn)問題所在位置,從而便于程序人員進行修改等優(yōu)勢。然而由于缺乏程序運行所能提供的信息,所以如何減少靜態(tài)檢測的誤報率和漏報率一直是評判靜態(tài)檢測技術(shù)的兩個重要指標(biāo)嘲。除此之外,吞吐量也是檢驗靜態(tài)檢測技術(shù)是否實時、高效的標(biāo)準(zhǔn)之一。

      Peng Luo等人通過研究發(fā)現(xiàn)有1/3的緩沖區(qū)溢出漏洞是有循環(huán)引起的,因此他們使用CIL實現(xiàn)了DBloop用來定位可以引起緩沖區(qū)溢出的循環(huán)。DBloop主要使用數(shù)組和指針分析循環(huán)和數(shù)據(jù)移動的相應(yīng)操作,以定位循環(huán)緩沖區(qū)溢出(BoF)。DBloop的關(guān)鍵步驟是首先獲取緩沖區(qū)的大小,例如數(shù)組或分配的堆內(nèi)存塊的大小,然后檢查目標(biāo)循環(huán)的數(shù)據(jù)移動是否超出了緩沖區(qū)的范圍。具體來說,DBloop包含四個步驟來本地化循環(huán)BoF:(1)使用數(shù)組或指針識別包含數(shù)據(jù)移動操作的可疑循環(huán)。(2)對目標(biāo)循環(huán)應(yīng)用代碼切片,并根據(jù)循環(huán)是否嵌套以及循環(huán)是否包含路徑對目標(biāo)循環(huán)進行分類。(3)執(zhí)行可追蹤性分析以獲得緩沖區(qū)的界限。使用約束求解標(biāo)識BoF。他們使用DBloop分析從60個應(yīng)用程序中收集到的68個漏洞并與商業(yè)工具Checkmarx和開放源代碼工具Splint分析出的結(jié)果進行對比,DBloop成功定位了由循環(huán)引起的57個BoF而Checkmarx和SDlint僅分別檢測到4個或3個。

      Lili xu等人則將研究重點放在整數(shù)溢出導(dǎo)致到緩沖區(qū)溢出(IO2801)漏洞。他們認為盡管已經(jīng)進行了許多工作來減輕整數(shù)溢出,但是現(xiàn)有工具要么誤報率很高,要么吞吐量很低。為了解決這些問題,他們提出了一種新的靜態(tài)分析框架(LAID)。它首先利用過程間數(shù)據(jù)流分析和污點分析來準(zhǔn)確識別潛在的102BO漏洞。然后,它使用輕量級方法進一步濾除誤報。具體來說,它生成表示可以觸發(fā)潛在102BO漏洞的條件的約束((int)check+1>INT_MAXAtrue∧(check==(inI)check)),并將約束反饋到SMT求解器以決定其可滿足性。他們已經(jīng)實現(xiàn)了基于LLVM的原型系統(tǒng)LAID,并在NIST的SAMATE Juliet測試套件的228個程序和現(xiàn)實世界中的6個已知的102BO漏洞中進行了評估。實驗結(jié)果表明,他們的提出的新的靜態(tài)框架可以有效地檢測所有已知的102BO漏洞。

      周艷艷職極借鑒機器學(xué)習(xí)的思想和方法,并采用隨機森林算法構(gòu)建多顆決策樹對樣本進行訓(xùn)練并預(yù)測。并針對決策樹算法的屬性分裂節(jié)點過程,將C4.5和分類回歸樹(CART)算法中選擇最優(yōu)屬性的信息熵理論計算方式進行線性組合,從而形成一個最佳的計算最優(yōu)屬性的公式,進而更好的選擇分類屬性,構(gòu)造決策樹。最終通過對決策樹采用多數(shù)投票機制對數(shù)據(jù)集進行分類,在綜合考慮每個決策樹的權(quán)重因子的基礎(chǔ)上,得出最佳的分類結(jié)果。測試結(jié)果表明改進后的隨機森林算法HWRF在分類精度、召回率、F度量值、AUC方面明顯優(yōu)于RF算法,CART算法和NB算法。HWRF算法能夠有效地檢測出緩沖區(qū)溢出攻擊,并且其識別的緩沖區(qū)溢出攻擊重要變量也能提高RF算法和NB算法的檢測性能。但在仿真實驗部分,HWRF模型的創(chuàng)建時間略高于RF模型。

      4動態(tài)測試技術(shù)

      動態(tài)測試則類似于黑盒測試,依賴于充足的測試樣例,從而檢驗程序的實際運行記過與預(yù)期結(jié)果是否一致的分析方法??偟膩碇v一些動態(tài)測試技術(shù)通過提供大量生成的輸入來識別BoF,而另一些動態(tài)技術(shù)則通過將特殊代碼插入程序或結(jié)合上述兩種方法來識別BoFVl。相比于靜態(tài)檢測技術(shù),動態(tài)檢測技術(shù)的優(yōu)勢在于誤報率較低,也可以得知程序的實際運行效果。但缺點是難以生成覆蓋全面的測試樣例,且消耗資源較多,漏報率較高。

      Rui Zhang等人針對衛(wèi)星軟件中堆棧溢出的普遍問題,對RTEMS操作系統(tǒng)進行了改進,以支持實時堆棧使用深度和溢出檢測。以基于TSC690F處理器的板載軟件為例,通過使用處理器提供的內(nèi)存訪問保護機制為每個線程堆棧設(shè)置可訪問區(qū)域和不可訪問區(qū)域。改進的RTEMS通過上下文切換在線程之間共享訪問保護機制。陷阱處理程序旨在接管寫保護錯誤陷阱,計算堆棧使用深度并實時監(jiān)視堆棧溢出。核心模塊性能測試和堆棧檢測實例驗證表明,改進的RTEMS對軟件性能的影響很小,因此軟件可以在線和實時檢測堆棧深度。通過使用這種方法,即使在堆棧溢出而不是失控崩潰的情況下,該軟件仍然是可管理的,并且提高了軟件的可靠性。

      具體的檢測原理是:在RTEMS線程控制塊(TCB)中增加訪問保護寄存器作為變量的定義,即擴展線程上下文的定義,使單個線程在運行時可以獨占地使用處理器的訪問保護寄存器。不同的線程通過切換線程上下文共享處理器的訪問保護機制。在初始化期間,線程堆棧分為初始可訪問和不可訪問區(qū)域。隨著堆棧的增長,當(dāng)堆棧超過初始可訪問區(qū)域并試圖將數(shù)據(jù)寫入不可訪問區(qū)域時,處理器將立即產(chǎn)生一個陷阱(type 0x9)。通過掛接相應(yīng)的陷阱處理程序,軟件重置線程不可訪問的堆棧區(qū)域,以擴展可訪問區(qū)域。該方法能夠滿足堆棧的增長,保證軟件的正常運行。該軟件可以根據(jù)可達區(qū)域的擴展計算出當(dāng)前堆棧的深度。隨著堆棧的增長,當(dāng)軟件觸發(fā)陷阱并發(fā)現(xiàn)不可訪問區(qū)域小于或等于1k字節(jié)時,假設(shè)線程堆棧即將溢出。此時,軟件可以設(shè)計從堆棧溢出的特定恢復(fù)措施,例如線程重新啟動、軟件重置、切換到備份計算機工作等。

      5未來研究熱點展望

      本文認為未來針對緩沖區(qū)溢出漏洞檢測技術(shù)的主要熱點應(yīng)在于以下三個方向:

      (1)結(jié)合機器學(xué)習(xí)思想。機器學(xué)習(xí)的主要思想在于通過不斷的訓(xùn)練,提取出訓(xùn)練集的特征,并達到可以精準(zhǔn)預(yù)測的目的。而緩沖區(qū)溢出漏洞確有規(guī)律可循,可以將代碼根據(jù)數(shù)組的定義與預(yù)算,指針的聲明,函數(shù)的調(diào)用等將代碼分解成若干片段,利用機器學(xué)習(xí)并結(jié)合上下文語義進行訓(xùn)練,減少靜態(tài)測試中的漏報和誤報問題。

      (2)將高級語言轉(zhuǎn)化為底層語言如匯編或二進制代碼。根據(jù)以往的文獻來看針對緩沖區(qū)漏洞檢測的語言多位C/C++等高級語言,對于匯編或二進制代碼檢測技術(shù)卻少之又少。然而作為更適合與計算機使用的語言,如果有針對性的檢測技術(shù),應(yīng)該能極大地減少誤報率和漏報率。

      (3)綜合運用各項技術(shù)。多一重技術(shù)就等于多一門保險,根據(jù)前文的論述可知無論是靜態(tài)檢測技術(shù)和動態(tài)檢測技術(shù)都有其本身的優(yōu)勢和缺點,因此如果能綜合利用靜態(tài)檢測技術(shù)、動態(tài)檢測和本文未涉及的漏洞修復(fù)技術(shù)等將更加有利于防范緩沖區(qū)溢出漏洞,保障程序的正常運行。

      猜你喜歡
      緩沖區(qū)
      人生需要緩沖區(qū)
      嵌入式系統(tǒng)環(huán)形緩沖區(qū)快速讀寫方法的設(shè)計與實現(xiàn)
      面向數(shù)據(jù)中心網(wǎng)絡(luò)的緩沖區(qū)優(yōu)化策略研究
      基于網(wǎng)絡(luò)聚類與自適應(yīng)概率的數(shù)據(jù)庫緩沖區(qū)替換*
      嫩江重要省界緩沖區(qū)水質(zhì)單因子評價法研究
      一類裝配支線緩沖區(qū)配置的兩階段求解方法研究
      柔性裝配線緩沖區(qū)設(shè)計
      關(guān)鍵鏈技術(shù)緩沖區(qū)的確定方法研究
      初涉緩沖區(qū)
      時代人物(2014年10期)2015-01-28 14:08:10
      地理信息系統(tǒng)繪圖緩沖區(qū)技術(shù)設(shè)計與實現(xiàn)
      城固县| 汤原县| 峨眉山市| 恭城| 洛川县| 公主岭市| 平阳县| 寿宁县| 衡阳县| 安吉县| 鄱阳县| 钟祥市| 五华县| 襄樊市| 泗水县| 青岛市| 济宁市| 芦山县| 平乐县| 驻马店市| 巨野县| 江都市| 锡林浩特市| 勐海县| 许昌县| 义乌市| 南开区| 营山县| 繁昌县| 车致| 武宣县| 临江市| 叙永县| 淮安市| 刚察县| 霍山县| 金沙县| 上高县| 基隆市| 乐安县| 普安县|