定 价:88 元
丛书名:普通高等教育“十三五”规划教材普通高等院校工程实践系列规划教材

- 作者:吴世忠等著
- 出版时间:2014/11/1
- ISBN:9787030418906
- 出 版 社:科学出版社
- 中图法分类:TP311.53
- 页码:536
- 纸张:胶版纸
- 版次:1
- 开本:16K
-
商品库位:
《软件漏洞分析技术》首先介绍了软件漏洞在当今社会所造成的影响,进而引出漏洞的基本概念,包括定义、特点、分类等,在此基础上总结了现今普遍应用的漏洞分析方法,并进一步将其划分为源代码漏洞分析、二进制漏洞分析、架构安全性分析和运行系统漏洞分析等4大类别;在后面的章节中对4大类漏洞分析技术所包含的具体技术从基本原理、实现方法、实例分析和典型使用等几个方面进行展开;并在最后对未来漏洞分析的前景进行了展望。
更多科学出版社服务,请扫码获取。
漏洞分析技术和理论的研究人员;信息安全专业相关的教师和学生;漏洞分析和漏洞挖掘工程师。
目录
第1部分 漏洞分析基础
第1章 软件中的漏洞
1.1 漏洞概述 3
1.1.1 漏洞定义 3
1.1.2 漏洞特点 7
1.2 漏洞分类与分级 9
1.2.1 漏洞分类 9
1.2.2 漏洞分级 12
1.3 漏洞的影响 15
1.3.1 漏洞无处不在 15
1.3.2 漏洞分析保障信息安全 18
参考文献 22
第2章 漏洞分析发展历程
2.1 软件漏洞分析 25
2.1.1 广义漏洞分析 26
2.1.2 狭义漏洞分析 26
2.2 原始萌芽阶段 28
2.2.1 通信安全 28
2.2.2 分析萌芽 29
2.2.3 信息加密 30
2.3 初步发展阶段 30
2.3.1 计算机安全 31
2.3.2 单一化漏洞挖掘 31
2.3.3 操作系统防护 32
2.4 高速发展阶段 33
2.4.1 互联网安全 33
2.4.2 多样化漏洞分析 34
2.4.3 信息系统防护 36
2.5 综合治理阶段 38
2.5.1 网际安全 38
2.5.2 系统化漏洞管控 39
2.5.3 防御体系建设 44
参考文献 48
第3章 漏洞分析技术概述
3.1 漏洞分析技术体系 56
3.2 软件架构安全分析 58
3.2.1 形式化架构分析技术 59
3.2.2 工程化架构分析技术 60
3.2.3 分析技术对比 60
3.3 源代码漏洞分析 61
3.3.1 基于中间表示的分析技术 63
3.3.2 基于逻辑推理的分析技术 64
3.3.3 分析技术对比 64
3.4 二进制漏洞分析 66
3.4.1 静态漏洞分析技术 67
3.4.2 动态漏洞分析技术 68
3.4.3 动静结合的漏洞分析技术 68
3.4.4 分析技术对比 69
3.5 运行系统漏洞分析 70
3.5.1 信息收集 71
3.5.2 漏洞检测 71
3.5.3 漏洞确认 72
3.5.4 分析技术对比 72
参考文献 73
第2部分 源代码漏洞分析
第4章 数据流分析
4.1 基本原理 79
4.1.1 基本概念 79
4.1.2 检测程序漏洞 80
4.1.3 辅助支持技术 83
4.2 方法实现 85
4.2.1 使用数据流分析检测程序漏洞 85
4.2.2 数据流分析作为辅助技术 98
4.3 实例分析 101
4.3.1 使用数据流分析检测程序漏洞 101
4.3.2 数据流分析作为辅助技术 106
4.4 典型工具 107
4.4.1 Fortify SCA 107
4.4.2 Coverity Prevent 109
4.4.3 FindBugs 112
参考文献 114
第5章 污点分析
5.1 基本原理 1 16
5.1.1 基本概念 116
5 1.2 使用污点分析技术挖掘程序漏洞 117
5.2 方法实现 1 19
5.2.1 基于数据流的污点分析 119
5.2.2 基于依赖关系的污点分析 125
5.3 实例分析 126
5.4 典型工具 128
5.4.1 Pixy 128
5.4.2 TAJ 130
参考文献 131
第6章 符号执行
6.1 基本原理 134
6.1.1 基本概念 134
6.1.2 裣测程序漏洞 136
6.1.3 构造测试用例 138
6.1.4 与其他漏洞分析技术结合 140
6.2 方法实现 141
6.2.1 使用符号执行检测程序漏洞 141
6.2.2 使用符号执行构造测试用例 148
6.3 实例分析 149
6.3.1 检测程序漏洞 149
6.3.2 构造测试用例 151
6.4 典型工具 153
6.4.1 Clang 153
6.4.2 KLEE 156
参考文献 158
第7章 模型检测
7.1 基本原理 161
7.1.1 基本概念 161
7.1.2 技术框架 l62
7.1.3 方法特点 163
7.2 方法实现 164
7.2.1 程序建模 165
7.2.2 安全缺陷属性描述 166
7.2.3 程序漏洞检查 168
7.3 实例分析 170
7.3.1 线性时序逻辑检查 170
7.3.2 分布式软件的漏洞检测 172
7.4 典型工具 175
7.4.1 SLAM 176
7.4.2 MOPS 178
参考文献 182
第8章 定理证明
8.1 基本原理 185
8.1.1 基本概念 1 85
8.1.2 技术框架 1 86
8.1.3 方法特点 187
8.2 方法实现 187
8.2.1 程序转换 1 88
8.2.2 属性描述 192
8.2.3 定理证明 194
8.3 实例分析 198
8.3.1 整数溢出漏洞分析 198
8.3.2 TLS协议逻辑漏洞分析 200
8.3.3 输入验证类漏洞分析 203
8.4 典型工具 205
8.4.1 Saturn 205
8.4.2 ESC/Java 207
参考文献 208
第3部分 二进制漏洞分析
第9章 模糊测试
9.1 基本原理 215
9.1.1 基本概念 215
9.1.2 基本过程 216
9.2 方法实现 217
9.2.1 输入数据的关联分析 217
9.2.2 测试用例集的构建方法 223
9.2.3 测试异常分析 227
9.2.4 模糊测试框架 231
9.3 实例分析 232
9.3.1 文件模糊测试 233
9.3.2 网络协}义模糊测试 236
9.3.3 ActiveX控件模糊测试 239
9.4 典型工具 242
9.4.1 Peach 242
9.4.2 Sulley 244
参考文献 246
第10章 动态污点分析
10.1 基本原理 247
10.1.1 基本概念 247
10.1.2 动态污点分析原理 248
10.1.3 方法特点 250
10.2 方法实现 251
10.2.1 污点数据标记 252
10.2.2 污点动态跟踪 254
10.2.3 污点误用检查 260
10.3 实例分析 262
10.4 典型工具 264
10.4.1 TaintCheck 265
10.4.2 Argos 265
10.4.3 TaintDroid 267
参考文献 268
第11章 基于模式的漏洞分析
11.1 基本原理 270
11.1.1 基本概念 270
11.1.2 二进制文件结构 271
11.2 方法实现 277
11.2.1 反汇编分析 277
11.2.2 逆向中间表示 280
11.2.3 漏洞模式建模 289
11.2.4 漏洞模式检测 293
11.3 实例分析 295
11.3.1 缓冲区溢出类漏洞实例(不安全函数调用) 295
11.3.2 缓冲区溢出类漏洞实例(循环写内存) 298
11.3.3 整数溢出类漏洞实例 299
11.3.4 内存地址对象破坏性调用类漏洞实例 300
11.4 典型工具 302
11.4.1 BinNavi 302
11.4.2 BAP 303
参考文献 304
第12章 基于二进制代码比对的漏洞分析
12.1 基本原理 307
12.1.1 研究现状 307
12.1.2 基本原理 308
12.2 方法实现 310
12.2.1 基于文本的二进制代码比对 310
12.2.2 基于图同构的二进制比对 311
12.2.3 基于结构化的二进制比对 313
12.2.4 软件补丁的二进制比对技术 317
12.3 实例分析 318
12.3.1 漏洞信息搜集 318
12.3.2 搭建调试环境 318
12.3.3 补丁比对 319
12.3.4 静态分析 321
12.3.5 动态调试 322
12.4 典型工具 324
12.4.1 Bindiff 324
12.4.2 Eye Binary Diffing Suite 326
参考文献 328
第13章 智能灰盒测试
13.1 基本原理 330
13.1.1 基本概念 330
13.1.2 智能灰盒测试的过程 331
13.2 方法实现 332
13.2.1 动态符号执行 333
13.2.2 路径控制与定向遍历 339
13.2.3 路径约束求解 350
13.2.4 漏洞触发数据生成 359
13.3 实例分析 364
13.3.1 关键路径提取 364
13.3.2 中间符号设置 365
13.3.3 污点分析 366
13.3.4 执行Trace获取 368
13.3.5 路径控制与定向遍历 369
13.3.6 约束求解 370
13 3.7 结论 371
13.4 典型工具 371
13.4.1 Dart 371
13.4.2 Smart fuzzing 373
13.4.3 BitBlaze 375
参考文献 376
第4部分 架构安全和运行系统漏洞分析
第14章 软件架构安全分析
14.1 基本原理 383
14.1.1 软件架构定义 383
14.1.2 架构安全概述 384
14.1.3 架构安全分析过程 386
14.2 方法实现 386
14.2.1 形式化分析技术 386
14.2.2 工程化分析技术 391
14.3 实例分析 400
14.3.1 形式化分析实例一一UMLsec 400
14.3.2 工程化分析实例一一基于Web应用程序的威胁建模 403
14.4 典型工具 406
14.4.1 威胁建模工具 406
14.4.2 软件架构分析工具 408
参考文献 409
第15章 运行系统漏洞分析
15.1 基本原理 411
15.1.1 基本概念 411
15.1.2 运行系统漏洞分析 412
15.2 方法实现 414
15.2.1 信息收集 414
15 2.2 配置管理漏洞检测 417
15.2.3 通信协议漏涧检测 418
15 2.4 授权认证漏洞检测 420
15.2.5 数据验证漏洞检测 423
15 2.6 数据安全性漏洞检测 425
15.3 实例分析 426
15.3.1 信息收集 426
15 3.2 漏洞检测过程 426
15.4 典型工具 429
15.4.1 Nmap 429
15.4.2 NeSSuS 430
15.4.3 微软基线安全分析器 431
15.4.4 WVS 432
参考文献 434
第5部分 前沿技术及未来展望
第16章 漏洞分析领域新挑战
16.1 移动智能终端漏洞分析 439
16.1.1 领域背景 439
16.1.2 漏洞分析技术 440
16.1.3 应对措施 443
16.2 云计算平台漏洞分析 444
16.2.1 领域背景 444
16.2.2 漏洞分析技术 446
16.2.3 应对措施 449
16.3 物联网漏洞分析 449
16.3.1 领域背景 449
16.3.2 漏洞分析技术 451
16.3.3 应对措施 455
16.4 工控系统漏洞分析 456
16.4.1 领域背景 456
16.4.2 漏洞分析技术 457
16.4.3 应对措施 461
16.5 其他新兴领域的漏洞分析 462
16.5.1 智能家居的漏洞分析 462
16.5.2 眢能交通的漏洞分析 464
16.5.3 可穿戴设备的漏洞分析 466
参考文献 467
第17章 漏洞分析技术展望
17.1 理论突破 476
17 1.1 软件模型构建 476
17.1.2 漏洞模式提取 477
17.1.3 技术极限求解 478
17.2 技术发展 479
17.2.1 精确度判定 479
17.2.2 分析性能的提高 480
17.2.3 智能化提升 481
17.3 工程实现 482
17.3.1 大规模软件的漏洞分析 482
17.3.2 新型平台上的漏洞分析 485
17.3.3 通用平台级漏洞分析软件开发 488
参考文献 489
附录A 国内外重要漏洞库介绍
A.1 国家级漏洞库 492
A.2 行业级漏洞库 495
A.3 民间级漏洞库 496
参考文献 502
附录B 国内外重要安全标准介绍
B.1 总体情况 503
B.2 基础类标准 504
B.2.1 国内标准 504
B.2.2 国际标准 505
B.3 防范类标准 509
B.3.1 国内标准 509
B.3.2 国际标准 512
B.4 管理类标准 514
B.4.1 国内标准 514
B.4.2 国际标准 515
B.5 应用类标准 517
B.5.1国际标准 517
2.3.1计算机安全
随着计算机技术的发展,社会各方面对于计算机技术需求量不断增加,使得计算机安全问题也日益突出。操作系统作为计算机软硬件统一的管理平台,是引发各种计算机安全问题的主要载体,其中通过漏洞提升访问权限来窃取系统中的信息或通过病毒损坏系统文件是最常见的安全问题。首先,攻击者利用漏洞得到计算机的合法身份进入计算机系统,肆意对计算机中的数据进行复制、修改、删除等操作。美国五角大楼的计算机专家曾模仿黑客攻击了自己的计算机系统1.2万次,其中88%均成功。其次,恶性病毒传播往往借助于软件漏洞,可以使整个计算机系统崩溃,最终导致数据的破坏。计算机病毒主要在DOS、Windows、WindowsNT、UNIX等操作系统下通过文件拷贝的方式传播,早期的计算机病毒主要破坏DOS引导区、文件分配表、可执行文件,后期出现了专门针对Windows、文本文件、数据库文件的病毒;再次,由于操作系统自身存在的安全漏洞和后门,也会带来安全隐患。例如,输入输出的非法访问,即在某些操作系统中一旦I/O操作检查通过后,该操作系统将继续执行而不再检查,从而造成后续操作的非法访问。还有某些操作系统使用公共的系统缓冲区,任何用户都可以使用该缓冲区,如果缺乏严格的安全措施,那么其中的信息(如用户的认证数据、口令等)就有可能泄露。
由此,如果设计操作系统时不能处理好开放和隔离两者之间的矛盾,就会蕴藏巨大的安全隐患,计算机安全问题必然造成访问控制的混乱。为减少安全问题,以“预防、消除和减少计算机系统用户的非授权行为”为核心的计算机安全的概念逐渐开始流行。计算机安全是对数据处理系统采取的技术及管理方面的安全保护,保护计算机硬件、软件、数据不因偶然的或恶意的原因而遭到破坏和更改,其核心是防止非授权的用户通过提升自己的权限来获取计算机系统中的信息。
2.3.2单一化漏洞挖掘
为减少操作系统漏洞以降低计算机安全隐患,以手工分析为主的漏洞分析技术开始出现,但早期漏洞分析技术比较单一。例如,1973年Kildall提出了数据流分析方法,指出这种方法可用于分析程序在不同点计算的信息,可被编译器用于程序优化。80年代,Jones和Shivers开始使用控制流分析技术对程序代码进行静态分析。1980年,美国密歇根大学的:Hebbard小组使用“渗透分析”(Penetration Analysis)方法分析了某虚拟内存系统中的部分漏洞口。1990年,美国伊利诺斯大学的Marick发表系统漏洞调查报告,对系统漏洞的形成特点做出了统计分析。90年代中期,Mudge和Aleph以x86为平台,对计算机系统中的栈结构及系统栈中的缓冲区溢出漏洞做了详细描述,利用反汇编和下断点等程序调试技术进行了分析与演示,最后编写了相关实例和针对这些实例的攻击代码,这使得原本神秘莫测的漏洞分析变得浅显易懂,而这正是此阶段进行漏洞分析所普遍使用的方法。基于此,更多的分析人员也渐渐掌握了缓冲区溢出漏洞的分析方法。在手工分析时,主要使用程序逆向分析工具辅助进行,主要包括商业化的反汇编器、调试器等,常见的如IDA、OllyDbg和C32Asm等,它们可以帮助分析人员理解二进制代码的整体结构和模块,并在可知的执行路径上进行相应的实际跟踪,因此更便于程序漏洞的发现。
……