• 
    

    
    

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

      ?

      一種基于靜態(tài)分析的漏洞分類方案

      2018-03-07 01:31:18劉嘉熹
      關(guān)鍵詞:調(diào)用漏洞程序

      ◆劉嘉熹

      ?

      一種基于靜態(tài)分析的漏洞分類方案

      ◆劉嘉熹

      (云南大學軟件學院 云南 650500)

      本文通過對漏洞挖掘技術(shù)的發(fā)展現(xiàn)狀進行分析和研究,在對大量簡單程序進行漏洞分析和對前人提出的漏洞挖掘軟件的學習基礎(chǔ)上,提出了一種通過IDA反匯編,進行靜態(tài)分析的漏洞分類方案。

      漏洞挖掘;分類;靜態(tài)分析;IDA

      0 引言

      在信息技術(shù)發(fā)展的歷史上,漏洞一直是難以逃避的話題。隨著互聯(lián)網(wǎng)的普及,在越來越多的人接觸到計算機科學技術(shù)的同時,基于現(xiàn)代操作系統(tǒng)的技術(shù)也使漏洞對于用戶的影響變得越來越大。當系統(tǒng)漏洞被黑客利用時,用戶的個人信息和財產(chǎn)安全會受到不同程度的潛在威脅。2018年初,兩組新型CPU漏洞CVE-2017-5754-Meltdown和CVE-2017-5753/CVE-2017-5715-Spectre被公開,使得用戶本地操作系統(tǒng)底層的信息及用戶的賬號、密碼、郵箱等個人隱私信息都面臨被泄露的風險[1]。

      漏洞的存在不僅給企業(yè)帶來了巨大的損失,也使用戶的個人設(shè)備遭到入侵和控制的風險大大增加。因此,在信息安全領(lǐng)域,漏洞的挖掘和修復(fù)一直是備受關(guān)注的議題。一般情況下安全人員會使用靜態(tài)和動態(tài)兩種漏洞檢測方式,其中靜態(tài)檢測主要是依靠安全人員的經(jīng)驗,在沒有源代碼的情況下,首先對存在漏洞的程序進行反匯編處理,通過對代碼的分析發(fā)現(xiàn)漏洞,這種基于經(jīng)驗的處理方式以及大量的重復(fù)工作與漏洞數(shù)目與日俱增的現(xiàn)狀并不相符。因此,本文提出了一種基于靜態(tài)分析的漏洞分類方案。

      1 漏洞的一般分類

      對快速大量的漏洞挖掘的需求催生了漏洞自動化挖掘技術(shù),這也是漏洞挖掘分類方案的一個重要的應(yīng)用方向。在漏洞自動化挖掘發(fā)展的過程中,Automatic Exploit Generation(AEG)[2]首先提出了自動化漏洞挖掘的方法。近年來,越來越多的研究人員為漏洞的自動化挖掘提出了改進方案,在漏洞利用自動化的發(fā)展過程中,為了提高漏洞挖掘效率,開發(fā)人員在棧緩沖區(qū)溢出漏洞,堆緩沖區(qū)溢出漏洞,格式化字符串漏洞,整數(shù)溢出漏洞四種類型的基礎(chǔ)上對漏洞分類進行了嘗試。如在360冰刃實驗室的科研成果Digtool[3]中,作者把漏洞分為:

      (1)OOB越界訪問漏洞。

      (2)UAF釋放后使用漏洞。

      (3)Time-Of-Check-To-Time-Of-Use(TOCTTOU)漏洞。

      (4)參數(shù)未檢查漏洞。

      (5)信息泄露。

      (6)競爭條件型漏洞。這里指多線程訪問共享內(nèi)存,而最后的結(jié)果取決于線程運行的精確時導(dǎo)致的錯誤[4]。

      Digtool軟件的分類較之以往的分類方案更加細化,有利于直接根據(jù)最顯著特點找到漏洞。由此可見,根據(jù)漏洞的特點對漏洞進行分類的方式可以提高漏洞查找的效率,減少漏洞自動化挖掘的誤報率。

      2 漏洞的三種新的分類方案

      基于對目前漏洞自動化挖掘過程中對漏洞分類方案的分析,本文提出了一種新的分類方案,使用該方案對使用IDA反匯編后的程序進行分析,為自動化漏洞挖掘程序的編寫提供了一種新的分類思路。

      2.1 定位關(guān)鍵字段

      在對存在漏洞的程序或文件進行分析時,為了拿到shell,在一些情況下,可以使用system()函數(shù)執(zhí)行指定的字符串的內(nèi)容獲得目標主機的shell。因此在沒有程序源碼的條件下,使用IDA對程序進行反匯編,直接進行字符串搜索即可查找程序中是否存在system()函數(shù)的調(diào)用,若程序中調(diào)用了system()函數(shù),則通過對程序的邏輯分析,找到調(diào)用system()的子函數(shù)的地址,利用程序中的漏洞劫持程序流使程序執(zhí)行位置定位到調(diào)用system()的子函數(shù)處,從而獲得目標主機的shell。該方式可以很快定位到shell需要執(zhí)行的子函數(shù)的地址,從而利用?;蚨岩绯雎┒唇俪殖绦蚩刂屏鞯侥繕说刂罚瑘?zhí)行對應(yīng)的子函數(shù)獲得shell。

      其基本邏輯如下:

      If(”system()”exsit){

      search the address of the function calls “system()”;

      execute that function;

      get shell;

      }

      2.2 關(guān)鍵詞與緩沖區(qū)大小檢測

      2003年Cheers Halvar發(fā)布的開源的二進制漏洞分析工具BugScam可以基于IDA Pro的反匯編結(jié)果進行匯編級的漏洞分析。BugScam采用的全部是函數(shù)模型,它總共包含8個函數(shù)(strcpy、strcat、sprintf、lstrcpyA、lstrcatA、wsprintfA、sprintf.

      MultiByteToWideChar),通過對這些函數(shù)進行漏洞特征的提取進行函數(shù)特征匹配來分析文件中可能出現(xiàn)漏洞的位置[5]。

      BugScam是一個輕量級的漏洞檢測工具,用于較簡單模式的漏洞,它通過針對可能導(dǎo)致緩沖區(qū)溢出和格式化字符串的庫函數(shù)進行檢查來確定程序中是否存在安全隱患[6],本文在這個基礎(chǔ)上,又提出了結(jié)合參數(shù)和邏輯進行漏洞檢測的思路。

      本文提出的分類方法針對較簡單的程序模式,因此在進行分析和測試時使用的均為簡單的漏洞程序。對于堆溢出漏洞,BugScam工具中的函數(shù)模型沒有考慮到函數(shù)參數(shù)之外的size、length等與分配內(nèi)存大小有關(guān)的變量名,所以在對于邏輯性更強的堆溢出漏洞的檢測中沒有很好地表現(xiàn)。通過對大量程序的檢測和分析可以看出,對于堆溢出漏洞,在對危險函數(shù)進行建模檢測的基礎(chǔ)上再對size、length、strdup()函數(shù)等與內(nèi)存分配大小有關(guān)的變量及函數(shù)等進行檢測,會得到更好的漏洞點定位結(jié)果。如果程序中存在size或length等變量名,則檢查程序中是否把用戶自定義的變量大小與為其分配的緩沖區(qū)大小進行了比較,不存在比較則存在堆溢出漏洞。同時內(nèi)存分配函數(shù)如strdup()等則會由于64位下16位對齊的原因?qū)е露训刂返囊绯?。這一方案對堆溢出漏洞進行了檢測和定位,加快了漏洞檢測速度。

      2.3 函數(shù)出現(xiàn)次數(shù)與其參數(shù)

      結(jié)合庫函數(shù)在程序中的出現(xiàn)頻率和庫函數(shù)的實參進行漏洞檢測是另一種分類方案。

      同樣對存在漏洞的程序和文件進行分析和測試,在對漏洞程序的分析中,首先統(tǒng)計了使用IDA反匯編后程序中庫函數(shù)被調(diào)用的次數(shù),由于較為完善的程序中同一庫函數(shù)應(yīng)該不會大量存在漏洞,故而被調(diào)用次數(shù)少的函數(shù)存在問題導(dǎo)致程序漏洞的概率較大。因此完成調(diào)用次數(shù)統(tǒng)計之后把庫函數(shù)按照被調(diào)用次數(shù)升序排列,并檢查庫函數(shù)的參數(shù),比較實參中buf和size的大小,如果size數(shù)組的范圍超過了buf大小,則判斷該函數(shù)存在棧溢出漏洞。

      在統(tǒng)計中發(fā)現(xiàn),這種判斷方法對于棧溢出漏洞的判斷比較準確,非常適用于對棧溢出漏洞的分析。

      3 總結(jié)與展望

      本文提出了一種匯編級的漏洞靜態(tài)分類方案,并提出了一種提高漏洞挖掘效率,減少漏洞挖掘人員工作負擔的思路。未來將把這一分類方案通過代碼或軟件編寫實現(xiàn),使其具有實現(xiàn)意義,同時還要不斷完善程序,保證漏洞分類的正確率,減少誤報和漏報。

      [1]https://www.leiphone.com/news/201801/TIV0ThWMtqMsy.

      [2]Avgerinos T, Sang K C, Hao B L T, et al. AEG: Automatic Exploit Generation[J]. Internet Society, 2011.

      [3]Digtool: A Virtualization-Based Framework for Detecting Kernel Vulnerabilities. J Pan,G Yan,IS Lab,X Fan; USENIX Security 2017-VANCOUVER, BC, CANADA.

      [4]http://tech.ifeng.com/a/20170823/44667365_0.shtml.

      [5]劉波,文偉平,孫惠平等. ClearBug一種改進的自動化漏洞分析工具[J].信息網(wǎng)絡(luò)安全,2009.

      [6]http://www.nsfocus.net/index.php?act=magazine&do=view&mid=2096.

      猜你喜歡
      調(diào)用漏洞程序
      漏洞
      核電項目物項調(diào)用管理的應(yīng)用研究
      試論我國未決羈押程序的立法完善
      LabWindows/CVI下基于ActiveX技術(shù)的Excel調(diào)用
      “程序猿”的生活什么樣
      英國與歐盟正式啟動“離婚”程序程序
      基于系統(tǒng)調(diào)用的惡意軟件檢測技術(shù)研究
      三明:“兩票制”堵住加價漏洞
      漏洞在哪兒
      兒童時代(2016年6期)2016-09-14 04:54:43
      創(chuàng)衛(wèi)暗訪程序有待改進
      漳州市| 米泉市| 蒲城县| 海林市| 城口县| 平昌县| 巩义市| 彭山县| 闸北区| 廉江市| 射阳县| 莱西市| 黄骅市| 策勒县| 瑞金市| 霍山县| 固镇县| 勃利县| 周至县| 林口县| 夏河县| 舒兰市| 东乡县| 无锡市| 峨眉山市| 共和县| 肃宁县| 泗阳县| 萨迦县| 汾西县| 阳谷县| 高安市| 徐水县| 兴安盟| 清徐县| 临朐县| 大竹县| 华容县| 阿城市| 黄冈市| 卢湾区|