軟件安全:全棧攻防實踐

周多明、周亞金

  • 出版商: 清華大學
  • 出版日期: 2026-09-01
  • 售價: $354
  • 語言: 簡體中文
  • 頁數: 191
  • ISBN: 7302726248
  • ISBN-13: 9787302726241
  • 下單後立即進貨 (約4週~6週)

  • 軟件安全:全棧攻防實踐-preview-1
  • 軟件安全:全棧攻防實踐-preview-2
  • 軟件安全:全棧攻防實踐-preview-3
  • 軟件安全:全棧攻防實踐-preview-4
  • 軟件安全:全棧攻防實踐-preview-5
  • 軟件安全:全棧攻防實踐-preview-6
  • 軟件安全:全棧攻防實踐-preview-7
軟件安全:全棧攻防實踐-preview-1

相關主題

商品描述

本書圍繞軟件安全的核心原理、漏洞利用技術、漏洞防禦機制和自動化漏洞檢測方法等方面展開,構建了“原理講解—攻擊實踐—防禦檢測”三維框架。特別針對Linux內核漏洞進行深入剖析,揭示從用戶態到內核態的完整攻防路徑。 全書共6章,涵蓋軟件安全基礎、常見用戶態漏洞攻防及內核漏洞深度解析。針對每種漏洞場景,不僅闡述了其背後的原理,還精心設計了攻擊與檢測實驗,並詳細介紹了緩解漏洞的防禦機制。為確保讀者精準復現實驗,專註漏洞本質探索,本書提供了標準化的虛擬機鏡像(集成了實驗所需的分析工具)以及配套的實驗代碼倉庫。 本書既可作為高校學生的計算機安全課程教材,也適合從事信息安全行業的工程師、系統開發者、安全愛好者閱讀,是安全領域學習者與從業者提升實戰能力的必備指南。

作者簡介

周多明,中國人民解放軍某部工程師。在操作系統安全領域有多年實際開發經驗,為Linux內核提交安全補丁100余個,曾在IEEES&P等**會議和《軟件學報》上發表論文。 周亞金,香港中文大學副教授、博士生導師。BlockSec聯合創始人。主要研究方向為區塊鏈、AI和系統安全以及新型網絡犯罪。在各類**期刊和會議發表論文70余篇,獲得IEEE S&P 2026時間檢驗獎。多次擔任IEEES&P、USENIXSecurity、ACM CCS等國際學術會議的程序委員會委員。

目錄大綱

 

目錄

 

第1 章緒論............................................ 1

1.1 軟件安全概述.................................... 1

1.1.1 基本概念.................................. 1

1.1.2 核心原則.................................. 1

1.2 程序基礎知識.................................... 3

1.2.1 程序的內存布局............................. 3

1.2.2 程序的棧幀結構............................. 5

1.2.3 函數的序言與後記............................ 5

1.2.4 ELF 文件格式............................... 6

1.2.5 程序的鏈接機制............................. 8

1.2.6 程序的權限管理............................. 9

1.3 常用工具介紹................................... 10

1.3.1 gdb 調試工具.............................. 10

1.3.2 CodeQL 靜態分析工具........................ 11

1.3.3 逆向分析工具.............................. 15

1.3.4 QEMU 模擬器............................. 16

1.3.5 git 版本控制工具............................ 17

1.3.6 漏洞利用與二進制分析庫...................... 17

1.3.7 代碼片段提取工具........................... 18

1.3.8 ELF 文件執行環境修改工具.................... 19

1.3.9 ELF 文件安全屬性查詢工具.................... 19

第2 章棧緩沖區溢出漏洞攻防............................. 20

2.1 棧緩沖區溢出漏洞簡介............................. 20

2.2 return-to-shellcode 攻擊手法......................... 21

2.2.1 攻擊原理簡介.............................. 21

2.2.2 shellcode 核心原理.......................... 22

2.2.3 return-to-shellcode 攻擊示例................... 24

2.3 return-to-libc 與ROP 攻擊手法....................... 25

2.3.1 ASLR 關閉時的return-to-libc 攻擊......................... 26

2.3.2 ASLR 開啟時的return-to-libc 攻擊......................... 29

2.3.3 棧遷移............................................. 32

2.3.4 BROP 攻擊......................................... 35

2.4 棧溢出漏洞防禦與檢測....................................... 42

2.4.1 棧溢出漏洞防禦...................................... 42

2.4.2 棧溢出漏洞檢測...................................... 44

第3 章格式化字符串漏洞攻防....................................... 46

3.1 格式化字符串漏洞簡介....................................... 46

3.2 printf() 函數的原理......................................... 46

3.3 格式化字符串漏洞攻擊手法................................... 48

3.3.1 32 位格式化字符串漏洞利用.............................. 49

3.3.2 64 位格式化字符串漏洞利用.............................. 50

3.4 格式化字符串漏洞防禦與檢測.................................. 52

3.4.1 格式化字符串漏洞防禦................................. 52

3.4.2 格式化字符串漏洞檢測................................. 52

第4 章堆漏洞攻防................................................ 54

4.1 堆內存管理簡介............................................ 54

4.1.1 堆空間的接口與使用................................... 54

4.1.2 堆的內部實現........................................ 55

4.1.3 malloc/free 接口實現................................... 60

4.1.4 堆的分配與釋放示例................................... 62

4.2 堆漏洞簡介............................................... 65

4.2.1 堆溢出漏洞.......................................... 66

4.2.2 釋放後重用漏洞...................................... 66

4.2.3 重復釋放漏洞........................................ 67

4.3 堆漏洞的利用方法.......................................... 67

4.3.1 堆溢出漏洞利用...................................... 67

4.3.2 釋放後重用漏洞利用................................... 75

4.3.3 重復釋放漏洞利用..................................... 79

4.4 堆漏洞防禦與檢測.......................................... 81

4.4.1 堆漏洞防禦.......................................... 81

4.4.2 堆漏洞檢測.......................................... 82

第5 章整數溢出漏洞攻防........................................... 89

5.1 整數溢出漏洞原理.......................................... 89

5.2 整數溢出漏洞攻擊手法....................................... 91

5.3 整數溢出漏洞防禦與檢測..................................... 93

5.3.1 整數溢出漏洞防禦..................................... 93

5.3.2 整數溢出漏洞檢測..................................... 93

第6 章Linux 內核漏洞攻防......................................... 97

6.1 Linux 內核簡介............................................ 97

6.1.1 內核子系統簡介...................................... 97

6.1.2 內核關鍵文件簡介.................................... 102

6.2 內核棧溢出漏洞........................................... 103

6.2.1 內核ret2usr 攻擊..................................... 104

6.2.2 內核ROP .......................................... 109

6.2.3 內核棧遷移......................................... 113

6.2.4 內核KPTI trampoline ................................. 116

6.2.5 內核ret2dir 攻擊..................................... 121

6.2.6 內核信息泄露....................................... 125

6.3 內核堆漏洞.............................................. 132

6.3.1 內核堆管理機制原理.................................. 133

6.3.2 內核堆內存分配與釋放示例............................. 134

6.3.3 內核堆溢出漏洞...................................... 136

6.3.4 內核空指針解引用漏洞................................. 140

6.3.5 內核釋放後重用漏洞.................................. 146

6.4 內核競態條件漏洞......................................... 161

6.4.1 內核競態條件示例.................................... 162

6.4.2 內核雙取漏洞....................................... 167

6.4.3 提高競態條件利用成功率............................... 175

6.5 內核漏洞防禦與檢測........................................ 184

6.5.1 內核漏洞防禦....................................... 184

6.5.2 內核漏洞檢測....................................... 187

參考文獻....................................................... 192