2. 嵌入式系统基础

嵌入式设备安全基线与验收,第一步不是急着扫漏洞,而是先看清“设备由什么构成、系统怎么运行、数据从哪里进出”。只有把硬件组成、操作系统特性和通信接口这三层关系理顺,才能判断攻击面在哪里、基线该卡在哪些点上。本节围绕这三个层面展开,并给出可直接用于验收的观察清单。

一、嵌入式设备的典型组成

一台嵌入式设备通常由五类部件构成:计算核心、存储、外设接口、通信模块和电源/时钟。计算核心多为 MCU 或 SoC,MCU 常跑裸机或 RTOS,SoC 常跑 Linux;存储分为易失的 RAM 与非易失的 Flash、eMMC、SD 卡;外设接口包括 GPIO、UART、I2C、SPI、USB;通信模块覆盖以太网、Wi-Fi、蓝牙、蜂窝、CAN、RS-485;电源与时钟则决定复位行为和低功耗状态。

从安全视角看,这五类部件对应五类风险:固件是否可被读出或篡改、密钥是否明文存放、调试口是否开放、通信是否加密、异常复位是否可被利用。验收时不能只看“有没有功能”,而要看“每个部件是否暴露了不该暴露的能力”。

嵌入式设备组成与攻击面对应关系 计算核心 MCU / SoC 风险:调试口、固件提取 存储 RAM / Flash / eMMC 风险:密钥明文、回滚 通信模块 ETH / Wi-Fi / BLE / CAN 风险:明文传输、重放 外设接口 GPIO / UART / I2C / SPI 风险:未授权访问 电源与时钟 复位 / 低功耗 / 看门狗 风险:异常复位绕过 系统层 裸机 / RTOS / Linux 风险:权限、服务暴露 验收关注点:固件可读性 · 调试口状态 · 密钥存储 · 通信加密 · 服务最小化 每个部件都要回答:它暴露了什么?谁能访问?访问后能做什么?

二、RTOS 与 Linux 的系统特点对比

RTOS 的核心是确定性调度,任务优先级固定、中断延迟可预测,常见于电机控制、传感器采集等实时场景。它的安全特点是:内核小、攻击面窄,但往往缺少内存保护、用户态隔离和完整的权限模型,一旦某个任务被劫持,可能直接影响整个系统。Linux 则提供进程隔离、用户/组权限、文件系统权限、网络栈和丰富的安全模块(如 SELinux、AppArmor),但系统庞大、服务多、启动链长,攻击面明显更宽。

对比维度 RTOS 嵌入式 Linux
调度特性 优先级抢占,确定性高 CFS 调度,实时性依赖补丁
内存保护 通常无 MMU 隔离 MMU 隔离,进程独立地址空间
权限模型 弱,多为单一特权态 用户/组/文件权限,可降权
攻击面 窄,但单点失效影响大 宽,服务与协议栈多
基线重点 任务隔离、看门狗、固件校验 服务最小化、SSH 加固、日志审计

三、通信接口与常见攻击面

嵌入式设备的通信接口可分为板内总线和对外接口。板内总线如 I2C、SPI、UART 通常短距离、低速率,但若调试 UART 未关闭,攻击者可直接获得 shell。对外接口如以太网、Wi-Fi、BLE、蜂窝、CAN,面临网络扫描、协议模糊测试、中间人、重放和拒绝服务等威胁。验收时要逐项确认:接口是否默认开启、是否强制认证、是否加密、是否有速率限制和异常日志。

# 典型验收检查命令示例
# 查看监听端口与服务
netstat -tulnp

# 检查 SSH 是否允许空密码与 root 登录
grep -E "PermitEmptyPasswords|PermitRootLogin" /etc/ssh/sshd_config

# 查看串口调试是否开放
ls -l /dev/ttyS* /dev/ttyUSB*

# 检查固件分区与只读挂载
mount | grep -E "ro|rw"

常见误区:把“功能正常”等同于“安全达标”。很多设备出厂时调试串口仍可登录、Telnet 未关闭、固件未签名,功能测试完全通过,但攻击者可通过 UART 直接进入系统。验收必须包含“默认关闭、最小开放、可审计”三项硬性检查。

四、场景与复盘:从组成到攻击面的判断路径

假设一台智能网关,SoC 跑 Linux,带 Wi-Fi、BLE、以太网和 UART 调试口。验收时先画组成图,再逐层判断:计算核心是否启用安全启动;存储中密钥是否加密;通信模块是否强制 WPA3 与 TLS;外设接口中 UART 是否在生产固件中关闭;系统层是否关闭了 Telnet、是否限制 root 登录。若其中任意一项缺失,就应记为基线不符合项,并要求整改后复测。

复盘要点:攻击面不是“接口越多越危险”,而是“未受控的接口越多越危险”。一个关闭的调试口比一个开放但加了认证的调试口更安全;一个只读挂载的根文件系统比一个可写但打了补丁的系统更难被持久化。基线验收的核心,是把每个接口的“默认状态”和“最小权限”写清楚、测清楚。

综上,嵌入式设备的安全基线应围绕“组成清晰、系统可控、接口最小”三条主线展开。RTOS 侧重任务隔离与固件完整性,Linux 侧重服务最小化与权限收敛,通信接口则要逐项确认认证、加密与日志。只有把这三层关系落到验收清单上,后续的漏洞扫描与渗透测试才有稳定的判断基准。