书籍详情
软件安全
作者:邹德清 李珍 羌卫中 付才 文明 金海
出版社:人民邮电出版社
出版时间:2023-12-01
ISBN:9787115625748
定价:¥139.80
购买这本书可以去
内容简介
软件是支撑计算机、网络和数据的基础,软件安全是信息安全保障的关键。本书通过对现有方法的总结、技术对比和实例分析,从理论到实践、从传统到前沿,全面深入地阐述软件安全中的软件漏洞与攻击利用、软件脆弱性分析与软件漏洞挖掘及软件防护技术,分别从基本概念、各种传统与前沿的软件防护方法的原理、典型应用、未来发展趋势等方面进行详细介绍。本书既可以作为软件安全相关专业研究生的软件安全系列课程教材,也可以作为相关科研人员或计算机技术人员的参考书。
作者简介
暂缺《软件安全》作者简介
目录
第 一篇 软件漏洞与攻击利用
第 1章 软件安全概述 3
1.1 软件安全的定义及内涵 3
1.1.1 软件安全的定义 3
1.1.2 用信息安全的属性来理解软件安全 4
1.2 软件安全问题 4
1.2.1 引起软件安全问题的原因 4
1.2.2 软件安全问题带来的影响 6
1.2.3 软件安全面临的挑战 7
1.3 软件安全发展历程 8
1.3.1 黑客起源 8
1.3.2 万维网兴起 8
1.3.3 软件安全开发生命周期的提出 9
1.3.4 在云中扩展安全开发 9
1.4 软件安全学科的主要内容 10
1.4.1 软件安全与系统安全、网络安全之间的关系 10
1.4.2 软件安全的主流技术 11
1.5 确保软件安全的工程化方法 12
1.6 小结 13
参考文献 14
第 2章 主流的软件漏洞类型及典型攻击方法 15
2.1 空间错误类内存漏洞及攻击方法 15
2.1.1 堆缓冲区溢出漏洞 15
2.1.2 栈缓冲区溢出 17
2.1.3 格式化字符串漏洞攻击 18
2.2 时间错误类内存漏洞及攻击方法 19
2.2.1 Double-Free漏洞攻击 19
2.2.2 Use-After-Free攻击 20
2.3 条件竞争漏洞及攻击方法 21
2.3.1 TOCTOU攻击 21
2.3.2 Double-Fetch攻击 22
2.4 代码注入型攻击 24
2.5 代码重用型攻击 25
2.5.1 Return-to-libc(Ret2libc)攻击 25
2.5.2 ROP攻击 28
2.5.3 JOP攻击 31
2.6 控制流劫持攻击 32
2.7 数据流劫持攻击 32
2.8 内存泄露攻击 33
2.9 小结 34
参考文献 34
第3章 漏洞利用技术 36
3.1 漏洞利用技术简介 36
3.1.1 Exploit、Payload与Shellcode 36
3.1.2 漏洞的可利用性 37
3.1.3 漏洞利用的影响 38
3.2 人工漏洞利用 39
3.2.1 概述 39
3.2.2 触发漏洞路径 39
3.2.3 构造利用链 41
3.2.4 绕过安全机制 43
3.2.5 实例:CVE-2018-5767栈溢出漏洞 44
3.2.6 实例:CVE-2011-0065 UAF漏洞 45
3.3 自动化漏洞利用 47
3.3.1 基于二进制补丁比较的自动化漏洞利用 47
3.3.2 面向控制流的自动化漏洞利用 47
3.3.3 面向数据流的自动化漏洞利用 48
3.4 小结 49
参考文献 49
第二篇 软件脆弱性分析与软件漏洞挖掘
第4章 软件安全形式化验证 53
4.1 软件安全形式化验证技术介绍 53
4.1.1 什么是形式化验证 53
4.1.2 定理证明方法简介 54
4.1.3 模型检验方法简介 54
4.2 软件安全形式化验证面临的挑战 55
4.2.1 定理证明方法面临的挑战 55
4.2.2 模型检验方法的算法挑战 55
4.2.3 模型检验的建模挑战 56
4.3 软件安全形式化验证的主流技术 57
4.3.1 Kripke结构 57
4.3.2 定理证明工具简介 59
4.3.3 模型检验的关键技术 60
4.3.4 模型检验的主流验证工具 63
4.4 典型应用 67
4.4.1 问题描述与建模 67
4.4.2 使用NuSMV工具解决农夫过河问题 68
4.4.3 使用SPIN工具解决农夫过河问题 70
4.5 未来的发展趋势 72
4.5.1 未来的发展方向 72
4.5.2 新时代的挑战 72
4.6 小结 73
参考文献 73
第5章 符号执行技术 74
5.1 符号执行的定义 74
5.2 静态符号执行 75
5.2.1 静态符号执行的原理 75
5.2.2 静态符号执行的局限性 76
5.3 动态符号执行 76
5.3.1 混合测试 77
5.3.2 执行生成测试 79
5.3.3 选择性符号执行 80
5.4 典型应用 80
5.4.1 结合模糊测试进行漏洞检测 80
5.4.2 代码覆盖率测试 81
5.4.3 反混淆 82
5.5 未来发展趋势 82
5.6 小结 84
参考文献 84
第6章 污点分析技术 85
6.1 污点分析技术的定义 85
6.2 静态污点分析技术 86
6.2.1 静态数据流分析的图的可达性查询算法 86
6.2.2 典型静态污点分析系统及应用 88
6.3 动态污点分析技术 89
6.3.1 动态污点分析技术的关键问题 90
6.3.2 应用层动态污点分析技术 93
6.3.3 典型应用层动态污点分析系统 97
6.3.4 虚拟机层全系统动态污点分析技术 102
6.3.5 典型全系统动态污点分析系统及应用 102
6.4 典型应用 104
6.4.1 自动化网络协议格式逆向分析技术 104
6.4.2 程序恶意行为检测 105
6.4.3 智能手机上的敏感信息跟踪与分析 106
6.4.4 漏洞检测 106
6.5 未来发展趋势 107
6.6 小结 108
参考文献 108
第7章 软件漏洞挖掘 110
7.1 基于规则的软件漏洞挖掘 110
7.1.1 基本概念 110
7.1.2 数据流分析 111
7.1.3 基于符号执行的漏洞挖掘 121
7.2 克隆漏洞挖掘 125
7.2.1 基本概念 125
7.2.2 克隆漏洞挖掘的流程 130
7.2.3 挑战与未来发展趋势 134
7.3 智能漏洞挖掘 136
7.3.1 基本概念 136
7.3.2 智能漏洞挖掘流程 137
7.3.3 数据表征 138
7.3.4 模型学习 140
7.3.5 未来发展趋势 143
7.4 基于模糊测试的漏洞挖掘 144
7.4.1 基本概念 144
7.4.2 基于变异的模糊测试 144
7.4.3 基于生成的模糊测试 144
7.4.4 未来发展趋势 145
7.5 典型应用 145
7.5.1 VulDeePecker概述 145
7.5.2 VulDeePecker总体架构 146
7.6 未来发展趋势 147
7.7 小结 147
参考文献 148
第三篇 软件防护技术
第8章 代码安全与代码完整性保护 151
8.1 代码安全面临的主要挑战 151
8.2 代码的安全编程 152
8.2.1 系统安全架构设计 152
8.2.2 输入数据可信性验证 152
8.2.3 缓冲区溢出防范 153
8.2.4 程序错误与异常处理 154
8.3 代码完整性保护 155
8.3.1 软件水印技术 155
8.3.2 代码混淆技术 155
8.3.3 代码隐藏 159
8.3.4 数据执行保护 159
8.4 典型应用 159
8.4.1 安全编码标准 159
8.4.2 代码保护工具 160
8.5 未来发展趋势 161
8.6 小结 161
参考文献 161
第9章 控制流完整性保护 163
9.1 控制流劫持 163
9.1.1 程序的控制流转移 163
9.1.2 控制流劫持攻击 164
9.2 控制流完整性保护 165
9.2.1 控制流完整性的定义 165
9.2.2 控制流完整性保护过程 166
9.3 控制流完整性保护方案介绍 167
9.3.1 粗粒度的CFI保护 168
9.3.2 细粒度的CFI保护 175
9.3.3 硬件辅助的CFI保护 179
9.4 典型应用 185
9.5 未来发展趋势 186
9.6 小结 186
参考文献 187
第 10章 数据流与数据流完整性保护 188
10.1 数据流定义 188
10.2 数据流分析方法及分类 188
10.2.1 程序控制流图 188
10.2.2 程序数据流图 189
10.2.3 数据流分析方法 190
10.3 典型数据流分析方法 193
10.3.1 定义可达分析 194
10.3.2 存活变量分析 196
10.3.3 典型数据流分析方法总结 199
10.4 数据流分析方法的典型应用场景 200
10.4.1 漏洞挖掘 200
10.4.2 软件测试 202
10.4.3 代码表示 203
10.5 数据流完整性保护 204
10.5.1 数据流完整性概念 204
10.5.2 数据流完整性保护实例 204
10.5.3 数据完整性保护的发展与挑战 206
10.6 典型应用 209
10.6.1 面向操作系统内核的数据流完整性保护 209
10.6.2 面向实时系统的数据流完整性保护 210
10.7 未来发展趋势 210
10.8 小结 211
参考文献 211
第 11章 软件随机化保护技术 213
11.1 ASLR介绍 213
11.1.1 回顾:虚拟地址空间布局 213
11.1.2 ASLR 215
11.1.3 PIC和PIE技术 218
11.1.4 实例:Windows操作系统上的ASLR机制 219
11.2 ASLR的分类和实例 223
11.2.1 时间维度 223
11.2.2 粒度维度 226
11.2.3 方法维度 228
11.3 拓展:ASLR其他相关研究 231
11.3.1 内核ASLR 231
11.3.2 Retouching 232
11.4 指令集随机化相关研究 233
11.4.1 指令集直接加解密 233
11.4.2 ASIST 234
11.4.3 Polyglot 236
11.5 典型应用 238
11.6 未来发展趋势 239
11.7 小结 239
参考文献 240
第 1章 软件安全概述 3
1.1 软件安全的定义及内涵 3
1.1.1 软件安全的定义 3
1.1.2 用信息安全的属性来理解软件安全 4
1.2 软件安全问题 4
1.2.1 引起软件安全问题的原因 4
1.2.2 软件安全问题带来的影响 6
1.2.3 软件安全面临的挑战 7
1.3 软件安全发展历程 8
1.3.1 黑客起源 8
1.3.2 万维网兴起 8
1.3.3 软件安全开发生命周期的提出 9
1.3.4 在云中扩展安全开发 9
1.4 软件安全学科的主要内容 10
1.4.1 软件安全与系统安全、网络安全之间的关系 10
1.4.2 软件安全的主流技术 11
1.5 确保软件安全的工程化方法 12
1.6 小结 13
参考文献 14
第 2章 主流的软件漏洞类型及典型攻击方法 15
2.1 空间错误类内存漏洞及攻击方法 15
2.1.1 堆缓冲区溢出漏洞 15
2.1.2 栈缓冲区溢出 17
2.1.3 格式化字符串漏洞攻击 18
2.2 时间错误类内存漏洞及攻击方法 19
2.2.1 Double-Free漏洞攻击 19
2.2.2 Use-After-Free攻击 20
2.3 条件竞争漏洞及攻击方法 21
2.3.1 TOCTOU攻击 21
2.3.2 Double-Fetch攻击 22
2.4 代码注入型攻击 24
2.5 代码重用型攻击 25
2.5.1 Return-to-libc(Ret2libc)攻击 25
2.5.2 ROP攻击 28
2.5.3 JOP攻击 31
2.6 控制流劫持攻击 32
2.7 数据流劫持攻击 32
2.8 内存泄露攻击 33
2.9 小结 34
参考文献 34
第3章 漏洞利用技术 36
3.1 漏洞利用技术简介 36
3.1.1 Exploit、Payload与Shellcode 36
3.1.2 漏洞的可利用性 37
3.1.3 漏洞利用的影响 38
3.2 人工漏洞利用 39
3.2.1 概述 39
3.2.2 触发漏洞路径 39
3.2.3 构造利用链 41
3.2.4 绕过安全机制 43
3.2.5 实例:CVE-2018-5767栈溢出漏洞 44
3.2.6 实例:CVE-2011-0065 UAF漏洞 45
3.3 自动化漏洞利用 47
3.3.1 基于二进制补丁比较的自动化漏洞利用 47
3.3.2 面向控制流的自动化漏洞利用 47
3.3.3 面向数据流的自动化漏洞利用 48
3.4 小结 49
参考文献 49
第二篇 软件脆弱性分析与软件漏洞挖掘
第4章 软件安全形式化验证 53
4.1 软件安全形式化验证技术介绍 53
4.1.1 什么是形式化验证 53
4.1.2 定理证明方法简介 54
4.1.3 模型检验方法简介 54
4.2 软件安全形式化验证面临的挑战 55
4.2.1 定理证明方法面临的挑战 55
4.2.2 模型检验方法的算法挑战 55
4.2.3 模型检验的建模挑战 56
4.3 软件安全形式化验证的主流技术 57
4.3.1 Kripke结构 57
4.3.2 定理证明工具简介 59
4.3.3 模型检验的关键技术 60
4.3.4 模型检验的主流验证工具 63
4.4 典型应用 67
4.4.1 问题描述与建模 67
4.4.2 使用NuSMV工具解决农夫过河问题 68
4.4.3 使用SPIN工具解决农夫过河问题 70
4.5 未来的发展趋势 72
4.5.1 未来的发展方向 72
4.5.2 新时代的挑战 72
4.6 小结 73
参考文献 73
第5章 符号执行技术 74
5.1 符号执行的定义 74
5.2 静态符号执行 75
5.2.1 静态符号执行的原理 75
5.2.2 静态符号执行的局限性 76
5.3 动态符号执行 76
5.3.1 混合测试 77
5.3.2 执行生成测试 79
5.3.3 选择性符号执行 80
5.4 典型应用 80
5.4.1 结合模糊测试进行漏洞检测 80
5.4.2 代码覆盖率测试 81
5.4.3 反混淆 82
5.5 未来发展趋势 82
5.6 小结 84
参考文献 84
第6章 污点分析技术 85
6.1 污点分析技术的定义 85
6.2 静态污点分析技术 86
6.2.1 静态数据流分析的图的可达性查询算法 86
6.2.2 典型静态污点分析系统及应用 88
6.3 动态污点分析技术 89
6.3.1 动态污点分析技术的关键问题 90
6.3.2 应用层动态污点分析技术 93
6.3.3 典型应用层动态污点分析系统 97
6.3.4 虚拟机层全系统动态污点分析技术 102
6.3.5 典型全系统动态污点分析系统及应用 102
6.4 典型应用 104
6.4.1 自动化网络协议格式逆向分析技术 104
6.4.2 程序恶意行为检测 105
6.4.3 智能手机上的敏感信息跟踪与分析 106
6.4.4 漏洞检测 106
6.5 未来发展趋势 107
6.6 小结 108
参考文献 108
第7章 软件漏洞挖掘 110
7.1 基于规则的软件漏洞挖掘 110
7.1.1 基本概念 110
7.1.2 数据流分析 111
7.1.3 基于符号执行的漏洞挖掘 121
7.2 克隆漏洞挖掘 125
7.2.1 基本概念 125
7.2.2 克隆漏洞挖掘的流程 130
7.2.3 挑战与未来发展趋势 134
7.3 智能漏洞挖掘 136
7.3.1 基本概念 136
7.3.2 智能漏洞挖掘流程 137
7.3.3 数据表征 138
7.3.4 模型学习 140
7.3.5 未来发展趋势 143
7.4 基于模糊测试的漏洞挖掘 144
7.4.1 基本概念 144
7.4.2 基于变异的模糊测试 144
7.4.3 基于生成的模糊测试 144
7.4.4 未来发展趋势 145
7.5 典型应用 145
7.5.1 VulDeePecker概述 145
7.5.2 VulDeePecker总体架构 146
7.6 未来发展趋势 147
7.7 小结 147
参考文献 148
第三篇 软件防护技术
第8章 代码安全与代码完整性保护 151
8.1 代码安全面临的主要挑战 151
8.2 代码的安全编程 152
8.2.1 系统安全架构设计 152
8.2.2 输入数据可信性验证 152
8.2.3 缓冲区溢出防范 153
8.2.4 程序错误与异常处理 154
8.3 代码完整性保护 155
8.3.1 软件水印技术 155
8.3.2 代码混淆技术 155
8.3.3 代码隐藏 159
8.3.4 数据执行保护 159
8.4 典型应用 159
8.4.1 安全编码标准 159
8.4.2 代码保护工具 160
8.5 未来发展趋势 161
8.6 小结 161
参考文献 161
第9章 控制流完整性保护 163
9.1 控制流劫持 163
9.1.1 程序的控制流转移 163
9.1.2 控制流劫持攻击 164
9.2 控制流完整性保护 165
9.2.1 控制流完整性的定义 165
9.2.2 控制流完整性保护过程 166
9.3 控制流完整性保护方案介绍 167
9.3.1 粗粒度的CFI保护 168
9.3.2 细粒度的CFI保护 175
9.3.3 硬件辅助的CFI保护 179
9.4 典型应用 185
9.5 未来发展趋势 186
9.6 小结 186
参考文献 187
第 10章 数据流与数据流完整性保护 188
10.1 数据流定义 188
10.2 数据流分析方法及分类 188
10.2.1 程序控制流图 188
10.2.2 程序数据流图 189
10.2.3 数据流分析方法 190
10.3 典型数据流分析方法 193
10.3.1 定义可达分析 194
10.3.2 存活变量分析 196
10.3.3 典型数据流分析方法总结 199
10.4 数据流分析方法的典型应用场景 200
10.4.1 漏洞挖掘 200
10.4.2 软件测试 202
10.4.3 代码表示 203
10.5 数据流完整性保护 204
10.5.1 数据流完整性概念 204
10.5.2 数据流完整性保护实例 204
10.5.3 数据完整性保护的发展与挑战 206
10.6 典型应用 209
10.6.1 面向操作系统内核的数据流完整性保护 209
10.6.2 面向实时系统的数据流完整性保护 210
10.7 未来发展趋势 210
10.8 小结 211
参考文献 211
第 11章 软件随机化保护技术 213
11.1 ASLR介绍 213
11.1.1 回顾:虚拟地址空间布局 213
11.1.2 ASLR 215
11.1.3 PIC和PIE技术 218
11.1.4 实例:Windows操作系统上的ASLR机制 219
11.2 ASLR的分类和实例 223
11.2.1 时间维度 223
11.2.2 粒度维度 226
11.2.3 方法维度 228
11.3 拓展:ASLR其他相关研究 231
11.3.1 内核ASLR 231
11.3.2 Retouching 232
11.4 指令集随机化相关研究 233
11.4.1 指令集直接加解密 233
11.4.2 ASIST 234
11.4.3 Polyglot 236
11.5 典型应用 238
11.6 未来发展趋势 239
11.7 小结 239
参考文献 240
猜您喜欢