第一部分:导论与基础
第1章 引言
- 1.1 工控系统的独特性和重要性
- 实时性、可靠性、长生命周期的要求
- 与IT系统的差异:后果不再是信息泄露,而是物理世界的中断与破坏
- 1.2 为什么C语言依然是工控领域的主流?
- 1.3 漏洞、Bug与功能安全:一个糟糕的三角关系
- 定义:漏洞(可被利用的弱点) vs Bug(一般性缺陷)
- 功能安全标准(如IEC 61508, ISO 26262)与信息安全的关系
- 1.4 本书的目标与读者对象
- 1.5 如何使用本书:案例学习指南
第2章 工控C编程环境与常见陷阱
- 2.1 典型工控环境概述
- PLC、RTU、DCS、SCADA系统组件
- 常见的处理器架构(x86, ARM, PowerPC)和编译器(GCC, ICC, Keil, IAR)
- 2.2 C标准的选择与困境
- C89/C90, C99, C11 在工控领域的应用现状
- 编译器扩展和未定义行为(Undefined Behavior)的坑
- 2.3 基本安全编码理念
- 防御性编程
- 失效安全(Fail-Safe)原则
- 最小权限原则
- 深度防御
第二部分:100个工控C语言漏洞与Bug案例详解
第3章 内存管理灾难
- 主题: 堆栈溢出、堆溢出、Use-after-free、Double-free、内存泄漏、未初始化内存访问、错误的指针运算。
第4章 缓冲区之殇
- 主题: 数组越界(读/写)、字符串操作错误(strcpy, sprintf, gets等)、经典的栈缓冲区溢出攻击原理。
第5章 整数运算的陷阱
- 主题: 整数溢出、符号错误(Signed/Unsigned Mismatch)、截断错误、不当的循环计数器。
第6章 并发与实时性的噩梦
- 主题: 竞态条件、死锁、优先级反转、中断处理程序中的错误、 volatile关键字误用、非可重入函数的使用。
第7章 危险的输入与信任边界
- 主题: 缺乏输入验证(协议解析、HMI输入、网络数据)、命令注入、格式化字符串漏洞、路径遍历。
第8章 逻辑与算法缺陷
- 主题: 错误的状态机实现、边界条件处理不当、差一错误(Off-by-one)、浮点数精度问题、除零错误。
第9章 编译器与硬件相关陷阱
- 主题: 未定义行为、编译器优化导致的意外结果、内存对齐问题、字节序(Endianness)问题、访问硬件寄存器时的错误。
第三部分:超越单个Bug:构建安全可靠的系统
第10章 系统级防御策略
- 10.1 防御性设计模式
- 心跳机制、看门狗、数据校验(CRC、校验和)、安全状态机。
- 10.2 代码质量保障体系
- 静态代码分析(Lint, Coverity, Klocwork)工具的使用与规则配置。
- 单元测试、集成测试、模糊测试(Fuzzing)在工控中的应用。
- 代码审查清单(Checklist)。
- 10.3 运行时保护技术
- 堆栈金丝雀(Stack Canaries)、DEP/NX、ASLR(在支持它的工控OS上)。
- 内存保护单元(MPU)的使用。
第11章 开发流程与文化
- 11.1 将安全嵌入开发生命周期(SDL)
- 11.2 遵循安全编码标准
- MISRA C, CERT C, CWE Top 25 等标准的参考与落地。
- 11.3 漏洞管理与应急响应
第12章 总结与展望
- 12.1 100个案例的共性教训回顾
- 12.2 工控安全的未来:从功能安全到网络安全一体化
- 12.3 致开发者:思维的转变
附录
- 附录A:CWE最常见25大漏洞列表(工控视角解读)
- 附录B:相关安全编码标准速查表(MISRA C:2012, CERT C规则摘要)
- 附录C:推荐工具链(静态分析、动态测试工具)
- 附录D:术语表
- 参考文献
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/95518.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/95518.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/95518.shtml
如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!