嵌入式安全威胁概述
安全编码的重要性
常见漏洞类型
缓冲区溢出/整数溢出/格式化字符串
变量初始化
未定义行为
类型转换陷阱
sizeof与strlen误用
栈缓冲区溢出原理
gets/strcpy/strcat危险函数
安全替代函数 strncpy/strncat/snprintf
边界检查策略
静态分析工具
整数溢出/回绕/符号错误
安全比较技巧
SafeInt与编译器内置检查
printf/scanf家族漏洞原理
%n的危害
防御措施与格式化字符串审计
空指针解引用
野指针/悬挂指针
指针算术越界
const正确性
malloc/calloc/realloc/free正确使用
内存泄漏检测
double-free与use-after-free
C字符串表示缺陷
strncpy的陷阱
snprintf正确用法
自定义安全字符串库
数组下标越界
柔性数组成员
静态分析边界
运行时边界检查 _FORTIFY_SOURCE
文件路径遍历
符号链接攻击
临时文件安全
文件权限管理
所有输入都是邪恶的
白名单vs黑名单
正则表达式安全
输入长度限制
argc/argv安全处理
环境变量污染
setuid程序风险
信号处理函数限制
可重入性
volatile sig_atomic_t
异步信号安全函数
线程安全
互斥锁使用/死锁预防
原子操作
数据竞争检测
伪随机数生成器(PRNG)安全
真随机数获取
密钥管理基础
常见加密库使用
栈保护 -fstack-protector
PIE/PIC/RELRO/NX/ASLR
编译警告级别
PC-Lint/Coverity/Cppcheck
MISRA-C规则
常见误报处理
Valgrind内存检查
AddressSanitizer
UndefinedBehaviorSanitizer
fuzzing基础
断言(assert)使用
契约式设计
错误处理策略
日志安全
资源受限环境安全权衡
裸机与RTOS安全差异
中断安全
固件加密与签名
安全启动链
JTAG/SWD调试接口保护
socket编程安全
TLS/DTLS集成
协议解析安全
DoS防护
MQTT/CoAP安全实践
设备身份认证
OTA更新安全
物理安全
团队规范制定流程
代码审查清单
自动化检查集成CI/CD
Heartbleed漏洞分析
Stagefright漏洞
嵌入式设备真实漏洞
汽车CAN总线攻击
医疗设备漏洞
工控系统(ICS)安全事件
MISRA-C / CERT C编码标准
ISO 26262 (汽车功能安全)
IEC 62304 (医疗软件)
渗透测试基础
模糊测试 AFL/libFuzzer
回归测试/覆盖率分析
安全编码最佳实践总结
AI辅助安全编码
形式化验证简介
持续学习资源