威胁建模:架构、攻击场景与防护措施

Sytance · 更新于

威胁建模是一种从产品架构出发,识别可能的攻击并确定防护措施的分析方法。它需要说明攻击如何发生、哪些数据或功能会受影响,以及如何验证所选措施是否有效。

产品版本与部署场景

威胁模型针对具体的产品版本和部署方式。接入互联网的网关,与仅在隔离维护网络中使用的同一网关,可能具有不同的攻击入口和运行条件。

架构、研发、产品和安全人员分别掌握不同信息。共同梳理一次正常业务操作,有助于确认分析所需的资料:

  • 产品版本、支持的部署方式和预期用户。
  • 系统架构、外部接口和交换的数据。
  • 各类用户、服务和本地进程具有的权限。
  • 需要保护的敏感数据、凭据和产品功能。
  • 已经实施的控制措施,以及尚待确认的假设。

数据流与信任边界

数据流图(DFD)表示外部实体、处理过程、数据存储及数据流向。信任边界表示信任程度或权限发生变化的位置,例如浏览器与接口之间、不同系统账户之间,或设备与远程服务之间。

为每条数据流注明方向、数据内容和保护方式。如果多个云端服务使用不同身份和权限,只画一个“云端”方框会掩盖关键差异。影响分析的差异应在图中展开。

以工业网关为例,先画出操作员浏览器、网关管理接口、本地配置存储、本地控制器、遥测服务和更新服务。管理连接和遥测连接使用 TLS;更新包签名验证先列为拟采用的措施,待确认实现后再调整状态。

从 STRIDE 分类到攻击场景

STRIDE 将威胁分为身份假冒、数据篡改、抵赖、信息泄露、拒绝服务和权限提升六类,帮助团队逐项检查可能的攻击。应结合具体处理过程和数据流分析,分类名称本身不能说明攻击如何发生。

例如:只读用户直接向管理接口发送修改配置的请求。如果接口只检查是否登录,没有检查操作权限,该用户就可能改写网关配置。这个场景明确了攻击者、入口、缺失的控制措施及可能造成的影响。

每个场景应关联到架构图中的具体接口、处理过程或数据流。攻击条件和处理措施不同的场景需要分别分析。对于尚未确认的条件,例如本地控制器接口是否启用认证,可以先列为待确认事项。

风险优先级与防护措施

风险优先级取决于攻击所需的访问条件和能力、成功的可能性,以及对产品的影响。风险分数需要附有这些分析依据,其他人员才能理解判断理由。

选择能够落实到研发任务的措施。对于越权修改配置场景,可以要求管理接口在每次写操作时检查调用者权限,并明确责任人、目标版本和验证方法。

TLS 保护传输连接,但不能证明已登录用户具有修改配置的权限。每项措施都应对应它要阻止的攻击步骤。决定接受剩余风险时,应保留理由和有权作出该决定的人员信息。

措施验证与模型更新

拟采用的措施与已经验证的措施应使用不同状态。控制措施实现后,应记录具体修改及相应的验证结果。例如,以只读身份发送写请求,同时确认接口拒绝请求、配置未发生变化。

接口、权限、组件、部署方式或更新机制变化时,重新检查模型。新漏洞信息也可能推翻此前的假设。保留历史版本,才能说明某项决定适用于哪些产品版本。

延伸阅读