- C和C++安全編碼(原書第2版)
- (美)Robert C.Seacord
- 1269字
- 2020-10-30 17:56:32
序
現(xiàn)代社會對網(wǎng)絡(luò)化軟件系統(tǒng)的依賴日益加深,以這些系統(tǒng)為目標(biāo)的攻擊數(shù)量亦與日俱增。形形色色的針對政府、公司、教育機構(gòu)以及個人系統(tǒng)的攻擊,已經(jīng)導(dǎo)致諸多嚴(yán)重的后果:敏感數(shù)據(jù)丟失或損壞、系統(tǒng)受損、生產(chǎn)效率降低,以及經(jīng)濟(jì)損失等。
盡管今天互聯(lián)網(wǎng)上的攻擊行為大多不過是惡作劇,但是越來越多的證據(jù)表明,罪犯、恐怖分子以及其他心懷叵測的人已將軟件系統(tǒng)中的漏洞視作達(dá)成其不可告人目的的手段。近年來,每年發(fā)現(xiàn)的軟件漏洞已逾4000個。這些漏洞的成因包括:在設(shè)計和實現(xiàn)方面對如何保護(hù)系統(tǒng)考慮不周,在開發(fā)實踐方面對消除會導(dǎo)致安全缺陷的實現(xiàn)瑕疵關(guān)注不夠。
伴隨著軟件漏洞的日益增加,攻擊手段也與時俱進(jìn),變得越發(fā)老練、有效。入侵者在發(fā)現(xiàn)軟件產(chǎn)品中的漏洞后,可以迅速開發(fā)出利用漏洞的腳本,繼而使用這些腳本威脅計算機的安全。更糟糕的是,他們還將這些腳本與其他攻擊者共享。這些腳本與一些“自動掃描網(wǎng)絡(luò)以窺探脆弱系統(tǒng)”的程序聯(lián)合起來,攻擊那些脆弱系統(tǒng),危害其安全,甚至利用它們進(jìn)一步傳播攻擊。
由于每年都會發(fā)現(xiàn)大量的漏洞,系統(tǒng)管理員為了給既有系統(tǒng)打補丁日益疲于奔命。打補丁有時并非易事,并可能會導(dǎo)致意想不到的副作用。在供應(yīng)商發(fā)布一個安全補丁后,可能需耗時數(shù)月乃至數(shù)年的時間,90%~95%的受影響計算機才能完成修補工作。
互聯(lián)網(wǎng)用戶已經(jīng)嚴(yán)重依賴于這樣一種解決方式:互聯(lián)網(wǎng)社區(qū)作為一個整體,對發(fā)生的安全攻擊快速做出反應(yīng),以確保將損害降至最低,并將攻擊迅速擊潰。然而,顯而易見,如今的“反應(yīng)式解決方案”已經(jīng)達(dá)到其效力的極限。雖然個體響應(yīng)組織都在為將漏洞處理過程的精簡化和自動化而努力工作,但是今天商業(yè)軟件產(chǎn)品中的漏洞數(shù)目,已經(jīng)多至只有財力雄厚的組織才能應(yīng)對漏洞修復(fù)工作,其他組織實質(zhì)上已心有余而力不足。
沒有任何證據(jù)表明大多數(shù)產(chǎn)品中的安全問題得到了改善,很多軟件開發(fā)者尚未很好地理解從各種漏洞成因中獲得的教訓(xùn),或者尚未運用能夠起作用的緩解策略,CERT/CC不斷在同一軟件產(chǎn)品的更新版本中發(fā)現(xiàn)早期版本已存在的同類漏洞就是明證。
這些因素交織在一起,預(yù)示著我們完全可以相信,很多攻擊甚至?xí)谖覀儗嶋H希望的最短響應(yīng)時間內(nèi)造成巨大的經(jīng)濟(jì)損失和服務(wù)崩潰。
雖然積極且協(xié)調(diào)的反應(yīng)仍然不可或缺,但我們還必須構(gòu)建出不易被破壞的、更安全的系統(tǒng)。
關(guān)于本書
本書致力于解決C和C++中已經(jīng)導(dǎo)致危險的、破壞性的常見軟件漏洞的基本編程錯誤,這些漏洞自CERT 1988年創(chuàng)立以來就記錄在案。針對導(dǎo)致這些漏洞的編程錯誤,本書既出色地給出了深度工程分析,又提出了緩解策略,可以富有成效地降低或消除漏洞被惡意利用的風(fēng)險。
自Robert于1987年4月加入SEI以來,我就一直與他共事。Robert是一位知識淵博、技術(shù)熟練的軟件工程師,他在軟件漏洞細(xì)節(jié)分析和表達(dá)洞察成果方面卓爾不凡。作為研究結(jié)果,本書細(xì)致而精確地分析了軟件開發(fā)者面臨的常見問題,并提供了實用的解決方案。Robert在軟件開發(fā)方面具備的寬廣背景,也使得他擅長在性能、易用性以及其他在開發(fā)安全代碼過程中必須考慮的質(zhì)量特性之間進(jìn)行權(quán)衡。除了Robert外,本書還凝聚了CERT積累和提煉的知識,以及CERT/CC漏洞分析小組、CERT操作人員、SEI編輯和工作人員的杰出工作。
Richard D.Pethia
CERT 主管
- JavaScript從入門到精通(微視頻精編版)
- Microsoft Exchange Server PowerShell Cookbook(Third Edition)
- 樂學(xué)Web編程:網(wǎng)站制作不神秘
- Building Mobile Applications Using Kendo UI Mobile and ASP.NET Web API
- Scratch真好玩:教小孩學(xué)編程
- 征服RIA
- Android Native Development Kit Cookbook
- 利用Python進(jìn)行數(shù)據(jù)分析(原書第3版)
- Learning JavaScript Data Structures and Algorithms
- Extreme C
- C#面向?qū)ο蟪绦蛟O(shè)計(第2版)
- Akka入門與實踐
- Java程序設(shè)計教程
- Python深度學(xué)習(xí):基于PyTorch
- AngularJS by Example