內容簡介
微軟資深安全技術專家撰寫,系統且深入闡釋威脅建模的工具、方法、原則和實踐,對威脅建模的各種常見問題進行深入分析,涉及識別安全威脅、處理安全威脅、安全措施、徹底解決安全威脅等內容,能為程式設計師開發安全軟體提供有效指導。
《威脅建模:設計和交付更安全的軟體》分為五部分,共19章。第一部分(第1~2章)涉及入門知識,介紹威脅建模的策略、軟體建模的不同方法,以及威脅建模的方式與方法。第二部分(第3~6章)介紹威脅發現方面的知識,全面介紹並分析人們對信息技術進行威脅建模的不同方法與工具。第三部分(第7~11章)介紹管理和解決威脅方面的內容,包括處理威脅、管理威脅以及可以用於解決威脅的策略和方法。第四部分(第12~16章)介紹在特定技術領域及其他相關領域威脅建模,包括網路及雲系統、賬戶和身份、密碼學及用於開啟自己的安全需求分析的“需求手冊”。第五部分(第17~19章)針對經驗豐富的威脅建模人員、安全專家、流程設計師提出如何為特定的組織構建和定製威脅建模流程。附錄補充了一些威脅建模相關的信息,可以幫助讀者快速套用威脅建模技術。
如果你是一名軟體開發人員、系統管理人員或者安全專業人員,本書將告訴你在安全開發軟體的生命周期中或者軟體和系統總體設計的過程中如何使用威脅建模方法。在本書中,安全技術專家Adam Shostack系統且深入闡釋了自己對威脅建模的理解與實踐。與其他書籍不同,本書詳細介紹如何從開始設計軟體、計算機服務和計算機系統時就構建與提升其安全性。
在安全事件威脅到你或者你的客戶之前及時發現並修復。
幫助軟體開發人員、IT專業人員和安全愛好者學習使用實用且操作性極強的工具、技術和方法。
探尋以軟體為關鍵要素的威脅建模方法的微妙之處,探索其套用於軟體和信息系統在構建及設計、維護等階段的威脅建模方法。
在複雜系統管理中套用威脅建模方法提升其安全性。
採用結構化理論框架管理潛在的安全威脅。
發現並識別不斷變化的安全威脅。
《威脅建模:設計和交付更安全的軟體》提及的方法對於任何軟體類型、作業系統、編程方法和技術均有效,可操作性極強,且其已在微軟和其他IT公司中得到印證。
圖書目錄
譯者序:威脅建模——網路安全的“銀彈”
前言
鳴謝
第一部分 入門指南
第1章 潛心開始威脅建模 3
1.1 學習威脅建模 4
1.1.1 你正在構建什麼 4
1.1.2 哪些地方可能會出錯 6
1.1.3 解決每個威脅 9
1.1.4 檢查你的工作 17
1.2 獨立威脅建模 19
1.3 潛心開始威脅建模的檢查列表 19
1.4 小結 20
第2章 威脅建模策略 21
2.1 “你的威脅模型是什麼樣?” 21
2.2 集體研討 22
2.2.1 集體研討的變種方法 23
2.2.2 文獻檢索 24
2.2.3 集體研討方法的觀點 25
2.3 系統的威脅建模方法 25
2.3.1 關注資產 27
2.3.2 關注攻擊者 29
2.3.3 關注軟體 30
2.4 軟體模型 31
2.4.1 圖表類型 32
2.4.2 數據流圖 32
2.4.3 信任邊界 36
2.4.4 圖表中包含的內容 37
2.4.5 複雜圖 38
2.4.6 圖的標籤 38
2.4.7 圖中的顏色 39
2.4.8 入口點 39
2.4.9 表驗證 39
2.5 小結 41
第二部分 發現威脅
第3章 STRIDE方法 45
3.1 理解STRIDE方法及其為何有用 45
3.2 假冒威脅 47
3.2.1 在同一台機器上假冒一個進程或檔案 48
3.2.2 假冒一台機器 48
3.2.3 人員假冒 48
3.3 篡改威脅 49
3.3.1 篡改檔案 49
3.3.2 篡改記憶體 49
3.3.3 篡改網路 50
3.4 否認威脅 50
3.4.1 攻擊日誌 50
3.4.2 否認一種行為 51
3.5 信息泄露威脅 51
3.5.1 進程信息泄露 52
3.5.2 數據存儲信息泄露 52
3.5.3 數據流中的信息泄露 52
3.6 拒絕服務威脅 53
3.7 許可權提升威脅 53
3.7.1 通過崩潰進程提升許可權 53
3.7.2 通過授權失效提升許可權 54
3.8 擴展示例:針對Acme-DB的STRIDE威脅 54
3.9 STRIDE變種 56
3.9.1 STRIDE-per-Element 56
3.9.2 STRIDE-per-Interaction 58
3.9.3 DESIST方法 61
3.10 準出條件 61
3.11 小結 62
第4章 攻擊樹 63
4.1 使用攻擊樹 63
4.1.1 利用攻擊樹尋找威脅 64
4.1.2 創建新的攻擊樹 64
4.2 展現一個攻擊樹 66
4.2.1 人類可識別的表現形式 66
4.2.2 結構化的表示法 70
4.3 攻擊樹示例 70
4.4 真實的攻擊樹 71
4.4.1 詐欺攻擊樹 71
4.4.2 選舉操作評估威脅樹 73
4.4.3 思維導圖 73
4.5 有關攻擊樹的觀點 75
4.6 小結 75
第5章 攻擊庫 76
5.1 攻擊庫屬性 76
5.1.1 攻擊庫及檢查列表 77
5.1.2 攻擊庫與文檔檢查 78
5.2 CAPEC 78
5.2.1 準出條件 80
5.2.2 有關CAPEC的觀點 81
5.3 OWASP前十名 81
5.4 小結 82
第6章 隱私工具 83
6.1 Solove的隱私分類 84
6.2 網際網路協定的隱私考慮 85
6.3 隱私影響評估 86
6.4 Nymity Slider和隱私棘輪 86
6.5 語境完整性 88
6.5.1 語境完整性啟發式決策 88
6.5.2 擴大的語境完整性啟發法 89
6.5.3 有關語境完整性的觀點 89
6.6 LINDDUN助記符 90
6.7 小結 91
第三部分 管理和解決威脅
第7章 處理和管理威脅 95
7.1 開始威脅建模項目 95
7.1.1 何時開始威脅建模 95
7.1.2 從哪裡開始和(計畫)在哪結束 97
7.1.3 從哪裡入手 97
7.2 深入分析減緩方法 99
7.2.1 減緩順序 99
7.2.2 下棋 100
7.2.3 目標優選 100
7.2.4 逃避熊的襲擊 100
7.3 利用表格和列表跟蹤 101
7.3.1 追蹤威脅 101
7.3.2 建立假設 103
7.3.3 外部安全註解 103
7.4 威脅建模的特定場景元素 105
7.4.1 客戶/供應商信任邊界 105
7.4.2 新技術 105
7.4.3 對API威脅建模 107
7.5 小結 108
第8章 防禦策略及技術 109
8.1 減緩威脅的策略及技術 109
8.1.1 認證:減緩欺騙威脅 110
8.1.2 完整性:減緩篡改威脅 111
8.1.3 不可否認性:減緩否認威脅 113
8.1.4 機密性:減緩信息暴露威脅 115
8.1.5 可用性:減緩拒絕服務威脅 117
8.1.6 授權:減緩許可權提升威脅 118
8.1.7 策略和技術陷阱 119
8.2 利用模式解決威脅 120
8.2.1 標準部署 120
8.2.2 解決CAPEC威脅 120
8.3 減緩隱私威脅 120
8.3.1 最小化 120
8.3.2 加密 121
8.3.3 遵從性和政策 123
8.4 小結 123
第9章 解決威脅時的權衡 125
9.1 風險管理的經典策略 125
9.1.1 迴避風險 126
9.1.2 解決風險 126
9.1.3 接受風險 126
9.1.4 轉移風險 126
9.1.5 忽略風險 127
9.2 為風險管理選擇減緩措施 127
9.2.1 改變設計 127
9.2.2 套用標準減緩技術 130
9.2.3 設計定製的減緩措施 132
9.2.4 模糊編碼不是減緩威脅措施 132
9.3 針對特定威脅的優先權方法 133
9.3.1 簡單方法 133
9.3.2 利用錯誤欄威脅排序 134
9.3.3 成本估算方法 135
9.4 通過接受風險來減緩威脅 138
9.5 減緩策略中的軍備競賽 139
9.6 小結 139
第10章 驗證威脅是否已解決 141
10.1 測試威脅減緩 142
10.1.1 測試過程完整性 142
10.1.2 如何測試減緩 142
10.1.3 滲透測試 143
10.2 檢查你獲取的代碼 143
10.2.1 構建軟體模型 144
10.2.2 利用軟體模型 145
10.3 問答式威脅建模 145
10.3.1 模型/現實一致性 146
10.3.2 任務和過程的完成 146
10.3.3 漏洞檢查 146
10.4 解決威脅的過程各方面 147
10.4.1 威脅建模授權測試;測試授權威脅建模 147
10.4.2 驗證/轉換 147
10.4.3 操作過程中記錄假設 148
10.5 表格與列表 148
10.6 小結 150
第11章 威脅建模工具 151
11.1 通用工具 151
11.1.1 白板 151
11.1.2 辦公套件 152
11.1.3 漏洞跟蹤系統 152
11.2 開放原始碼工具 153
11.2.1 TRIKE 153
11.2.2 SeaMonster 153
11.2.3 許可權提升紙牌遊戲 153
11.3 商業工具 154
11.3.1 Threat Modeler 155
11.3.2 Corporate Threat Modeller 155
11.3.3 SecurITree 155
11.3.4 Little-JIL 155
11.3.5 微軟的SDL威脅建模工具 155
11.4 尚不存在的工具 158
11.5 小結 159
第四部分 科技和棘手
領域的威脅建模
第12章 需求手冊 163
12.1 為何需要“手冊” 163
12.2 需求、威脅、減緩威脅之間相互作用 164
12.3 商業需求 165
12.3.1 優於競爭 165
12.3.2 產業需求 165
12.3.3 場景驅動的需求 166
12.4 防禦/檢測/回響需求框架 166
12.4.1 防禦 166
12.4.2 檢測 168
12.4.3 回響 169
12.5 人員/過程/技術作為需求的框架 170
12.5.1 人員 170
12.5.2 過程 170
12.5.3 技術 170
12.6 開發需求與採購需求 171
12.7 合規性驅動的需求 171
12.7.1 雲服務安全聯盟 171
12.7.2 NISTPublication200 172
12.7.3 支付卡行業數據安全標準 173
12.8 隱私需求 173
12.8.1 公平信息處理條例 173
12.8.2 從設計著手保護隱私 174
12.8.3 身份識別七法則 174
12.8.4 微軟開發隱私標準 175
12.9 STRIDE需求 175
12.9.1 認證 176
12.9.2 完整性 177
12.9.3 不可否認性 178
12.9.4 機密性 178
12.9.5 可用性 178
12.9.6 授權 178
12.10 非需求 179
12.10.1 操作非需求 180
12.10.2 警告和提示 180
12.10.3 微軟的“十個不變法則” 180
12.11 小結 181
第13章 網路與雲威脅 182
13.1 網路威脅 182
13.1.1 網站威脅 182
13.1.2 網路瀏覽器和外掛程式威脅 183
13.2 雲租戶威脅 184
13.2.1 內部威脅 184
13.2.2 合租威脅 185
13.2.3 合規性威脅 185
13.2.4 法律威脅 185
13.2.5 電子取證回響威脅 186
13.2.6 各種各樣的威脅 186
13.3 雲供應者威脅 186
13.3.1 直接來自租戶的威脅 186
13.3.2 租戶行為導致的威脅 187
13.4 移動威脅 187
13.5 小結 188
第14章 賬戶與身份識別 189
14.1 賬戶生命周期 190
14.1.1 創建賬戶 190
14.1.2 賬戶維護 192
14.1.3 賬戶終止 192
14.1.4 賬戶生命周期檢查列表 193
14.2 認證 193
14.2.1 登錄 194
14.2.2 登錄失敗 195
14.2.3 對於“你所擁有的”威脅 197
14.2.4 對“你是誰”的威脅 197
14.2.5 對“你所知道的”威脅 199
14.2.6 認證檢查列表 202
14.3 賬戶恢復 202
14.3.1 時間和賬戶恢復 203
14.3.2 賬戶恢復郵件 204
14.3.3 基於知識的認證 204
14.3.4 社會認證 207
14.3.5 賬戶恢復的攻擊者驅動分析 208
14.3.6 多渠道認證 209
14.3.7 賬戶恢復檢查列表 209
14.4 姓名、ID和SSN 210
14.4.1 姓名 210
14.4.2 身份證明檔案 212
14.4.3 社保號及其他國家身份識別號 213
14.4.4 身份盜用 215
14.4.5 姓名、ID及SSN檢查列表 215
14.5 小結 216
第15章 人類因素與可用性 217
15.1 人的模型 218
15.1.1 套用人的行為模型 218
15.1.2 人的模型認知科學 220
15.1.3 人的啟發式模型 223
15.2 軟體情景模型 225
15.2.1 對軟體進行建模 225
15.2.2 軟體模型的圖表 227
15.2.3 對電子社會工程攻擊的建模 229
15.3 威脅引出技術 229
15.3.1 集體研討 230
15.3.2 威脅建模的儀式方法 230
15.3.3 儀式分析啟發式 230
15.3.4 將可用性融於四步框架 233
15.4 解決人類因素的工具和技術 233
15.4.1 抑制人類因素作用的謬見 233
15.4.2 良好的設計決策模型 234
15.4.3 良好學習環境的設計模型 236
15.5 用戶界面工具和技術 237
15.5.1 配置 237
15.5.2 顯式警示 238
15.5.3 吸引注意力的模型 239
15.6 測試人類因素 240
15.6.1 良好和惡劣的情景 240
15.6.2 生態有效性 241
15.7 有關可用性與儀式的觀點 242
15.8 小結 243
第16章 密碼系統威脅 244
16.1 密碼原語 245
16.1.1 基本原語 245
16.1.2 隱私原語 248
16.1.3 現代加密原語 248
16.2 典型威脅角色 250
16.3 針對密碼系統的攻擊 251
16.4 用密碼創建 253
16.4.1 做決定 253
16.4.2 準備升級 254
16.4.3 密鑰管理 254
16.4.4 解密之前驗證 255
16.5 關於密碼需要記住的事情 255
16.5.1 使用專業人士設計的密碼系統 255
16.5.2 用專業人士創建或測試的密碼代碼 255
16.5.3 密碼不是安全魔塵 256
16.5.4 假設都會公開 256
16.5.5 你仍需要管理密鑰 256
16.6 加密系統:Kerckhoffs及其原則 256
16.7 小結 257
第五部分 更上一層樓
第17章 將威脅建模帶到你的組織機構中 261
17.1 如何引入威脅建模 262
17.2 誰做什麼 264
17.3 在開發生命周期中的威脅建模 270
17.4 克服對威脅建模的反對聲音 279
17.5 小結 281
第18章 試驗方法 283
18.1 查看縫隙 283
18.2 操作威脅模型 285
18.3 “寬街”分類法 288
18.4 博弈機器學習 293
18.5 對一家企業進行威脅建模 293
18.6 針對威脅建模方法的威脅 294
18.7 如何實驗 297
18.8 小結 298
第19章 成功的設計 299
19.1 理解流程 299
19.2 了解參與者 303
19.3 邊界對象 304
19.4 “最好”是“好”的敵人 305
19.5 展望未來 306
19.6 小結 308
附錄A 有用的工具 309
附錄B 威脅樹 315
附錄C 攻擊者列表 349
附錄D 許可權提升紙牌遊戲 365
附錄E 案例研究 372
術語表 388