• 
    

    
    

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

      淺談緩沖區(qū)溢出

      2009-09-29 08:58:18于棣維劉永隆
      新媒體研究 2009年14期
      關鍵詞:緩沖區(qū)安全性

      于棣維 劉永隆

      [摘要]詳細闡述常見的緩沖區(qū)溢出。針對這些緩沖區(qū)溢出提出相應的防范策略,以此來增強系統(tǒng)的安全性。

      [關鍵詞]緩沖區(qū) 溢出 安全性

      中圖分類號:TP3文獻標識碼:A 文章編號:1671-7597(2009)0720067-01

      一、緩沖區(qū)溢出概述

      (一)緩沖區(qū)溢出的概念。緩沖區(qū)是內存中存放數(shù)據(jù)的地方,一般來說,它是“包含相同數(shù)據(jù)類型的實例的一個連續(xù)計算機內存塊”,它保存了給定類型的數(shù)據(jù)。在C和C++中,緩沖區(qū)通常是使用數(shù)組和諸如malloc()和new()這樣的內存分配例程來實現(xiàn)的。最常見的緩沖區(qū)種類是簡單的字符數(shù)組。

      緩沖區(qū)溢出指的是一種常見且危害很大的系統(tǒng)攻擊手段,通過向程序的緩沖區(qū)寫入超出其長度的內容,造成緩沖區(qū)的溢出,從而破壞程序的堆棧,使程序轉而執(zhí)行其他的指令,以達到攻擊的目的。

      (二)緩沖區(qū)溢出攻擊原理。當正常的使用者操作程序的時候,所進行的操作一般不會超出程序的運行范圍,數(shù)據(jù)被添加到分配給該緩沖區(qū)的內存塊之外,會發(fā)生緩沖區(qū)溢出,這時候就會出現(xiàn)數(shù)據(jù)泄漏或侵占了其它的數(shù)據(jù)空間。

      緩沖區(qū)溢出的攻擊原理就是越過緩沖區(qū)長度界限向程序中輸入超出其常規(guī)長度的內容,造成緩沖區(qū)的溢出從而破壞程序的堆棧,使程序運行出現(xiàn)特殊的問題轉而執(zhí)行其它指令。

      一般來說,單單的緩沖區(qū)溢出,并不會產(chǎn)生安全問題,如果將溢出送到能夠以root權限或其它超級權限運行命令的區(qū)域去執(zhí)行某些代碼或者運行一個shell的時候,該程序就是以超級用戶的權限控制了計算機。

      (三)緩沖區(qū)溢出分類。緩沖區(qū)溢出,主要是由于不良的編程習慣引起的。CC++語言之所以長盛不衰,而且應用范圍非常廣,主要原因在于它給編程人員編程提供了更大的靈活性,具有高效、快速的特點。而與此同時它也提供了很多容易使人出現(xiàn)編程漏洞的方法,比如gets()、scanf()、sprintf()等等,缺乏安全有效、簡單易行的字符串處理后果,還忽略了錯誤的后果。常見危險的CC++語言的API及其說明。一般來說,可以將緩沖區(qū)溢出分為以下幾類:棧溢出、堆溢出、數(shù)組索引錯誤、格式化字符串bug、以及Unicode(統(tǒng)一字符串編碼標準)和ANSI(美國國家標準協(xié)會)之間緩沖區(qū)大小不匹配等。1.棧溢出。如果向一個在棧上聲明的緩沖區(qū)中復制數(shù)據(jù),但是復制的數(shù)據(jù)量比緩沖區(qū)大的時候,就會發(fā)生靜態(tài)緩沖區(qū)溢出(詳例見程序3.2)。在棧上聲明的各種變量的位置就緊靠著函數(shù)調用程序的返回地址,通常出現(xiàn)的錯誤就是用戶輸入的數(shù)據(jù)沒有經(jīng)過驗證,就傳遞給類似strcpy()這樣的函數(shù),產(chǎn)生的后果就是調用函數(shù)的返回地址將被攻擊者選擇的某個地址覆蓋。在一個常規(guī)攻擊下,攻擊者可以通過一個緩沖區(qū)溢出的應用程序執(zhí)行對他們有益的操作,比如用戶輸入的內容并不是沒有經(jīng)過驗證,或者僅僅幾個有限的字符才在緩沖區(qū)中適用的情況。棧溢出相對來說非常簡單,一個簡單的程序員就可以實現(xiàn),在真正的攻擊中,只要將一組取得shell權限的代碼轉化為機器碼,然后放在相應的位置,就可以對被攻擊者造成巨大的破壞。2.堆溢出。堆(HEAP)是指通過malloc()或new動態(tài)分配的內存。在很多的操作系統(tǒng)里,大部分內存區(qū)是由內核一級分配的,而heap段是由應用程序分配的,在編譯的時候被初始化。BSS是包含未被初始化的數(shù)據(jù),在程序運行的時候才被分配,在被寫入數(shù)據(jù)前,它可以被看作保持全零。堆溢出的思路很簡單,覆蓋重要的變量以達到自己的目的。而在實際操作的時候,這顯得比較困難,尤其是源代碼不可見的時候。第一,你必須確定哪個變量是重要的變量;第二,你必須找到一個內存地址比目標變量低的溢出點;第三,在特定目的下,你還必須讓在為了覆蓋目標變量而在中途覆蓋了其他變量之后,程序依然能運行下去。3.數(shù)據(jù)索引錯誤。數(shù)組索引比起緩沖區(qū)溢出來說,出現(xiàn)的比較少一些,其實,字符串也是一個字符數(shù)組,既然字符串能寫入任意的位置,數(shù)組也是一樣。對于32位操作系統(tǒng)來說,0x100000000和0x00000000其實是同樣一個值,所以,這就使得數(shù)據(jù)索引的值可能低于數(shù)組的基址。某著名的的漏洞就與截斷誤差有關,在一個UNIX操作系統(tǒng)上,root(超級用戶)賬戶的用戶ID為0。網(wǎng)絡文件系統(tǒng)中的deamon(一種后臺服務)將接受一個帶符號整數(shù)的用戶ID,并且檢查這個數(shù)值是否為0,然后將這個值截取為一個無符號短整形(unsigned short)。這個缺陷允許用戶輸入0x10000的非0值,但是截斷以后,就變成了0x0000,那么操作系統(tǒng)就會給它超級用戶的權限。4.格式化字符串漏洞。這個漏洞相對來說不算大,而且在windows系統(tǒng)中很難發(fā)現(xiàn)這類漏洞,在早期的UNIX或類UNIX系統(tǒng)的應用程序中,發(fā)現(xiàn)了大量的格式化字符串bug。如果關注安全性較差的郵件列表,就會發(fā)現(xiàn)格式化字符串的bug了。比如說printf(input);就存在漏洞,該方法也許不知道如果格式化字符串。當然,使用printf(“%s”,input)就不存在漏洞了。這種漏洞很容易避免,只要制定相應的格式化就可以了。

      二、緩沖區(qū)溢出防御

      根據(jù)緩沖區(qū)溢出的原理,針對攻擊者的攻擊目標可作相應的保護,從而防御可能的緩沖區(qū)溢出攻擊。目前針對緩沖區(qū)溢出主要有四種防御措施。

      (一)編寫正確安全的程序代碼。針對實施攻擊的對象常常是某個系統(tǒng)中的程序,可采用安全編程的方法,編寫正確安全的代碼從而防止緩沖區(qū)溢出。主要有盡可能限制擁有系統(tǒng)特權的程序盡可能采用安全的函數(shù)和用相應的工具和技術對原碼中易產(chǎn)生漏洞的庫調用進行檢查等。

      (二)對數(shù)組邊界實施檢查。緩沖區(qū)溢出攻擊的各種方法都是利用了C語言中的無邊界檢查的漏洞,因此對于C中的數(shù)組邊界實施檢查以防止數(shù)組的邊界溢出,即可杜絕緩沖區(qū)溢出的問題。

      (三)對程序指針的完整性實施檢查。程序指針的完整性檢查是指對程序的引用指針在引用時實施檢查,以檢測其是否改變。即使攻擊者成功地改變了程序指針,但由于系統(tǒng)檢測到程序指針的改變,這一程序指針也不會被引用。

      (四)對操作系統(tǒng)內核實行分段限制采用非執(zhí)行緩沖區(qū)。這種方法通過修改操作系統(tǒng)的內核分段限制,使其不覆蓋實際的??臻g,除去堆棧執(zhí)行的特權,從而使攻擊代碼無法執(zhí)行。

      三、總結

      緩沖區(qū)溢出的攻擊與防御的技術正在日新月異的發(fā)展,各種網(wǎng)絡滲透技術不斷出現(xiàn),而隨著人們安全意識的加強,漏洞的利用越來越困難,要求的技術越來越高級,本文在這方面做了一些工作,但還有很多其他相關技術需要研究,現(xiàn)在Windows的內核溢出已經(jīng)被發(fā)現(xiàn),本文在這方面也沒有談及,希望在以后的工作中,在這些方面都有進一步的研究。緩沖區(qū)的防御現(xiàn)在是一個大的難題,希望在以后的工作中能有所突破。

      參考文獻:

      [1](美)JAMES C.FOSTER,《緩沖區(qū)溢出攻擊——檢測、剖析與預防》,清華大學出版社,2006.12.

      [2]王清,《0 day安全:軟件漏洞分析技術》,電子工業(yè)出版社,2008.4.

      猜你喜歡
      緩沖區(qū)安全性
      嵌入式系統(tǒng)環(huán)形緩沖區(qū)快速讀寫方法的設計與實現(xiàn)
      面向數(shù)據(jù)中心網(wǎng)絡的緩沖區(qū)優(yōu)化策略研究
      兩款輸液泵的輸血安全性評估
      既有建筑工程質量安全性的思考
      某既有隔震建筑檢測與安全性鑒定
      米氮平治療老年失眠伴抑郁癥的療效及安全性
      嫩江重要省界緩沖區(qū)水質單因子評價法研究
      ApplePay橫空出世 安全性遭受質疑 拿什么保護你,我的蘋果支付?
      關鍵鏈技術緩沖區(qū)的確定方法研究
      Imagination發(fā)布可實現(xiàn)下一代SoC安全性的OmniShield技術
      枞阳县| 绥阳县| 惠东县| 开封县| 武山县| 叙永县| 分宜县| 绥中县| 象州县| 荥经县| 习水县| 阳高县| 科技| 汽车| 青岛市| 柳林县| 尖扎县| 泉州市| 保亭| 淅川县| 望江县| 蒲城县| 穆棱市| 梧州市| 太和县| 怀集县| 永清县| 上蔡县| 郯城县| 濮阳县| 金堂县| 通江县| 靖远县| 韶关市| 紫云| 安国市| 团风县| 宝山区| 九龙坡区| 呼伦贝尔市| 西吉县|