一個都不能有―軟體的19個致命安全漏洞

一個都不能有―軟體的19個致命安全漏洞

《一個都不能有―軟體的19個致命安全漏洞》是2006年清華大學出版社出版的圖書,作者是(美)豪沃(Howard,M) 等。本書本著小巧、易讀、實用的原則,涵蓋了目前流行的程式語言和運行平台,覆蓋了最為常見的與軟體安全相關的19個致命漏洞。

基本信息

圖書詳細信息

ISBN:9787302138044

定價:38元

印次:1-1

裝幀:平裝

印刷日期:2006-11-3

圖書簡介

該書採用理論和實踐相結合的方式,對於每個漏洞都給出了詳細的描述、產生的原理、查找的方法、彌補的措施等內容,同時,對於每個漏洞,作者還精選了系統中實際出現的例子加以說明,使其更直觀,令讀者印象更為深刻。另外,在彌補措施中,作者結合多種不同的語言給出具體的代碼彌補方案,從而更增強了實用性。

目錄

第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 查找漏洞模式 21

2.5 在代碼審查中查找該漏洞 21

2.6 發現該漏洞的測試技巧 21

2.7 漏洞示例 22

2.7.1 CVE-2000-0573 22

2.7.2 CVE-2000-0844 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.7.2 在SOAPParameter的對象

構造函式中存在整數溢出 39

3.7.3 在HTR塊編碼中存在的

堆溢出可以導致Web

伺服器遭到入侵 39

3.8 彌補措施 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.8.2 當檢查失敗時 67

5.9 其他防禦措施 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.3 曲解了錯誤信息 71

6.3.4 使用了無用的錯誤值 71

6.3.5 處理了錯誤的異常 71

6.3.6 處理所有的異常 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 彌補措施 76

6.8.1 C/C++彌補措施 76

6.8.2 C#、VB.NET和Java

彌補措施 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.3.6 受漏洞影響的使用

Perl的CGI程式 82

7.3.7 受漏洞影響的mod_perl 82

7.4 查找漏洞模式 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.5 PHP彌補措施 89

7.8.6 CGI彌補措施 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.6 發現該漏洞的測試技巧 99

8.7 漏洞示例 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.1 Magic URL 106

9.3.2 隱藏表單欄位 106

9.3.3 相關漏洞 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.9 其他防禦措施 114

9.10 其他資源 114

9.11 本章總結 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.7.3 Stunnel SSL代理 122

10.8 彌補措施 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章 使用基於弱口令的系統 131

11.1 漏洞概述 131

11.2 受影響的程式語言 131

11.3 漏洞詳細解釋 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.7.4 Paris Hilton劫持 138

11.8 彌補措施 138

11.8.1 多方式認證 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章 未能安全地存儲和保護數據 147

12.1 漏洞概述 147

12.2 受影響的程式語言 147

12.3 漏洞詳細解釋 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.7.4 CAN-2004-0311 156

12.7.5 CAN-2004-0391 156

12.8 彌補措施 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# .NET Framework 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章 信息泄漏 167

13.1 漏洞概述 167

13.2 受影響的程式語言 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.2 CAN-2005-1411 176

13.7.3 CAN-2005-1133 176

13.8 彌補措施 177

13.8.1 C#(以及其他程式語言)

彌補措施 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.2 受漏洞影響的C/C++ 183

14.3.3 受漏洞影響的Perl 183

14.3.4 受漏洞影響的Python 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 彌補措施 187

14.8.1 Perl彌補措施 187

14.8.2 *nix上C/C++的

彌補措施 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.1 受漏洞影響的應用程式 194

15.3.2 相關漏洞 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章 競爭條件 199

16.1 漏洞概述 199

16.2 受影響的程式語言 199

16.3 漏洞詳細解釋 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.9 其他防禦措施 206

16.10 其他資源 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.8 彌補措施 213

17.9 其他防禦措施 213

17.10 其他資源 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.3.4 相關漏洞 218

18.4 查找漏洞模式 218

18.5 在代碼審查中查找該漏洞 218

18.5.1 什麼時候應該

使用隨機數 218

18.5.2 查找使用PRNG

的地方 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.9 其他防禦措施 224

18.10 其他資源 224

18.11 本章總結 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.6 發現該漏洞的測試技巧 228

19.7 漏洞示例 228

19.7.1 SSL/TLS證書認證 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

相關詞條

熱門詞條

聯絡我們