架构分析

架构分析包括以简明的图表概括软件架构,应用风险和威胁列表,采用审查流程(如 STRIDE 或架构风险分析),以及为组织制定评估和补救计划。

1 级架构分析

[AA1.1: 103] 执行安全功能审查。

进行架构分析时,首先集中执行审查安全功能的流程。具有安全意识的审查人员识别应用程序中的安全功能(身份验证、访问控制、加密技术的使用等),然后检查设计,寻找可能导致这些功能失效或者证明另有不足的问题。例如,此类审查既可以识别由于访问控制受到破坏而导致首要攻击升级的系统,也可以确定在本地存储中藏匿 PII 的移动应用程序。有时,使用公司的设计安全组件可以精简这一流程。请注意,云服务提供商 API 及其背后的服务通常与某些安全功能的工作方式是不可分割的。

[AA1.2: 29] 针对高风险应用程序执行设计审查。

组织通过见证少量高风险高影响力应用程序取得的真实成果,从而了解 AA 的优势。审查人员必须具备执行详细设计审查和打破涉及的相关架构的一些经验,这对于新的平台或环境尤其需要。在所有情况下,设计审查都会产生一系列架构缺陷,以及缓解这些缺陷的计划。如果 SSG 还不具备执行深度 AA 的能力,也可以借助顾问来做这项工作,但 SSG 应该积极参与其中。此时可以使用严重依赖专业知识的临时审查模式,但此类模式从长远来看并不可取。审查如果仅关注软件项目是否执行了正确的流程步骤,就不会产生有用的架构缺陷结果。请注意,足够稳定的设计审查流程不能按照 CI/CD 速度执行。

[AA1.3: 23] 安排 SSG 领导设计审查工作。

SSG 发挥领导作用,通过执行设计审查发现缺陷。SSG 必须首先熟练掌握打破一个架构的技能,才能将该架构工作交接给架构人员,而要熟练掌握则必须多加练习。SSG 单靠自己也无法成功,很可能需要架构人员或实施人员的帮助才能了解设计。手里有了明确的设计,SSG 就能够执行详细的审查,与项目组进行最少的互动。时间一长,领导审查工作的责任就会转向软件安全架构师。AA(包括威胁建模)方法随着时间不断发展,所以明智之举是不要期望一劳永逸地使用一套流程。

[AA1.4: 62] 采用风险调查问卷为应用程序排名。

为了促进执行安全功能和设计审查流程,SSG 采用风险调查问卷及类似的人工或自动化方法收集各应用程序的信息,以便判定风险分类和相关优先级。一项任务所需的信息可能包括:“应用程序是用哪种编程语言编写的?” 或者“谁使用这种应用程序?” 或者“应用程序是在容器中部署的吗?” 通常,应用程序团队的合格成员会提供上述信息,而这个收集过程必须足够简短,只需几分钟。有些团队可能会自动收集必要的数据。SSG 可能利用答案将应用程序归为高、中、低风险类别。由于风险调查问卷容易造假,所以务必要进行一些抽查,确保准确有效。过度依赖自评或自动化可能导致这项活动毫无用处。

2 级架构分析

[AA2.1: 18] 定义并利用 AA 流程。

SSG 定义并存档一套 AA 流程,并在其开展的审查中应用该流程查找缺陷。该流程包括考虑攻击、安全特性和关联风险的标准化方法,并且要周密界定,需足以指导 SSG 外部人员执行流程。特别注意记录正在审查的架构和发现的任何安全漏洞,以及人们能够理解的风险信息。AA 的个别特殊方法不能算作一个既定流程。微软的 STRIDE 和 Synopsys 的架构风险分析都是这种流程,然而即便是这两种 AA 方法也会随着时间而发生巨大演变。

[AA2.2: 14] 统一架构描述。

定义的 AA 流程采用约定的格式描述架构,其中包括呈现数据流的方式。一份文档记录的流程结合一份标准化的架构描述,将使那些不是安全专家的人更加容易地处理 AA。如果是在云应用中,数据可能会在整个互联网流通。因而在这种情况下,网络图表非常实用,但描述应当详细介绍软件本身的结构方式。可以完善标准架构描述,来为需要保护的信息资产提供清晰的图景。在图表、模板和白板波形中经常使用的标准化图标也特别有用。

3 级架构分析

[AA3.1: 7] 让工程团队带头执行 AA 流程。

大多数时候都是工程团队带头执行 AA 流程。SSG 仍然可能作为顾问或在特殊情况下参与 AA,但这项工作要求充分了解并完整记录流程(参见 [AA2.1 定义并利用 AA 流程])。即便是一套完善的流程也很难保持一致性,因为打破架构需要经验,所以要为架构人员提供关于新问题的 SSG 或外部专业知识。

[AA3.2: 1] 推动分析结果转化为标准架构模式。

AA 过程中发现的故障将反馈给一个安全设计委员会,以便通过改进设计模式来避免将来发生类似错误(参见 [SFD3.1 形成审查委员会或中央委员会以审批和维护安全设计模式])。安全设计模式的交互方式可能令人吃惊,会破坏安全性,因此即使在按照标准使用经过审查的设计模式时,也应该应用 AA 流程。

[AA3.3: 4] 让 SSG 成为 AA 资源或导师。

为了在 SSG 之外建立 AA 能力,SSG 将自己宣传为使用 AA 流程自行开展设计审查时需要帮助的团队的资源或导师(参见 [AA2.1 定义并利用 AA 流程])。SSG 可在上班时间解答 AA 问题,有时可能会指定人员陪同架构人员开展分析。对于高风险软件,SSG 在应用 AA 流程时应当扮演更加主动的导师角色。