2. LwM2M安全威胁建模

LwM2M设备接入链路看似只有“注册—上报—下发”三步,但真正落到工程现场,它横跨设备固件、引导配置、DTLS/TLS握手、CoAP消息、LwM2M对象模型、平台侧接口与运维通道。威胁建模的价值,就是在写代码和上线之前,把这些环节中“谁可能被冒充、哪里可能被篡改、哪一步可能被重放”提前摊开,形成可执行的安全需求,而不是等设备批量出货后再补丁式加固。

一、先识别资产:威胁建模的起点不是攻击,而是“值得保护什么”

资产识别要落到具体对象和具体字段,不能停留在“设备安全”这种口号。对LwM2M接入系统,通常至少包括以下五类资产:

  • 设备身份资产:设备端点名称(Endpoint Client Name)、PSK身份标识、X.509证书与私钥、设备序列号。它们决定“这台设备是不是它声称的那台”。
  • 会话与密钥资产:DTLS会话密钥、CoAP Token、Observe关系标识、重放窗口状态。它们决定“这条消息是不是当前有效会话里的消息”。
  • 业务数据资产:传感器读数、执行器状态、固件版本、配置参数。它们决定“平台看到的数据是否可信、下发指令是否被正确执行”。
  • 控制通道资产:Bootstrap Server地址、Registration接口、Device Management & Service Enablement接口、Information Reporting接口。它们决定“谁能改设备、谁能读设备”。
  • 平台侧资产:设备注册表、租户隔离边界、审计日志、固件仓库。它们决定“一台设备被攻破后,影响会不会扩散到其他租户”。

资产识别完成后,应给每项资产标注机密性(C)、完整性(I)、可用性(A)三个属性。例如,设备私钥的C/I要求极高,A要求中等;传感器读数的I要求高,C可能中等;固件仓库的I和A都极高。这个标注不是形式主义,它直接决定后续风险评级时“影响”一栏怎么打分。

二、典型攻击面:从设备到平台的五条入口

LwM2M接入的典型攻击面可以按“信任边界”来划分。第一条是设备物理与引导面:调试串口未关、PSK硬编码在固件里、Bootstrap凭证可被读取。第二条是传输面:未启用DTLS、使用PSK但身份可枚举、证书校验被跳过、CoAP消息可被中间人重放。第三条是协议面:Registration更新未鉴权、Observe通知被伪造、Bootstrap Server地址被篡改导致设备连到恶意服务器。第四条是平台接口面:设备注册接口缺乏速率限制、租户ID可被越权猜测、管理接口未做细粒度授权。第五条是运维面:固件升级包未签名、日志中泄露密钥、批量配置脚本使用弱口令。

这些攻击面并不都需要“高深漏洞”。很多真实事故来自“设备出厂时PSK相同”“Bootstrap未做服务器身份校验”“CoAP重放窗口过大”这类工程配置问题。威胁建模的作用,就是把这些配置问题提前变成可检查项。

LwM2M设备接入攻击面与STRIDE映射 设备侧 PSK / 私钥 硬编码 · 可读取 引导配置 Bootstrap地址可篡改 固件与调试口 未签名 · 串口开放 CoAP Token 可预测 · 可重放 Observe关系 通知可伪造 传输面 DTLS/TLS握手 降级 · 跳过校验 CoAP消息 篡改 · 重放 会话密钥 泄露 · 复用 重放窗口 过大 · 旧包重放 中间人 代理 · 转发篡改 平台侧 注册接口 无速率限制 · 枚举 租户隔离 越权 · ID猜测 管理接口 授权粒度粗 固件仓库 未签名 · 可替换 审计日志 缺失 · 可删除 STRIDE 威胁 S 冒充 T 篡改 R 抵赖 I 信息泄露 D 拒绝服务 E 权限提升 风险评级 = 可能性 × 影响;可能性由攻击面暴露程度决定,影响由资产C/I/A属性决定

三、用STRIDE逐条对照:把攻击面翻译成威胁类型

STRIDE是微软提出的威胁分类方法,六个字母分别对应:Spoofing(冒充)、Tampering(篡改)、Repudiation(抵赖)、Information Disclosure(信息泄露)、Denial of Service(拒绝服务)、Elevation of Privilege(权限提升)。在LwM2M接入场景中,它可以直接映射到具体攻击面:

STRIDE类别LwM2M接入中的典型表现对应资产
S 冒充伪造Endpoint Client Name注册;PSK相同导致设备互相冒充设备身份、注册表
T 篡改中间人修改CoAP payload;Bootstrap地址被改写业务数据、引导配置
R 抵赖设备否认曾下发过某条写操作;平台无审计日志审计日志、控制通道
I 信息泄露固件中提取PSK;日志打印DTLS密钥密钥、会话状态
D 拒绝服务大量伪造注册请求耗尽平台连接;Observe通知风暴注册接口、平台资源
E 权限提升普通设备通过管理接口越权操作其他设备管理接口、租户隔离

使用STRIDE时,建议按“数据流图”逐条走:先画出设备、Bootstrap Server、LwM2M Server、平台管理接口之间的数据流,再对每条流、每个存储点问六个问题。例如,对“设备→LwM2M Server的注册请求”这条流,S问“能否伪造设备身份”,T问“注册参数能否被改”,R问“注册行为是否有日志”,I问“注册消息是否泄露设备信息”,D问“能否用大量注册打垮服务器”,E问“注册后能否越权访问其他对象”。这样得到的威胁列表才可落地。

四、风险评级:把威胁排成可执行的优先级

风险评级常用可能性(Likelihood)× 影响(Impact)。可能性可以按攻击面暴露程度打分:设备物理可达、未启用DTLS、PSK硬编码,可能性高;需要先获取平台管理员权限才能利用的,可能性低。影响则回到资产C/I/A属性:私钥泄露影响高,传感器读数被篡改影响中高,日志缺失影响中。

下面给出一个可直接套用的风险评级示例表,分值为1~5,风险值=可能性×影响,≥15为高,8~14为中,≤7为低。表中数据为教学示例,实际项目应按现场情况调整。

威胁编号威胁描述可能性影响风险值等级
T-01PSK硬编码且同批次相同,设备可互相冒充5525高
T-02未启用DTLS,CoAP明文传输4520高
T-03Bootstrap地址可被篡改,设备连恶意服务器3515高
T-04注册接口无速率限制,可被枚举4312中
T-05Observe通知无完整性保护,可伪造3412中
T-06审计日志缺失,写操作无法追溯326低

评级之后,高风险的T-01、T-02、T-03必须在上线前闭环:T-01改为每设备唯一PSK或X.509证书;T-02强制DTLS 1.2以上并禁用弱密码套件;T-03对Bootstrap Server做证书校验或预置可信地址。中风险项可排入迭代计划,低风险项纳入监控。这样,威胁建模就从“文档”变成了“排期表”。

工程提示:威胁建模不是一次性活动。每次新增LwM2M对象、更换认证方式、开放新管理接口,都应重新走一遍“资产识别→攻击面→STRIDE→风险评级”的闭环。建议把威胁编号与需求编号关联,例如T-01对应“每设备唯一凭证”需求,便于验收时逐条核对。

最后需要强调:LwM2M接入安全的核心不是“用了DTLS就安全”,而是身份唯一、会话可验、数据可查、权限最小。威胁建模的作用,就是把这四句话拆成可检查、可测试、可验收的具体条目,让设备接入的每一个信任边界都有对应的控制措施。