《软件漏洞分析技术》PDF下载

  • 购买积分:16 如何计算积分?
  • 作  者:吴世忠,郭涛,董国伟,张普含著
  • 出 版 社:北京:科学出版社
  • 出版年份:2014
  • ISBN:9787030418906
  • 页数:520 页
图书介绍:本书首先介绍了软件漏洞在当今社会所造成的影响,进而引出漏洞的基本概念,包括定义、特点、分类等,在此基础上总结了现今普遍应用的漏洞分析方法,并进一步将其划分为源代码漏洞分析、二进制漏洞分析、架构安全性分析和运行系统漏洞分析等4大类别;在后面的章节中对4大类漏洞分析技术所包含的具体技术从基本原理、实现方法、实例分析和典型使用等几个方面进行展开;并在最后对未来漏洞分析的前景进行了展望。

第1部分 漏洞分析基础 3

第1章 软件中的漏洞 3

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章 漏洞分析发展历程 25

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章 漏洞分析技术概述 56

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部分 源代码漏洞分析 79

第4章 数据流分析 79

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章 污点分析 116

5.1 基本原理 116

5.1.1 基本概念 116

5.1.2 使用污点分析技术挖掘程序漏洞 117

5.2 方法实现 119

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章 符号执行 134

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章 模型检测 161

7.1 基本原理 161

7.1.1 基本概念 161

7.1.2 技术框架 162

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章 定理证明 185

8.1 基本原理 185

8.1.1 基本概念 185

8.1.2 技术框架 186

8.1.3 方法特点 187

8.2 方法实现 187

8.2.1 程序转换 188

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部分 二进制漏洞分析 215

第9章 模糊测试 215

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章 动态污点分析 247

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章 基于模式的漏洞分析 270

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章 基于二进制代码比对的漏洞分析 307

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章 智能灰盒测试 330

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部分 架构安全和运行系统漏洞分析 383

第14章 软件架构安全分析 383

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章 运行系统漏洞分析 411

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部分 前沿技术及未来展望 439

第16章 漏洞分析领域新挑战 439

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章 漏洞分析技术展望 476

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 国内外重要漏洞库介绍 492

A.1 国家级漏洞库 492

A.2 行业级漏洞库 495

A.3 民间级漏洞库 496

参考文献 502

附录B 国内外重要安全标准介绍 503

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