C语言安全编程与漏洞防御

📚 共计 30 章节
01
C语言安全概述
缓冲区溢出、格式化字符串、整数溢出等常见漏洞类型介绍,安全编程的重要性。
漏洞分类安全基础
02
内存布局与指针安全
进程内存布局(栈、堆、BSS、数据段、代码段),指针的初始化与野指针,指针运算的风险。
内存模型指针
03
缓冲区溢出原理
栈帧结构、函数调用约定、返回地址覆盖、Shellcode注入的基本概念。
栈溢出Shellcode
04
字符串操作安全
strcpy、strcat、sprintf等危险函数分析,strncpy、snprintf等安全替代方案。
字符串安全函数
05
格式化字符串漏洞
printf家族函数的漏洞原理,%n格式符的危害,格式化字符串的防御。
格式化%n
06
整数安全
整数溢出、符号错误、截断错误,安全整数运算库的使用。
整数溢出类型转换
07
数组与指针安全
数组越界访问、指针算术错误、多维数组的安全使用。
数组指针运算
08
动态内存管理安全
malloc/calloc/realloc/free的正确使用,内存泄漏、双重释放、Use-After-Free。
堆管理UAF
09
文件操作安全
文件路径遍历、符号链接攻击、临时文件安全、文件权限管理。
路径遍历符号链接
10
命令行参数与环境变量
命令行注入、环境变量污染、安全的参数解析。
注入环境变量
11
信号处理安全
信号处理函数的可重入性、竞态条件、安全的信号处理模式。
信号可重入
12
setjmp/longjmp安全
非局部跳转的风险、栈帧破坏、安全的异常处理。
跳转异常
13
并发与线程安全
数据竞争、死锁、线程安全函数、互斥锁的正确使用。
线程互斥锁
14
输入验证与净化
输入长度检查、字符集过滤、白名单与黑名单策略。
验证过滤
15
安全编码规范
MISRA C、CERT C编码标准介绍,静态分析工具的使用。
规范静态分析
16
编译时防御机制
栈保护(Stack Canary)、ASLR、PIE、RELRO、NX位。
编译选项Canary
17
运行时防御机制
地址空间布局随机化、数据执行保护、安全异常处理。
ASLRDEP
18
加密与哈希基础
OpenSSL库的基本使用,对称/非对称加密,哈希函数的安全应用。
OpenSSL哈希
19
随机数生成安全
伪随机数生成器的弱点,安全的随机数生成方法。
PRNG
20
时间与状态管理
时间检查与使用(TOCTOU)漏洞,安全的文件状态检查。
TOCTOU竞态
21
网络编程安全
socket编程中的常见漏洞,字节序处理,拒绝服务攻击防御。
SocketDoS
22
Web服务与CGI安全
CGI环境变量注入、HTTP头注入、安全的CGI编程。
CGIHTTP注入
23
库与API安全
动态库劫持、API滥用、安全的库调用模式。
DLL劫持API
24
错误处理与日志
安全的错误处理模式,日志注入防御,敏感信息泄露防护。
日志信息泄露
25
安全审计与代码审查
代码审查流程、常见漏洞模式识别、自动化审计工具。
审计代码审查
26
模糊测试基础
模糊测试原理、LibFuzzer/AFL的使用,测试用例生成。
FuzzingLibFuzzer
27
漏洞利用缓解
控制流完整性(CFI)、影子栈、内存标记。
CFI影子栈
28
嵌入式系统安全
资源受限环境下的安全编程,固件安全,硬件抽象层安全。
嵌入式固件
29
安全开发生命周期
威胁建模、安全需求、安全设计、安全测试、安全部署。
SDL威胁建模
30
综合案例分析与实战
真实CVE漏洞分析,从漏洞发现到修复的完整流程。
CVE实战