《固件安全基线自查清单课程》
第1章 固件安全概述
一、固件安全概述
1.1 固件定义
固件(Firmware)是一种嵌入在硬件设备中的特殊软件,它存储在非易失性存储器(如ROM、Flash、EEPROM)中,负责控制设备的底层操作和初始化过程。与普通软件不同,固件与硬件紧密耦合,是硬件与上层操作系统之间的桥梁。
| 特性 | 说明 |
|---|---|
| 存储位置 | ROM、Flash、EEPROM、NVRAM |
| 更新方式 | 固件升级(Firmware Update / OTA) |
| 生命周期 | 通常与硬件设备同寿命,但可更新 |
| 典型设备 | 路由器、IoT设备、UEFI BIOS、嵌入式控制器 |
▲ 固件在硬件与软件之间的桥梁作用
1.2 固件安全的重要性
固件安全是设备安全的基石。一旦固件被攻破,攻击者可以获得设备的完全控制权,且攻击往往具有持久性和隐蔽性。以下是固件安全至关重要的几个原因:
- 底层控制权:固件运行在最高特权级别(如Ring -2 / SMM),可绕过所有操作系统安全机制。
- 持久化攻击:固件驻留在非易失性存储器中,即使系统重装或硬盘格式化,恶意固件依然存在。
- 供应链风险:固件可能在设备出厂前就被植入后门,影响整个供应链。
- 难以检测:传统杀毒软件和EDR无法扫描固件层,攻击行为难以被发现。
- 连锁效应:一个固件漏洞可能影响数百万台同类型设备。
▲ 固件安全风险金字塔
1.3 常见固件攻击面分析
固件攻击面广泛,攻击者可以从多个维度发起攻击。以下是最常见的攻击面分类:
| 攻击面类别 | 具体攻击向量 | 风险等级 |
|---|---|---|
| 固件更新机制 | 未签名固件、降级攻击、中间人劫持更新包 | 🔴 高 |
| 调试接口 | JTAG/SWD未锁定、UART串口暴露、调试日志泄露 | 🔴 高 |
| 存储安全 | 固件明文存储、Flash读取保护缺失、密钥硬编码 | 🟡 中 |
| 启动过程 | 安全启动绕过、Bootloader漏洞、未验证的启动镜像 | 🔴 高 |
| 运行时攻击 | 缓冲区溢出、格式化字符串、内存损坏 | 🟡 中 |
| 侧信道攻击 | 功耗分析、电磁辐射、时序攻击 | 🟢 低 |
▲ 固件攻击面全景图(六大攻击向量)
1.4 固件安全基线自查清单(本节要点)
基于以上分析,固件安全基线自查应重点关注以下方面:
- 确认固件更新机制的安全性:是否使用数字签名?是否支持防回滚?
- 检查调试接口是否已锁定:JTAG/SWD是否禁用?UART是否暴露?
- 验证固件存储安全:Flash是否加密?密钥是否安全存储?
- 确保安全启动链完整:从Bootloader到OS的每个阶段是否经过验证?
- 评估运行时防护措施:是否启用ASLR、DEP、栈保护?
- 审查供应链安全:固件来源是否可信?是否有SBOM(软件物料清单)?
▲ 固件安全基线自查进度示例
💡 核心要点:固件安全是设备安全的“信任根”。在开展基线自查时,应优先关注更新机制、调试接口和启动链这三个高风险面,它们是大多数固件攻击的突破口。