《软件安全相关的19个致命漏洞》PDF下载

  • 购买积分:11 如何计算积分?
  • 作  者:(美)豪沃(Howard,M.),(美)勒伯兰克(LeBlanc,D.),(美)维加(Viega,J.)著;肖枫涛,杨明军译
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2006
  • ISBN:7302138044
  • 页数:252 页
图书介绍:本书就软件安全的漏洞,如:缓冲区溢出,格式化字符串问题,命令注入,跨站脚本,未能处理错误信息等,进行讲解。

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.1 CVE-1999-0042 10

1.7.2 CVE-2000-0389—CVE-2000-0392 10

1.7 漏洞示例 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.2 不可执行的栈和堆 14

1.10 其他资源 14

1.9.1 栈保护 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 查找漏洞模式 21

2.5 在代码审查中查找该漏洞 21

2.6 发现该漏洞的测试技巧 21

2.7.2 CVE-2000-0844 22

2.7.1 CVE-2000-0573 22

2.7 漏洞示例 22

2.8 弥补措施 23

2.9 其他防御措施 23

2.10 其他资源 23

2.11 本章总结 24

第3章 整数溢出 25

3.1 漏洞概述 25

3.2 受影响的编程语言 25

3.3 漏洞详细解释 26

3.3.1 受漏洞影响的C和C++ 26

3.3.2 受漏洞影响的C 31

3.3.3 受漏洞影响的Visual Basic和Visual Basic.net 32

3.3.4 受漏洞影响的Java 33

3.3.5 受漏洞影响的Perl 34

3.4 查找漏洞模式 35

3.5 在代码审查中查找漏洞 35

3.5.1 C/C++ 35

3.5.2 C 37

3.5.3 Java 37

3.5.4 Visual Basic和Visual Basic.NET 38

3.5.5 Perl 38

3.6 发现该漏洞的测试技巧 38

3.7 漏洞示例 38

3.7.1 在Windows脚本引擎中存在的漏洞可以导致任意代码执行 38

3.8 弥补措施 39

3.7.3 在HTR块编码中存在的堆溢出可以导致Web服务器遭到入侵 39

3.7.2 在SOAPParameter的对象构造函数中存在整数溢出 39

3.9 其他防御措施 41

3.10 其他资源 41

3.11 本章总结 42

第4章 SQL注入 43

4.1 漏洞概述 43

4.2 受影响的编程语言 44

4.3 漏洞详细解释 44

4.3.1 受漏洞影响的C 44

4.3.2 受漏洞影响的PHP 45

4.3.3 受漏洞影响的Perl/CGI 46

4.3.4 受漏洞影响的Java和JDBC 46

4.3.5 受漏洞影响的SQL 47

4.3.6 相关漏洞 48

4.4 查找漏洞模式 49

4.5 在代码审查中查找该漏洞 49

4.6 发现该漏洞的测试技巧 50

4.7 漏洞示例 52

4.7.1 CAN-2004-348 52

4.7.2 CAN-2002-0554 52

4.8 弥补措施 52

4.8.1 验证所有的输入 52

4.8.2 不要使用字符串连接来构造SQL语句 53

4.9 其他防御措施 56

4.10 其他资源 56

4.11 本章总结 57

第5章 命令注入 59

5.1 漏洞概述 59

5.2 受影响的编程语言 59

5.3 漏洞详细解释 59

5.4 查找漏洞模式 61

5.5 在代码审查中查找该漏洞 61

5.6 发现该漏洞的测试技巧 63

5.7 漏洞示例 64

5.7.1 CAN-2001-1187 64

5.7.2 CAN-2002-0652 64

5.8 弥补措施 65

5.8.1 数据验证 65

5.9 其他防御措施 67

5.8.2 当检查失败时 67

5.10 其他资源 68

5.11 本章总结 68

第6章 未能处理错误信息 69

6.1 漏洞概述 69

6.2 受影响的编程语言 69

6.3 漏洞详细解释 69

6.3.1 产生太多的信息 70

6.3.2 忽略了错误信息 70

6.3.6 处理所有的异常 71

6.3.5 处理了错误的异常 71

6.3.4 使用了无用的错误值 71

6.3.3 曲解了错误信息 71

6.3.7 受漏洞影响的C/C++ 72

6.3.8 Windows上受漏洞影响的C/C++ 72

6.3.9 受漏洞影响的C++ 73

6.3.10 受漏洞影响的C#、VB.NET及Java 73

6.3.11 相关漏洞 74

6.4 查找漏洞模式 74

6.5 在代码审查中查找该漏洞 74

6.6 发现该漏洞的测试技巧 75

6.7 漏洞示例 75

6.8.1 C/C++弥补措施 76

6.8.2 C#、VB.NET和Java弥补措施 76

6.8 弥补措施 76

6.9 其他资源 77

6.10 本章总结 77

第7章 跨站脚本 79

7.1 漏洞概述 79

7.2 受影响的编程语言 79

7.3 漏洞详细解释 79

7.3.1 受漏洞影响的C/C++ ISAPI应用程序或者过滤程序 80

7.3.2 受漏洞影响的ASP 81

7.3.3 受漏洞影响的ASP.NET表单 81

7.3.4 受漏洞影响的JSP 81

7.3.5 受漏洞影响的PHP 81

7.4 查找漏洞模式 82

7.3.6 受漏洞影响的使用Perl的CGI程序 82

7.3.7 受漏洞影响的mod_perl 82

7.5 在代码审查中查找该漏洞 83

7.6 发现该漏洞的测试技巧 84

7.7 漏洞示例 85

7.7.1 IBM Lotus Domino跨站脚本和HTML注入漏洞 85

7.7.2 Oracle HTTP服务器的“isqlplus”输入验证漏洞允许远程用户实施跨站脚本攻击 85

7.7.3 CVE-2002-0840 85

7.8 弥补措施 85

7.8.1 ISAPI C/C++弥补措施 86

7.8.2 ASP弥补措施 86

7.8.3 ASP.NET表单弥补措施 87

7.8.4 JSP弥补措施 87

7.8.6 CGI弥补措施 89

7.8.5 PHP弥补措施 89

7.8.7 mod_perl弥补措施 90

7.8.8 关于HTML编码的注意事项 90

7.9 其他防御措施 91

7.10 其他资源 91

7.11 本章总结 92

第8章 未能保护好网络流量 93

8.1 漏洞概述 93

8.2 受影响的编程语言 94

8.3 漏洞详细解释 94

8.4 查找漏洞模式 96

8.5 在代码审查中查找漏洞 96

8.7 漏洞示例 99

8.6 发现该漏洞的测试技巧 99

8.7.1 TCP/IP 100

8.7.2 电子邮件协议 100

8.7.3 电子商务 100

8.8 弥补措施 101

8.9 其他防御措施 104

8.10 其他资源 104

8.11 本章总结 104

第9章 使用Magic URL及隐藏表单字段 105

9.1 漏洞概述 105

9.2 受影响的编程语言 105

9.3 漏洞详细解释 105

9.3.3 相关漏洞 106

9.3.1 Magic URL 106

9.3.2 隐藏表单字段 106

9.4 查找漏洞模式 107

9.5 在代码审查中查找该漏洞 107

9.6 发现该漏洞的测试技巧 108

9.7 漏洞示例 109

9.7.1 CAN-2000-1001 109

9.7.2 MaxWebProtal隐藏表单字段修改 109

9.8 弥补措施 109

9.8.1 攻击者浏览数据 110

9.8.2 攻击者重放数据 110

9.8.3 攻击者预测数据 112

9.8.4 攻击者更改数据 113

9.11 本章总结 114

9.9 其他防御措施 114

9.10 其他资源 114

第10章 未能正确使用SSL和TLS 115

10.1 漏洞概述 115

10.2 受影响的编程语言 115

10.3 漏洞详细解释 116

10.4 查找漏洞模式 118

10.5 在代码审查查找该漏洞 119

10.6 发现该漏洞的测试技巧 120

10.7 漏洞示例 121

10.7.1 电子邮件客户端 121

10.7.2 Safari Web浏览器 121

10.8 弥补措施 122

10.7.3 Stunnel SSL代理 122

10.8.1 选择协议版本 123

10.8.2 选择加密套件 124

10.8.3 确保证书的有效性 124

10.8.4 验证主机名 126

10.8.5 检查证书撤销 126

10.9 其他防御措施 128

10.10 其他资源 129

10.11 本章总结 129

11.2 受影响的编程语言 131

11.3 漏洞详细解释 131

11.1 漏洞概述 131

第11章 使用基于弱口令的系统 131

11.4 查找漏洞模式 133

11.5 在代码审查中查找该漏洞 134

11.5.1 口令内容策略 134

11.5.2 口令修改和重置 134

11.5.3 口令协议 135

11.5.4 口令处理和存储 135

11.6 发现该漏洞的测试技巧 136

11.7 漏洞示例 136

11.7.1 CVE-2005-1505 136

11.7.2 CVE-2005-0432 137

11.7.3 TENEX漏洞 137

11.8.1 多方式认证 138

11.8 弥补措施 138

11.7.4 Paris Hilton劫持 138

11.8.2 存储以及检查口令 139

11.8.3 选择协议的原则 142

11.8.4 口令重置的原则 142

11.8.5 口令选择的原则 143

11.8.6 其他原则 144

11.9 其他防御措施 144

11.10 其他资源 145

11.11 本章总结 145

12.2 受影响的编程语言 147

12.3 漏洞详细解释 147

12.1 漏洞概述 147

第12章 未能安全地存储和保护数据 147

12.3.1 采用脆弱的访问控制机制“保护”秘密数据 148

12.3.2 受漏洞影响的访问控制 149

12.3.3 代码中内嵌秘密数据 151

12.3.4 相关漏洞 151

12.4 查找漏洞模式 151

12.5 在代码审查中查找漏洞 152

12.6 发现该漏洞的测试技巧 153

12.7 漏洞示例 155

12.7.1 CVE-2000-0100 155

12.7.2 CAN-2002-1590 155

12.7.3 CVE-1999-0886 155

12.8 弥补措施 156

12.7.5 CAN-2004-0391 156

12.7.4 CAN-2004-0311 156

12.8.1 使用操作系统的安全技术 157

12.8.2 C/C++ Windows 2000以及更新版本的弥补措施 157

12.8.3 ASP.NET 1.1以及更新版本的弥补措施 159

12.8.4 C#.NETFramework 2.0弥补措施 159

12.8.5 C/C++ Mac OS X 10.2以及更新版本的弥补措施 159

12.8.6 无需操作系统支持的弥补措施(不在代码中保存秘密数据) 160

12.8.7 Java和Java KeyStore的注意事项 162

12.9 其他防御措施 163

12.10 其他资源 164

12.11 本章总结 165

13.2 受影响的编程语言 167

13.1 漏洞概述 167

第13章 信息泄漏 167

13.3 漏洞详细解释 168

13.3.1 旁路 168

13.3.2 TMI:太多的信息! 169

13.3.3 信息流安全模型 171

13.3.4 受漏洞影响的C#(以及其他的编程语言) 173

13.3.5 相关漏洞 173

13.4 查找漏洞模式 173

13.5 在代码审查中查找该漏洞 173

13.6 发现该漏洞的测试技巧 175

13.7 漏洞示例 175

13.7.1 Dan Bernstein的AES定时攻击 175

13.7.3 CAN-2005-1133 176

13.7.2 CAN-2005-1411 176

13.8.1 C#(以及其他编程语言)弥补措施 177

13.8 弥补措施 177

13.8.2 本地网络的弥补措施 178

13.9 其他防御措施 178

13.10 其他资源 178

13.11 本章总结 179

第14章 不恰当的文件访问 181

14.1 漏洞概述 181

14.2 受影响的编程语言 182

14.3 漏洞详细解释 182

14.3.1 在Windows上受漏洞影响的C/C++ 182

14.3.4 受漏洞影响的Python 183

14.3.2 受漏洞影响的C/C++ 183

14.3.3 受漏洞影响的Perl 183

14.3.5 相关漏洞 184

14.4 查找漏洞模式 184

14.5 在代码审查中查找该漏洞 184

14.6 发现该漏洞的测试技巧 185

14.7 漏洞示例 186

14.7.1 CAN-2005-0004 186

14.7.2 CAN-2005-0799 186

14.7.3 CAN-2004-0452和CAN-2004-0448 186

14.7.4 CVE-2004-0115 Microsoft的Mac版Virtual PC 186

14.8.2 *nix上C/C++的弥补措施 187

14.8.1 Perl弥补措施 187

14.8 弥补措施 187

14.8.3 Windows上C/C++的弥补措施 188

14.8.4 获取用户临时文件的目录 188

14.8.5 .NET代码弥补措施 188

14.9 其他防御措施 189

14.10 其他资源 189

14.11 本章总结 189

第15章 轻信网络域名解析 191

15.1 漏洞概述 191

15.2 受影响的编程语言 191

15.3 漏洞详细解释 192

15.3.2 相关漏洞 194

15.3.1 受漏洞影响的应用程序 194

15.4 查找漏洞模式 195

15.5 在代码审查中查找该漏洞 195

15.6 发现该漏洞的测试技巧 195

15.7 漏洞示例 196

15.7.1 CVE-2002-0676 196

15.7.2 CVE-1999-0024 196

15.8 弥补措施 197

15.9 其他资源 198

15.10 本章总结 198

16.3 漏洞详细解释 199

16.2 受影响的编程语言 199

第16章 竞争条件 199

16.1 漏洞概述 199

16.3.1 受漏洞影响的代码 201

16.3.2 相关漏洞 201

16.4 查找漏洞模式 202

16.5 在代码审查中查找该漏洞 202

16.6 发现该漏洞的测试技巧 203

16.7 漏洞示例 204

16.7.1 CVE-2001-1349 204

16.7.2 CAN-2003-1073 204

16.7.3 CVE-2000-0849 204

16.8 弥补措施 205

16.10 其他资源 206

16.9 其他防御措施 206

16.11 本章总结 207

第17章 未认证的密钥交换 209

17.1 漏洞概述 209

17.2 受影响的语言 209

17.3 漏洞详细解释 209

17.4 查找漏洞模式 211

17.5 在代码审查中查找该漏洞 211

17.6 发现该漏洞的测试技巧 212

17.7 漏洞示例 212

17.7.1 Novell Netware MITM攻击 212

17.7.2 CAN-2004-0155 212

17.9 其他防御措施 213

17.10 其他资源 213

17.8 弥补措施 213

17.11 本章总结 214

第18章 密码学强度随机数 215

18.1 漏洞概述 215

18.2 受影响的编程语言 215

18.3 漏洞详细解释 215

18.3.1 受漏洞影响的非密码学生成器 216

18.3.2 受漏洞影响的密码字生成器 216

18.3.3 受漏洞影响的真随机数生成器 217

18.5 在代码审查中查找该漏洞 218

18.5.2 查找使用PRNG的地方 218

18.5.1 什么时候应该使用随机数 218

18.4 查找漏洞模式 218

18.3.4 相关漏洞 218

18.5.3 判断CRNG是否正确地播种 219

18.6 发现该漏洞的测试技巧 220

18.7 漏洞示例 220

18.7.1 Netscape浏览器 220

18.7.2 OpenSSL问题 221

18.8 弥补措施 221

18.8.1 Windows 221

18.8.2 .NET代码 222

18.8.3 UNIX 222

18.8.4 Java 223

18.8.5 重放数字流 223

18.11 本章总结 224

18.10 其他资源 224

18.9 其他防御措施 224

第19章 不良可用性 225

19.1 漏洞概述 225

19.2 受影响的语言 225

19.3 漏洞详细解释 225

19.3.1 谁是您的用户? 226

19.3.2 雷区:向您的用户呈现安全相关的信息 227

19.3.3 相关漏洞 227

19.4 查找漏洞模式 227

19.5 在代码审查中寻找该漏洞 227

19.7 漏洞示例 228

19.7.1 SSL/TLS证书认证 228

19.6 发现该漏洞的测试技巧 228

19.7.2 Internet Explorer 4.0根证书安装 229

19.8 弥补措施 230

19.8.1 简化UI以便用户参与 230

19.8.2 为用户做出安全决策 230

19.8.3 使有选择的松弛安全策略变得简单 231

19.8.4 明确指出后果 232

19.8.5 提供可操作性 235

19.8.6 提供集中管理 235

19.9 其他资源 235

19.10 本章总结 236

附录A 19个致命漏洞与OWASP的“前10名”漏洞的对应关系 237

附录B “要”与“不要”提示总结 239

译者术语表 247