C和C++安全編碼

出版時間:2010-1  出版社:機械工業(yè)出版社  作者:西科德  頁數(shù):227  
Tag標(biāo)簽:無  

前言

  1988年11月爆發(fā)的Morris蠕蟲事件造成當(dāng)時全球十分之一的互聯(lián)網(wǎng)系統(tǒng)陷入癱瘓,作為對該事件的響應(yīng),當(dāng)月美國國防部高級研究計劃局(Defense Advanced Research Projects Agency,DARPA)成立了CERT協(xié)調(diào)中心(CERT Coordination Center,CERT/CC)。CERT/CC位于賓夕法尼亞州匹茲堡市的軟件工程研究院(Software Engineering Institute,SEI)內(nèi),這是一個由美國國防部發(fā)起的研發(fā)中心,受聯(lián)邦政府資助?! ERT/CC最初的工作重點是對各種網(wǎng)絡(luò)事件作出快速響應(yīng)和分析。這里所說的事件既包括得逞的攻擊(如系統(tǒng)受損與拒絕服務(wù)等),也包括未得逞的攻擊企圖、探測和掃描。自1988年以來,CERT/CC共已接到逾22 665個報告計算機安全事件或咨詢有關(guān)信息的熱線電話,已處理總共逾319 992起計算機安全事件,而且每年報告的事件數(shù)目呈持續(xù)增長的態(tài)勢?! ‰m然對事件作出及時響應(yīng)必不可少,然而這還不足以保護(hù)互聯(lián)網(wǎng)和互聯(lián)的信息系統(tǒng)的安全。分析表明,大部分計算機安全事件是由于特洛伊木馬、社會工程學(xué)(social engineering)以及軟件漏洞利用(exploitation)所造成的,包括軟件缺陷、設(shè)計決策、配置決策以及非預(yù)期的系統(tǒng)間交互等。CERT/CC監(jiān)控漏洞信息的公共來源并經(jīng)常性地接到漏洞報告。自1995年以來,CERT已經(jīng)收到超過16 726份漏洞報告。每當(dāng)收到一份報告,CERT/CC就會分析報告所述的可能的漏洞,并與軟件制造者協(xié)作,通知其產(chǎn)品中存在安全缺陷,促進(jìn)并追蹤其對問題的響應(yīng)e?! 『褪录蟾嫦嗨疲┒磮蟾嬉惨泽@人的速度持續(xù)增長@。雖然對漏洞的管理抑制了這一進(jìn)程的發(fā)展,然而對于解決互聯(lián)網(wǎng)和信息系統(tǒng)的安全問題來說,這同樣遠(yuǎn)遠(yuǎn)不夠。為了解決日益增加的漏洞和事件問題,必須采取相應(yīng)的措施:在源頭予以有效地控制它們,即必須在軟件的開發(fā)階段和隨后的維護(hù)工作中就避免引入軟件漏洞。對現(xiàn)有漏洞的分析表明,大部分漏洞都是由少數(shù)根本原因所導(dǎo)致。本書的目標(biāo)就在于告訴開發(fā)者有關(guān)這些根本原因的知識,并介紹避免引入漏洞的措施。

內(nèi)容概要

本書是關(guān)于C和C++安全編碼的著作。本書介紹了C和C++程序中已經(jīng)導(dǎo)致危險的、破壞性的基本編程錯誤,包括在字符串、指針、動態(tài)內(nèi)存管理、整數(shù)、格式化輸出、文件I/O等中的漏洞或缺陷。本書還提供了對這些編程錯誤的深入剖析,并給出緩解策略,以減少或消除惡意利用漏洞的風(fēng)險?! ”緯m合C/C++程序員、軟件安全工程師參考?! 《聪ぼ浖┒吹某梢颍熘?guī)避之道  通常而言,可利用的軟件漏洞都由本可避免的軟件缺陷所導(dǎo)致。在分析了過去10年中近18000份漏洞報告后,CERT/CC發(fā)現(xiàn)少量的根本原因?qū)е铝诉@些漏洞的產(chǎn)生。本書識別并解釋了這些原因,而且展示了預(yù)防利用漏洞的步驟。此外,本書還鼓勵程序員采用最佳安全實踐,并培養(yǎng)安全的開發(fā)理念,這不但有助于保護(hù)軟件免遭當(dāng)前的攻擊,更可使它們免遭將來可能發(fā)生的攻擊?! 』贑ERT/CC的報告和總結(jié),Robert Seacord系統(tǒng)地揭示了最可能導(dǎo)致安全缺陷的編程錯誤,展示了這些缺陷的利用方式,介紹了可能導(dǎo)致的后果,并提供了安全的替代做法。  本書特別討論了如下技術(shù)細(xì)節(jié):  改善任何C/C++應(yīng)用程序的整體安全性。  抵御利用不安全的字符串操作邏輯的緩沖區(qū)溢出和棧粉碎攻擊?! ”苊庖?qū)討B(tài)內(nèi)存管理函數(shù)的不當(dāng)使用而導(dǎo)致的漏洞和安全缺陷?! ∠c整數(shù)相關(guān)的問題,包括整數(shù)溢出、符號錯誤以及截斷錯誤等。  正確地使用格式化輸出函數(shù),避免引入格式字符串漏洞?! ”苊釯/O漏洞,包括競爭條件等?! ”緯峁┝嗽S多針對Windows和Linux的安全代碼、不安全代碼以及利用程序的例子。如果你負(fù)責(zé)創(chuàng)建安全的C或C++軟件,或者需要保持這類軟件的安全性,本書為你提供了詳盡的專家級協(xié)助。在這方面,其他任何書籍都望塵莫及。

作者簡介

Robert C.Seaco rd是賓夕法尼亞州匹茲堡市SEI(SoftwareEngineering Institute,軟件工程研究院)的CERT/CC(CERT/Coordination Center,CERT協(xié)調(diào)中心)高級漏洞分析師。CERT/CC定期對軟件漏洞報告進(jìn)行分析,并且評估互聯(lián)網(wǎng)及其他關(guān)鍵的基礎(chǔ)設(shè)施可能遭受的風(fēng)險,此外

書籍目錄

譯者序序言前言    作譯者簡介第1章 夾縫求生  1.1 衡量危險   1.1.1 損失的現(xiàn)狀   1.1.2 威脅的來源   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++簡史    1.3.2 C存在的問題    1.3.3 遺留代碼    1.3.4 其他語言  1.4 開發(fā)平臺   1.4.1 操作系統(tǒng)   1.4.2 編譯器  1.5 本章小結(jié)  1.6 閱讀材料第2章  字符串  2.1 字符串特征  2.2 常見的字符串操作錯誤   2.2.1 無界字符串復(fù)制   2.2.2 差一錯誤   2.2.3 空結(jié)尾錯誤   2.2.4 字符串截斷   2.2.5 與函數(shù)無關(guān)的字符串錯誤 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 檢測和恢復(fù) 2.9 著名的漏洞   2.9.1 遠(yuǎn)程登錄   2.9.2 Kerberos   2.9.3 Metamail 2.10 本章小結(jié) 2.11 閱讀材料第3章 指針詭計 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章 動態(tài)內(nèi)存管理第5章 整數(shù)安全第6章 格式化輸出 第7章 文件I/O第8章 推薦的實踐參考文獻(xiàn)縮略語

章節(jié)摘錄

  2.3.2緩沖區(qū)溢出  當(dāng)向為某特定數(shù)據(jù)結(jié)構(gòu)分配的內(nèi)存空間邊界之外寫入數(shù)據(jù)時,即會發(fā)生緩沖區(qū)溢出。c和c++都容易發(fā)生緩沖區(qū)溢出問題,因為這兩種語言具有以下共同之處:a)將字符串定義為以空字符結(jié)尾的字符數(shù)組;b)未進(jìn)行隱式的邊界檢查;c)提供了未強制性邊界檢查的標(biāo)準(zhǔn)字符串函數(shù)調(diào)用?! ∪Q于內(nèi)存的位置以及溢出的規(guī)模,緩沖區(qū)溢出可能不會被偵測到,但可能會破壞數(shù)據(jù),導(dǎo)致程序出現(xiàn)奇怪的行為甚至非正常中止?! 【彌_區(qū)溢出是一個令人頭痛的問題,因為在軟件的開發(fā)和測試階段并非總能發(fā)現(xiàn)該問題。c和C++編譯器在編譯過程中并非總能識別可能引發(fā)緩沖區(qū)溢出的安全缺陷,在運行時也不會報告越界寫問題。不過一旦測試數(shù)據(jù)可以引發(fā)一個可偵測的溢出,我們就可以使用動態(tài)分析工具來發(fā)現(xiàn)緩沖區(qū)溢出問題。  并非所有的緩沖區(qū)溢出都會造成軟件漏洞。然而,如果攻擊者能夠操縱用戶控制的輸入來利用安全缺陷,那么緩沖區(qū)溢出就會導(dǎo)致漏洞了。例如,有一些廣為人知的技術(shù)可以用于覆寫棧幀以執(zhí)行任意的代碼。緩沖區(qū)溢出也可以在堆或靜態(tài)內(nèi)存區(qū)域被利用,做法是通過覆寫鄰接內(nèi)存的數(shù)據(jù)結(jié)構(gòu)。  在我們深入了解這些利用行為之前,理解進(jìn)程內(nèi)存是如何組織和管理的是非常必要的。如果你對進(jìn)程內(nèi)存組織、執(zhí)行棧以及堆管理等主題已經(jīng)非常熟悉,可以直接跳到第2.5節(jié)。

媒體關(guān)注與評論

  “信息系統(tǒng)的安全性并未隨受攻擊的數(shù)目和程度的增長同步得到改善。為了改變這一現(xiàn)狀,必須改進(jìn)用于創(chuàng)建系統(tǒng)的策略和技術(shù)。具體來說,必須從一開始就將安全性構(gòu)建于系統(tǒng)之內(nèi)而不是將其作為補救措施附加進(jìn)來,這正是本書的要旨。這本書向軟件開發(fā)者詳盡展示了如何構(gòu)建高質(zhì)量的系統(tǒng),它們具有更少的漏洞,不易遭受代價高昂或后果嚴(yán)重的攻擊。任何開發(fā)者在進(jìn)行重大的項目開發(fā)之前都應(yīng)該閱讀本書?!薄  狥rank Abagnale,作家、講師、欺詐預(yù)防和安全文獻(xiàn)領(lǐng)域資深顧問

圖書封面

圖書標(biāo)簽Tags

評論、評分、閱讀與下載


    C和C++安全編碼 PDF格式下載


用戶評論 (總計6條)

 
 

  •   對編碼安全有一定好處
  •   非常詳細(xì)的一本書
  •   經(jīng)典書籍,不用多說,好書一本。
  •   以前在學(xué)校看能領(lǐng)會個七八十,現(xiàn)在買過來再看看。。。
  •   
    優(yōu)點:確實是本國外經(jīng)典書 缺點:一本227頁這么薄的書,價格45,有點宰讀者之嫌, 不過你確實能從中學(xué)到點東西
  •   書挺實用的。不錯。
 

250萬本中文圖書簡介、評論、評分,PDF格式免費下載。 第一圖書網(wǎng) 手機版

京ICP備13047387號-7