出版時(shí)間:2010-1 出版社:機(jī)械工業(yè)出版社 作者:西科德 頁(yè)數(shù):227
Tag標(biāo)簽:無(wú)
前言
1988年11月爆發(fā)的Morris蠕蟲(chóng)事件造成當(dāng)時(shí)全球十分之一的互聯(lián)網(wǎng)系統(tǒng)陷入癱瘓,作為對(duì)該事件的響應(yīng),當(dāng)月美國(guó)國(guó)防部高級(jí)研究計(jì)劃局(Defense Advanced Research Projects Agency,DARPA)成立了CERT協(xié)調(diào)中心(CERT Coordination Center,CERT/CC)。CERT/CC位于賓夕法尼亞州匹茲堡市的軟件工程研究院(Software Engineering Institute,SEI)內(nèi),這是一個(gè)由美國(guó)國(guó)防部發(fā)起的研發(fā)中心,受聯(lián)邦政府資助?! ERT/CC最初的工作重點(diǎn)是對(duì)各種網(wǎng)絡(luò)事件作出快速響應(yīng)和分析。這里所說(shuō)的事件既包括得逞的攻擊(如系統(tǒng)受損與拒絕服務(wù)等),也包括未得逞的攻擊企圖、探測(cè)和掃描。自1988年以來(lái),CERT/CC共已接到逾22 665個(gè)報(bào)告計(jì)算機(jī)安全事件或咨詢有關(guān)信息的熱線電話,已處理總共逾319 992起計(jì)算機(jī)安全事件,而且每年報(bào)告的事件數(shù)目呈持續(xù)增長(zhǎng)的態(tài)勢(shì)。 雖然對(duì)事件作出及時(shí)響應(yīng)必不可少,然而這還不足以保護(hù)互聯(lián)網(wǎng)和互聯(lián)的信息系統(tǒng)的安全。分析表明,大部分計(jì)算機(jī)安全事件是由于特洛伊木馬、社會(huì)工程學(xué)(social engineering)以及軟件漏洞利用(exploitation)所造成的,包括軟件缺陷、設(shè)計(jì)決策、配置決策以及非預(yù)期的系統(tǒng)間交互等。CERT/CC監(jiān)控漏洞信息的公共來(lái)源并經(jīng)常性地接到漏洞報(bào)告。自1995年以來(lái),CERT已經(jīng)收到超過(guò)16 726份漏洞報(bào)告。每當(dāng)收到一份報(bào)告,CERT/CC就會(huì)分析報(bào)告所述的可能的漏洞,并與軟件制造者協(xié)作,通知其產(chǎn)品中存在安全缺陷,促進(jìn)并追蹤其對(duì)問(wèn)題的響應(yīng)e?! 『褪录?bào)告相似,漏洞報(bào)告也以驚人的速度持續(xù)增長(zhǎng)@。雖然對(duì)漏洞的管理抑制了這一進(jìn)程的發(fā)展,然而對(duì)于解決互聯(lián)網(wǎng)和信息系統(tǒng)的安全問(wèn)題來(lái)說(shuō),這同樣遠(yuǎn)遠(yuǎn)不夠。為了解決日益增加的漏洞和事件問(wèn)題,必須采取相應(yīng)的措施:在源頭予以有效地控制它們,即必須在軟件的開(kāi)發(fā)階段和隨后的維護(hù)工作中就避免引入軟件漏洞。對(duì)現(xiàn)有漏洞的分析表明,大部分漏洞都是由少數(shù)根本原因所導(dǎo)致。本書(shū)的目標(biāo)就在于告訴開(kāi)發(fā)者有關(guān)這些根本原因的知識(shí),并介紹避免引入漏洞的措施。
內(nèi)容概要
本書(shū)是關(guān)于C和C++安全編碼的著作。本書(shū)介紹了C和C++程序中已經(jīng)導(dǎo)致危險(xiǎn)的、破壞性的基本編程錯(cuò)誤,包括在字符串、指針、動(dòng)態(tài)內(nèi)存管理、整數(shù)、格式化輸出、文件I/O等中的漏洞或缺陷。本書(shū)還提供了對(duì)這些編程錯(cuò)誤的深入剖析,并給出緩解策略,以減少或消除惡意利用漏洞的風(fēng)險(xiǎn)?! ”緯?shū)適合C/C++程序員、軟件安全工程師參考?! 《聪ぼ浖┒吹某梢颍熘?guī)避之道 通常而言,可利用的軟件漏洞都由本可避免的軟件缺陷所導(dǎo)致。在分析了過(guò)去10年中近18000份漏洞報(bào)告后,CERT/CC發(fā)現(xiàn)少量的根本原因?qū)е铝诉@些漏洞的產(chǎn)生。本書(shū)識(shí)別并解釋了這些原因,而且展示了預(yù)防利用漏洞的步驟。此外,本書(shū)還鼓勵(lì)程序員采用最佳安全實(shí)踐,并培養(yǎng)安全的開(kāi)發(fā)理念,這不但有助于保護(hù)軟件免遭當(dāng)前的攻擊,更可使它們免遭將來(lái)可能發(fā)生的攻擊?! 』贑ERT/CC的報(bào)告和總結(jié),Robert Seacord系統(tǒng)地揭示了最可能導(dǎo)致安全缺陷的編程錯(cuò)誤,展示了這些缺陷的利用方式,介紹了可能導(dǎo)致的后果,并提供了安全的替代做法?! ”緯?shū)特別討論了如下技術(shù)細(xì)節(jié): 改善任何C/C++應(yīng)用程序的整體安全性?! 〉钟貌话踩淖址僮鬟壿嫷木彌_區(qū)溢出和棧粉碎攻擊。 避免因?qū)?dòng)態(tài)內(nèi)存管理函數(shù)的不當(dāng)使用而導(dǎo)致的漏洞和安全缺陷?! ∠c整數(shù)相關(guān)的問(wèn)題,包括整數(shù)溢出、符號(hào)錯(cuò)誤以及截?cái)噱e(cuò)誤等。 正確地使用格式化輸出函數(shù),避免引入格式字符串漏洞?! ”苊釯/O漏洞,包括競(jìng)爭(zhēng)條件等。 本書(shū)提供了許多針對(duì)Windows和Linux的安全代碼、不安全代碼以及利用程序的例子。如果你負(fù)責(zé)創(chuàng)建安全的C或C++軟件,或者需要保持這類軟件的安全性,本書(shū)為你提供了詳盡的專家級(jí)協(xié)助。在這方面,其他任何書(shū)籍都望塵莫及。
作者簡(jiǎn)介
Robert C.Seaco rd是賓夕法尼亞州匹茲堡市SEI(SoftwareEngineering Institute,軟件工程研究院)的CERT/CC(CERT/Coordination Center,CERT協(xié)調(diào)中心)高級(jí)漏洞分析師。CERT/CC定期對(duì)軟件漏洞報(bào)告進(jìn)行分析,并且評(píng)估互聯(lián)網(wǎng)及其他關(guān)鍵的基礎(chǔ)設(shè)施可能遭受的風(fēng)險(xiǎn),此外
書(shū)籍目錄
譯者序序言前言 作譯者簡(jiǎn)介第1章 夾縫求生 1.1 衡量危險(xiǎn) 1.1.1 損失的現(xiàn)狀 1.1.2 威脅的來(lái)源 1.1.3 軟件安全 1.2 安全概念 1.2.1 安全策略 1.2.2 安全缺陷 1.2.3 漏洞 1.2.4 利用 1.2.5 緩解措施 1.3 C和C++ 1.3.1 C和C++簡(jiǎn)史 1.3.2 C存在的問(wèn)題 1.3.3 遺留代碼 1.3.4 其他語(yǔ)言 1.4 開(kāi)發(fā)平臺(tái) 1.4.1 操作系統(tǒng) 1.4.2 編譯器 1.5 本章小結(jié) 1.6 閱讀材料第2章 字符串 2.1 字符串特征 2.2 常見(jiàn)的字符串操作錯(cuò)誤 2.2.1 無(wú)界字符串復(fù)制 2.2.2 差一錯(cuò)誤 2.2.3 空結(jié)尾錯(cuò)誤 2.2.4 字符串截?cái)? 2.2.5 與函數(shù)無(wú)關(guān)的字符串錯(cuò)誤 2.3 字符串漏洞 2.3.1 安全缺陷 2.3.2 緩沖區(qū)溢出 2.4 進(jìn)程內(nèi)存組織 2.5 棧粉碎 2.6 代碼注入 2.7 弧注入 2.8 緩解策略 2.8.1 預(yù)防 2.8.2 字符串流 2.8.3 檢測(cè)和恢復(fù) 2.9 著名的漏洞 2.9.1 遠(yuǎn)程登錄 2.9.2 Kerberos 2.9.3 Metamail 2.10 本章小結(jié) 2.11 閱讀材料第3章 指針詭計(jì) 3.1 數(shù)據(jù)位置 3.2 函數(shù)指針 3.3 數(shù)據(jù)指針 3.4 修改指令指針 3.5 全局偏移表 3.6 dtors區(qū) 3.7 虛指針 3.8 atexit()和on exit()函數(shù) 3.9 longjmp()函數(shù) 3.10 異常處理 3.10.1 結(jié)構(gòu)化異常處理 3.10.2 系統(tǒng)默認(rèn)異常處理 3.11 緩解策略……第4章 動(dòng)態(tài)內(nèi)存管理第5章 整數(shù)安全第6章 格式化輸出 第7章 文件I/O第8章 推薦的實(shí)踐參考文獻(xiàn)縮略語(yǔ)
章節(jié)摘錄
2.3.2緩沖區(qū)溢出 當(dāng)向?yàn)槟程囟〝?shù)據(jù)結(jié)構(gòu)分配的內(nèi)存空間邊界之外寫入數(shù)據(jù)時(shí),即會(huì)發(fā)生緩沖區(qū)溢出。c和c++都容易發(fā)生緩沖區(qū)溢出問(wèn)題,因?yàn)檫@兩種語(yǔ)言具有以下共同之處:a)將字符串定義為以空字符結(jié)尾的字符數(shù)組;b)未進(jìn)行隱式的邊界檢查;c)提供了未強(qiáng)制性邊界檢查的標(biāo)準(zhǔn)字符串函數(shù)調(diào)用?! ∪Q于內(nèi)存的位置以及溢出的規(guī)模,緩沖區(qū)溢出可能不會(huì)被偵測(cè)到,但可能會(huì)破壞數(shù)據(jù),導(dǎo)致程序出現(xiàn)奇怪的行為甚至非正常中止?! 【彌_區(qū)溢出是一個(gè)令人頭痛的問(wèn)題,因?yàn)樵谲浖拈_(kāi)發(fā)和測(cè)試階段并非總能發(fā)現(xiàn)該問(wèn)題。c和C++編譯器在編譯過(guò)程中并非總能識(shí)別可能引發(fā)緩沖區(qū)溢出的安全缺陷,在運(yùn)行時(shí)也不會(huì)報(bào)告越界寫問(wèn)題。不過(guò)一旦測(cè)試數(shù)據(jù)可以引發(fā)一個(gè)可偵測(cè)的溢出,我們就可以使用動(dòng)態(tài)分析工具來(lái)發(fā)現(xiàn)緩沖區(qū)溢出問(wèn)題。 并非所有的緩沖區(qū)溢出都會(huì)造成軟件漏洞。然而,如果攻擊者能夠操縱用戶控制的輸入來(lái)利用安全缺陷,那么緩沖區(qū)溢出就會(huì)導(dǎo)致漏洞了。例如,有一些廣為人知的技術(shù)可以用于覆寫棧幀以執(zhí)行任意的代碼。緩沖區(qū)溢出也可以在堆或靜態(tài)內(nèi)存區(qū)域被利用,做法是通過(guò)覆寫鄰接內(nèi)存的數(shù)據(jù)結(jié)構(gòu)?! ≡谖覀兩钊肓私膺@些利用行為之前,理解進(jìn)程內(nèi)存是如何組織和管理的是非常必要的。如果你對(duì)進(jìn)程內(nèi)存組織、執(zhí)行棧以及堆管理等主題已經(jīng)非常熟悉,可以直接跳到第2.5節(jié)。
媒體關(guān)注與評(píng)論
“信息系統(tǒng)的安全性并未隨受攻擊的數(shù)目和程度的增長(zhǎng)同步得到改善。為了改變這一現(xiàn)狀,必須改進(jìn)用于創(chuàng)建系統(tǒng)的策略和技術(shù)。具體來(lái)說(shuō),必須從一開(kāi)始就將安全性構(gòu)建于系統(tǒng)之內(nèi)而不是將其作為補(bǔ)救措施附加進(jìn)來(lái),這正是本書(shū)的要旨。這本書(shū)向軟件開(kāi)發(fā)者詳盡展示了如何構(gòu)建高質(zhì)量的系統(tǒng),它們具有更少的漏洞,不易遭受代價(jià)高昂或后果嚴(yán)重的攻擊。任何開(kāi)發(fā)者在進(jìn)行重大的項(xiàng)目開(kāi)發(fā)之前都應(yīng)該閱讀本書(shū)。” ——Frank Abagnale,作家、講師、欺詐預(yù)防和安全文獻(xiàn)領(lǐng)域資深顧問(wèn)
圖書(shū)封面
圖書(shū)標(biāo)簽Tags
無(wú)
評(píng)論、評(píng)分、閱讀與下載
250萬(wàn)本中文圖書(shū)簡(jiǎn)介、評(píng)論、評(píng)分,PDF格式免費(fèi)下載。 第一圖書(shū)網(wǎng) 手機(jī)版