10.1 威胁建模

顾名思义,威胁建模是系统地归纳应用相关的关键威胁,以便在发行应用之前有效地识别和缓解可能的安全弱点的过程。最简单的威胁建模形式可能是开发团队成员(需要时包括内部或者外部安全专家)之间讨论这些威胁及其缓解计划的一系列会议。

威胁建模最好在开发的需求和设计阶段采用,因为它的结果几乎总是会影响余下的开发进程(特别是编码和测试)。威胁模型应该在发布之前重新审核,并且关注任何重大的更新。图10-1展示了一个最优的威胁建模计划。根据实施威胁建模的主要软件公司的经验,威胁建模是改进Web应用安全所能采取的最关键步骤之一。

图10-1 对应假设的开发过程的一个威胁建模计划示例

软件应用威胁建模的详细过程在《The Security Development Lifecycle》(第9章)、《Writing Secure Code》第2版以及这个主题上具有深远影响的《Threat Modeling》中很好地进行了描述(更多的信息参见本章结尾处的“参考与延伸阅读”小节)。这种方法的基本组成部分如下(改编自上面提到的资源,并结合我们为咨询客户实施相似过程中的经验):

·澄清安全目标,集中于威胁建模活动并且确定后续步骤所需要花费的精力。

·识别应用保护的资产(这对于识别每个资产的机密性、完整性、可用性以及审计日志(CIAA)需求也有帮助)。

·建立一个架构概要(这最起码要围绕一个数据流图(DFD),说明整个应用和相关系统中敏感信息的流向)。

·分解应用,特别要注意安全边界(例如,应用接口、权限使用、验证/授权模式、日志功能等)。

·识别和记录威胁。

·用一致性的模型(理想的是使用定量模型)排列威胁等级。

·为确信的严重威胁开发威胁缓解策略以及计划。

·根据达成共识的计划实施威胁缓解。

提示  Microsoft发布了一种威胁建模工具,可以从本章结尾处的“参考与延伸阅读”小节中提供的链接下载。

在这个小节中,我们将把这个基本的威胁建模方法用于一个示例Web应用——标准的网上书店购物车,以此来说明这种方法。这个购物车由前端的Web服务器和后端数据库服务器组成了两层架构。数据库服务器包括所有关于顾客和可供网上订购的货物;前端则提供了客户登录和订购商品的界面。