《固件安全基线自查清单课程》
第1章 固件安全概述

一、固件安全概述

1.1 固件定义

固件(Firmware)是一种嵌入在硬件设备中的特殊软件,它存储在非易失性存储器(如ROM、Flash、EEPROM)中,负责控制设备的底层操作和初始化过程。与普通软件不同,固件与硬件紧密耦合,是硬件与上层操作系统之间的桥梁。

特性 说明
存储位置 ROM、Flash、EEPROM、NVRAM
更新方式 固件升级(Firmware Update / OTA)
生命周期 通常与硬件设备同寿命,但可更新
典型设备 路由器、IoT设备、UEFI BIOS、嵌入式控制器
上层软件 (Operating System / Applications) 固件 (Firmware) — 桥梁与核心 硬件 (Hardware) — CPU / 内存 / 外设

▲ 固件在硬件与软件之间的桥梁作用

1.2 固件安全的重要性

固件安全是设备安全的基石。一旦固件被攻破,攻击者可以获得设备的完全控制权,且攻击往往具有持久性和隐蔽性。以下是固件安全至关重要的几个原因:

  • 底层控制权:固件运行在最高特权级别(如Ring -2 / SMM),可绕过所有操作系统安全机制。
  • 持久化攻击:固件驻留在非易失性存储器中,即使系统重装或硬盘格式化,恶意固件依然存在。
  • 供应链风险:固件可能在设备出厂前就被植入后门,影响整个供应链。
  • 难以检测:传统杀毒软件和EDR无法扫描固件层,攻击行为难以被发现。
  • 连锁效应:一个固件漏洞可能影响数百万台同类型设备。
固件被攻破 完全控制设备 持久化 & 隐蔽 绕过所有安全机制 固件安全是设备安全的“最后一道防线”

▲ 固件安全风险金字塔

1.3 常见固件攻击面分析

固件攻击面广泛,攻击者可以从多个维度发起攻击。以下是最常见的攻击面分类:

攻击面类别 具体攻击向量 风险等级
固件更新机制 未签名固件、降级攻击、中间人劫持更新包 🔴 高
调试接口 JTAG/SWD未锁定、UART串口暴露、调试日志泄露 🔴 高
存储安全 固件明文存储、Flash读取保护缺失、密钥硬编码 🟡 中
启动过程 安全启动绕过、Bootloader漏洞、未验证的启动镜像 🔴 高
运行时攻击 缓冲区溢出、格式化字符串、内存损坏 🟡 中
侧信道攻击 功耗分析、电磁辐射、时序攻击 🟢 低
更新 调试 存储 启动 运行时 侧信道 固件 设备

▲ 固件攻击面全景图(六大攻击向量)

1.4 固件安全基线自查清单(本节要点)

基于以上分析,固件安全基线自查应重点关注以下方面:

  1. 确认固件更新机制的安全性:是否使用数字签名?是否支持防回滚?
  2. 检查调试接口是否已锁定:JTAG/SWD是否禁用?UART是否暴露?
  3. 验证固件存储安全:Flash是否加密?密钥是否安全存储?
  4. 确保安全启动链完整:从Bootloader到OS的每个阶段是否经过验证?
  5. 评估运行时防护措施:是否启用ASLR、DEP、栈保护?
  6. 审查供应链安全:固件来源是否可信?是否有SBOM(软件物料清单)?
基线检查完成度 60% ✅ 更新签名 ✅ 调试锁定 ✅ 存储加密 ⏳ 启动验证 ⏳ 运行时防护 ⏳ 供应链审查 ❌ 侧信道防护

▲ 固件安全基线自查进度示例

💡 核心要点:固件安全是设备安全的“信任根”。在开展基线自查时,应优先关注更新机制、调试接口和启动链这三个高风险面,它们是大多数固件攻击的突破口。