STRIDE 分析示例:工业网关
Sytance · 更新于
STRIDE 通过六类威胁帮助分析系统可能受到的攻击。下面以一款虚构工业网关为例,分别说明每类攻击的发生条件、可采用的防护措施和验证方法。示例中的措施与测试均为分析建议。
网关架构与信任边界
操作员通过浏览器访问网关管理接口,管理接口读取和修改本地配置。本地控制器向网关发送运行数据,网关再向远程服务上传遥测数据。独立的更新服务提供固件包。
本例假设管理连接和遥测连接使用 TLS。控制器接口的认证方式,以及更新包的信任机制,仍是待确认的设计问题。发送方位于本地网络,并不能直接证明其身份和权限。
- 浏览器 → 管理接口:会话、状态查询和配置修改。
- 管理接口 → 配置存储:持久化设置及凭据访问。
- 本地控制器 → 网关:来自现场网络的运行数据。
- 网关 → 遥测服务:设备身份和遥测数据。
- 更新服务 → 网关:更新元数据和固件内容。
身份假冒:伪造控制器消息
攻击者在现场网络中发送冒充本地控制器的消息。如果网关仅根据源地址判断可信性,伪造的运行数据就可能进入遥测链路。
拟采用的措施:在接收消息前验证设备身份。如果控制器无法支持身份认证,需要采用其他保护方式,并分析哪些攻击仍然可能发生。仅划分网段不能证明消息来源。
验证条件:不被认可的测试身份发送的消息被拒绝,已授权控制器仍能正常通信。保留拒绝记录,并确认伪造数值未进入遥测服务。
数据篡改:安装前替换固件包
攻击者通过被控制的分发节点替换更新包。即使到该节点的连接经过加密,也不能证明包由制造商授权发布。
拟采用的措施:安装前,使用设备信任的公钥或证书验证固件包签名,并检查该包是否适用于本产品。验证通过的内容必须与实际安装的内容一致。旧版本签名包的安装规则,以及签名密钥被吊销后的处理方式,需要分别确定。
验证条件:内容被修改的包,以及不受信任密钥签名的包,均在安装前被拒绝。拒绝后,网关保持在规定的运行或恢复状态。
抵赖:无法追溯配置修改
已授权操作员修改了遥测目的地址,但记录中没有个人身份或操作结果。团队无法可靠地确认是谁执行了该操作,也无法区分写入成功与请求被拒绝。
拟采用的措施:记录认证身份、操作、目标、时间和结果,限制日志访问,并定义存储空间耗尽时的行为。日志中不应写入密码或访问令牌。
验证条件:受控修改产生对应记录,未授权用户不能修改日志;日志空间耗尽时的行为符合已确定的处理规则。
信息泄露:配置读取暴露凭据
状态接口返回完整配置对象,其中包含遥测服务凭据。只获准查看状态的用户,因此获得了其职责不需要的敏感信息。
拟采用的措施:按接口用途定义返回字段,去掉密码、令牌等敏感值,并对配置读取实施权限检查。传输加密不能解决接口向用户返回了过多信息的问题。
验证条件:分别检查各类角色的响应,确认凭据没有出现在正常响应、错误信息或日志中。
拒绝服务:输入处理耗尽资源
发送方持续提交过大或重复的控制器消息。解析与缓存占用资源,影响网关的管理和遥测功能。
拟采用的措施:限制消息大小和队列长度,在高开销处理前验证输入,并隔离关键处理任务。限制值应根据实测处理能力,以及产品对过载状态的行为要求确定。
验证条件:在获授权的测试环境中执行约定的过载场景,观察内存、队列深度、服务可用性和恢复情况。验收限值来自具体产品要求,本例不预设通用请求速率。
权限提升:只读账户调用写接口
用户能够登录并查看状态,随后绕过页面直接调用配置写入接口。如果接口只验证登录状态,该用户就能执行本应仅允许管理员执行的操作。
拟采用的措施:每条写入路径都在服务端检查操作权限和资源权限。普通请求、批量操作和维护接口应遵循一致的授权规则。
验证条件:只读账户直接发送写请求时操作失败,存储的配置保持不变。再使用获准账户执行同一操作,确认正常功能仍然可用。
分析覆盖范围与剩余风险
六类威胁的定义来自 Microsoft 的 STRIDE 方法;具体攻击场景和防护措施取决于前述网关架构。
真实产品在同一类别下可能存在多个攻击场景,一次攻击也可能涉及多个类别。产品包含制造、维护或恢复接口时,这些接口同样需要纳入分析。
措施实现并完成测试后,还需要根据约定的风险准则判断剩余风险是否可接受。该判断应对应本次分析的产品版本。