架构分析

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

1 级架构分析

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

进行架构分析时,首先集中执行审查安全功能的流程。具有安全意识的审查人员识别应用程序中的安全功能(身份验证、访问控制、加密技术的使用等),然后研究设计,寻找可能导致这些功能失效或者证明另有不足的问题。例如,由于访问控制受到破坏而导致首要攻击升级的系统,或者在本地存储中藏匿 PII 的移动应用程序都将在这类评估中被识别出来。在更高的成熟度级别,由于采用了更加彻底的 AA(架构分析)方法,使得审查功能的活动黯然失色。有时,使用公司的设计安全组件可以精简这一流程。

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

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

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

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

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

为了促进执行安全功能和设计审查流程,SSG 采用风险调查问卷收集各应用程序的基础信息,以便判定风险分类和优先级方案。问卷问题可能包括:“应用程序采用哪种编程语言编写?”、“应用程序供谁使用?”,以及“应用程序是部署在容器中的吗?” 应用程序团队的合格成员负责填写问卷。问卷应当足够简短,只需几小时即可填写完成。SSG 可能利用答案将应用程序归为高、中、低风险类别。由于风险调查问卷容易造假,所以务必要进行一些抽查,确保准确有效。过度依赖自评或自动化可能导致这项活动无效。

2 级架构分析

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

SSG 定义并存档一套 AA 流程,并在其开展的审查中应用该流程查找缺陷。该流程包括考虑攻击、安全特性和关联风险的标准化方法,并且要严格界定,需足以指导 SSG 外部人员执行流程。应当特别注意存档记录待审查架构及任何未经披露的安全漏洞。零散的知识不可视为经过定义的流程。微软的 STRIDE 和 Synopsys 的 ARA 都是这种流程,然而即便是这两种 AA 方法也会随着时间而发生巨大演变。

[AA2.2: 14] 统一架构描述(包括数据流)。

定义的 AA 流程(参见 [AA2.1 定义并利用 AA 流程])采用约定的格式描述架构,其中包括呈现数据流的方式。这种格式与 AA 流程相结合,让不是安全专家的人员也能轻松驾驭 AA。如果是在云应用中,数据可能会在整个互联网流通。因而在这种情况下,网络图表非常实用,但描述应当详细介绍软件本身的结构方式。可以完善标准架构描述,来为需要保护的信息资产提供清晰的图景。在 UML 图表、Visio 模板和白板波形中使用标准化图表也特别有用。 

3 级架构分析

[AA3.1: 4] 让软件架构人员领导设计审查工作。

整个组织的软件架构人员大部分时间都在领导 AA 流程。SSG 仍然可能作为顾问或在特殊情况下参与 AA,但这项活动要求充分了解并完整记录流程(参见 [AA2.1 定义并利用 AA 流程])。即便是这样,也很难保持一致性,因为破坏架构需要经验。

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

AA 过程中发现的故障将反馈给安全设计委员会,以便通过改进设计模式来避免将来发生类似错误(参见 [SFD3.1 形成审查委员会或中央委员会以审批和维护安全设计模式])。安全设计模式能够通过惊人的方式进行交互,从而破坏安全。即便审查设计模式得到正规利用,也应采用 AA 流程。

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

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