前言
在万物互联的数字化浪潮中,软件已成为驱动现代社会运转的关键组件。
从智能家居到工业控制系统,从移动支付到自动驾驶,软件安全已超越技术
范畴,直接关乎国家安全、经济命脉乃至人类生命。一个未被正确校验的整
数可能引发卫星系统失控,一处内存越界访问足以瘫痪金融交易系统,以及
频发的医疗设备数据篡改案例,无不警示我们:每一行代码都可能成为数字
世界的致命弱点,每一次内存操作失误都暗藏着颠覆性风险。
软件攻防是一场永不停歇的军备竞赛。攻击者利用软件漏洞改写程序控
制流、读取任意内存数据、实现权限提升。这些看似抽象的技术漏洞,实则
是数字化世界的“蝴蝶效应”触发器。在APT 攻击常态化、漏洞武器商品化
的今天,掌握软件漏洞的攻防机理已成为数字时代从业者的生存技能。
本书突破传统软件安全教材的纯理论模式,构建“原理讲解—攻击实践—
防御检测”三维框架,精选具有代表性的漏洞类型,将内存布局、保护机制、
利用手法等抽象概念转化为可观测、可复现的工程实践。帮助读者实现从
“漏洞消费者”到“安全生产者”的思维跃迁。
本书共6 章,介绍了常见软件安全漏洞的产生原因、利用方法、防御方
案和检测方法。这些漏洞主要包括栈溢出漏洞、格式化字符串漏洞、整数溢
出漏洞、堆相关漏洞等,针对这些常见的漏洞类型分别提供了攻击实验和检
测实验。特别针对“皇冠上的明珠”——Linux 内核漏洞攻防进行重点介绍,
系统阐述Linux 内核三大漏洞类型(栈溢出漏洞、堆漏洞、竞态条件漏洞)的
原理、利用手法及防御检测方法,结合现代操作系统防御机制设计多层攻防
实验,并介绍自动化内核漏洞检测方法。通过“漏洞复现—防御绕过—加固
检测”的闭环,揭示从用户态到内核态的完整攻防路径。
第1 章绪论,介绍了软件安全的基本概念、核心原则,以及Linux 系统
下的二进制程序基础知识和常用的软件分析调试工具。
第2 章栈缓冲区溢出漏洞攻防,介绍了栈缓冲区溢出漏洞产生的原因、
漏洞利用方法、防御机制,以及基于CodeQL 的漏洞检测方法。
第3 章格式化字符串漏洞攻防,介绍了格式化字符串漏洞产生的原因、
漏洞利用方法、防御方法,以及基于CodeQL 的漏洞检测方法。
第4 章堆漏洞攻防,介绍了Linux 系统中glibc 标准库堆内存管理方法、
堆漏洞产生的原因、3 种堆漏洞类型、堆漏洞利用方法、堆漏洞防御方法,以
及基于CodeQL 的堆漏洞检测方法。
第5 章整数溢出漏洞攻防,分别介绍了整数溢出漏洞的原理、攻击手法、防御方法,
以及基于CodeQL 的漏洞检测方法。
第6 章Linux 内核漏洞攻防,首先,对Linux 内核及其关键文件进行介绍;其次,分
别剖析了3 种常见的内核漏洞(栈溢出漏洞、堆漏洞和竞态条件漏洞)的原理、利用方法;
最后,探讨了针对常见内核漏洞的防御方案,并以内核双取漏洞检测为例,介绍了基于
CodeQL 的自动化检测方法。
本书系列实验基于Linux 操作系统平台完成。为了标准化实验环境,确保读者能够精
准复现各类漏洞攻击与检测场景,更好地聚焦漏洞本质机理的探索,本书提供了实验代码
仓库和Ubuntu 20.04 版本的虚拟机镜像,读者可通过扫描下方二维码获取下载链接。虚拟
机中集成了gdb 调试工具、CodeQL 静态分析工具、逆向分析工具、QEMU 模拟器、git 版
本控制工具和各类二进制文件分析与漏洞利用工具等。
限于编者水平与时间,书中难免存在不足之处,欢迎广大读者批评指正。
虚拟机下载链接代码仓库下载链接
作者
2026 年7 月
