一个都不能有―软件的19个致命安全漏洞

作者:肖枫涛、杨明军

丛书名:网络空间安全丛书

定价:38元

印次:1-1

ISBN:9787302138044

出版日期:2006.11.01

印刷日期:2006.11.03

图书责编:王军

图书分类:零售

电子书
在线购买
分享
内容简介
作者简介
前言序言
资源下载
查看详情 查看详情 查看详情

本书本着小巧、易读、实用的原则,涵盖了目前流行的编程语言和运行平台,覆盖了最为常见的与软件安全相关的19个致命漏洞。该书采用理论和实践相结合的方式,对于每个漏洞都给出了详细的描述、产生的原理、查找的方法、弥补的措施等内容,同时,对于每个漏洞,作者还精选了系统中实际出现的例子加以说明,使其更直观,令读者印象更为深刻。另外,在弥补措施中,作者结合多种不同的语言给出具体的代码弥补方案,从而更增强了实用性。

   我们通常期望计算机可以按照我们的指示去执行任务,在现实生活中,我们通过使用软件来完成这些期望。目前计算机及其软件都变得非常的复杂,从我们点击鼠标到看到期望的结果这一过程中,可能经过了多层软件。为了充分利用计算机平台的能力,我们通常要依赖于这些软件层自身执行的正确性。 对于这些软件层来说,每一层都可能出现问题,软件运行的结果并不是作者所需要的,或者至少不是计算机操作者需要的。这些漏洞为我们的系统引入了一定的不确定因素,随之而来的是重大的安全漏洞。这些漏洞有些比较简单,比如软件或系统崩溃(可用于拒绝服务攻击),或者缓冲区溢出(攻击者可以以此来替换应用程序的代码,从而执行任意的命令)。 只要在软件系统中出现了由于漏洞而导致的不确定性,一些如何保护系统的观点就只能成为空想。我们可以部署防火墙、使用内核级的技术来阻止缓冲区溢出,通常也可以使用权宜之计,但是通过这种方式并不能改变基础设施的安全状况。只有提高软件的质量,同时减少相关的漏洞,才可以在安全方面取得一定的成绩。 在当今的开发环境中,要彻底消除软件中存在的漏洞是不可能的,从安全的角度来说,软件开发方面实在有太多的安全隐患,即使从事这项工作的专业人员也并不能保证认识到所有的漏洞,更别提掌握这些漏洞了。 如果我们打算在消除安全漏洞方面有所进展,那么,当开发小组谈到实际的约束条件时,我们就需要帮助他们尽量简单地定位他们软件中存在的安全问题。关于软件安全有好几本很好的书,包括本书作者编写过的一些书,但是我认为在实际中应该消除所有的复杂性,只是为开发小组提供一个小的容易记忆的关键点集合,从而提高其软件的安全性。这意味着...

目录
荐语
查看详情 查看详情
目   录  

第1章  缓冲区溢出 1

1.1  漏洞概述 1

1.2  受影响的编程语言 2

1.3  漏洞详细解释 2

1.3.1  受漏洞影响的C/C++ 5

1.3.2  相关漏洞 8

1.4  查找漏洞模式 8

1.5  在代码审查中查找该漏洞 8

1.6  发现该漏洞的测试技巧 9

1.7  漏洞示例 10

1.7.1  CVE-1999-0042 10

1.7.2  CVE-2000-0389

   — CVE-2000-0392 10

1.7.3  CVE-2002-0842、

     CVE-2003-0095、

     CAN-2003-0096 11

1.7.4  CAN-2003-0352 11

1.8  弥补措施 12

1.8.1  替换危险的字符串

     处理函数 12

1.8.2  审计分配操作 12

1.8.3  检查循环和数组访问 12

1.8.4  使用C++字符串来替

   换C字符串缓冲区 12

1.8.5  使用STL容器替代静

   态数组 13

1.8.6  使用分析工具 13

1.9  其他防御措施 13

1.9.1  栈保护 14

1.9.2  不可执行的栈和堆 14

1.10  其他资源 14

1.11  本章总结 16

第2章  格式化字符串问题 17

2.1  漏洞概述 17

2.2  受影响的编程语言 18

2.3  漏洞详细解释 18

2.3.1  受漏洞影响的C/C++ 20

2.3.2  相关漏洞 20

2.4  查找漏洞模... 查看详情

查看详情