当今社会,许多组织机构面临前所未有的网络威胁及内部威胁,其数据存储、处理与传输均存在高危风险。由于存在这些威胁,企业日益关注网络安全,使其成为信息系统安全认证专业人员(CISSP或CISP)必需掌握的概念。
即使非常重视保护业务流程安全的企业也可能成为网络犯罪的受害者。遵守狭隘的安全标准也许不足以阻止或检测复杂的网络攻击。威胁建模让企业对最可能影响系统的各种网络威胁进行系统性识别和评价。有了这些信息,您就可以按照一定的逻辑顺序,利用适当的对策来处理现存的威胁,并从具有最大风险的威胁开始。
开始之前
开始威胁建模过程之前,我们要了解以下基本概念?
- 风险是基于对组织机构构成的威胁。
- 威胁关注的是有价值的资源。
什么是威胁建模
威胁建模是一种结构化方法,用来识别、量化并应对威胁。威胁建模允许系统安全人员传达安全漏洞的破坏力,并按轻重缓急实施补救措施。
威胁建模主要包括三大主要元素:
1. 资产:应保护哪些有价值的数据和设备?
2. 威胁:攻击者可能对系统实施的行为?
3. 漏洞:有哪些漏洞让攻击者对系统构成威胁?
组织机构内部,不同层次组织结构和环境要应对的威胁大不相同。威胁目标有三个主要层次:
- 网络:此威胁包括假冒、恶意数据包等。
- 主机:此威胁包括缓冲区溢出、恶意文件等。
- 应用程序:此威胁包括SQL注入、XSS、输入篡改等。
谁负责威胁模型,何时执行?
理想情况下,在系统设计过程中(部署之前)创建威胁模型。在实践中,通常是为现有系统创建威胁模型,使其成为维护的一部分。安全经验丰富的系统设计人员最有资格识别威胁。
威胁建模步骤
1. 识别资产
2. 描述架构
3. 分解应用程序
4. 识别威胁
5. 归档并分类威胁
6. 评价威胁
1、识别资产:
识别对组织机构具有价值的潜在资产:
- 入口和出口点
- 系统资产和资源
- 信任级别(访问类别)
2、描述架构:
在这个过程中,描述处理价值资产的架构,可能包括软件架构、版本和其它架构详情。
3、分解应用程序:
分解与过程有关的应用程序,所有运行应用程序的子过程。
4、识别威胁:
以描述方式罗列威胁,以便审核,作进一步处理。
5、将威胁分类:
按照预定义分类对威胁进行分类,预定义分类如下:
- 假冒身份
- 篡改数据
- 否认
- 信息泄露
- 拒绝服务
- 特权提升
评价威胁通过Microsoft的DREAD模型对威胁的严重性进行评价:
- 破坏潜力:如果漏洞被利用,损失有多大?
- 再现性: 重复被利用的难度有多大?
- 可利用性:漏洞被利用的难度有多大?
- 受影响的用户:多少用户可能受到影响?
- 可发现性:漏洞容易被发现吗?
例子:
某公司具有数据收集Web应用程序,允许用户登录,访问或修改个人数据。
此应用程序收集的信息如下:
架构:
- Web应用程序——ASP.Net
- 数据库——SQL服务器2000
资产:
- 用户登录凭证
- 用户个人信息
- 行政资源
- 系统硬件
微软威胁报告模板:
- ID – 威胁的唯一ID #
- 名称 – 资产威胁的简短名称
- 描述 – 威胁及其重要性的详细描述
- STRIDE – 如何对威胁进行分类?
- 缓解– 应用程序是否有威胁?
- 已知缓解 –如何免遭威胁?
- 调查说明– 目前对威胁的了解有多少?
- 入口点– 对手可能采取的手段有哪些?
- 资产– 哪些资产可能会被损坏?
- 威胁树– 如何将威胁形象化?(可选)
威胁描述:
ID: 1
- 名称: Login Subversion
- 描述:对手试图通过请求进入应用程序注入SQL命令,从而绕过登录过程。
- STRIDE分类:篡改数据,提升特权
- 缓解:无
- 已知缓解:存储过程,参数化查询
- 调查说明:审查了应用程序的数据库调用,并在登录查询使用字符串连接。
- 入口点:登录页面
- 资产:访问支持的数据库
- 威胁树:无
通过STRIDE对威胁分类
通过Microsoft标准化简易表格将威胁分类。
- 假冒身份
- 篡改数据
- 否认
- 信息泄露
- 拒绝服务
- 提升特权
使用DREAD评价威胁
使用Microsoft DREAD模型评价威胁等级。根据每个项目的等级范围进行评价,对大多数项目来说,等级范围为1-3。
- 破坏潜力—如果漏洞被利用,损失有多大?
- 再现性:重复被利用的难度有多大?
- 可利用性:漏洞被利用的难度有多大?
- 受影响的用户:多少用户可能受到影响?
- 可发现性:容易被发现吗?
破坏潜力
1. 攻击者可以获取极其敏感的数据,并损坏或破坏数据。
2. 攻击者可以获取敏感数据,但破坏性小。
3. 攻击者只能获取危害小或不具破坏潜力的数据。
再现性
1. 每次都再现;而且不需要时间间隔或特定的极端情形
2. 有时间间隔;仅在时间间隔内运行
3. 很少再现
可利用性
1. 任何人都能利用
2. 攻击者必须具备一定的知识和技能
3. 攻击者必须具备非常专业的知识和技能
受影响的用户
1. 大多数或所有用户
2. 一些用户
3. 极少用户
可发现性
1. 攻击者可以轻易发现漏洞
2. 攻击者也许能发现漏洞
3. 攻击者必须深挖才能发现漏洞
威胁建模之后该做何工作?
威胁建模过程的输出包括应用程序体系结构安全方面的记录和评价过的威胁列表。威胁模型有助于您协调开发小组成员,并将精力集中在最有影响的威胁上。
要点 威胁建模是一个不断重复的过程。威胁模型是一种发展的文档,并且各种不同的小组成员都可以参与。
下列小组的人员都可以使用威胁模型:
- 设计者可以利用它来进行技术与功能方面的安全设计选择决策。
- 编写代码的开发人员可以利用它来降低风险。
- 测试人员可以编写测试案例来测试应用程序是否容易受分析所找出的威胁的攻击。
生成工作项目报告
从最初的威胁模型,您可以创建一个更正式的工作项目报告,它可以包括其他的属性,例如 Bug ID,可用它把您喜好的错误跟踪系统和威胁连接起来。实际上,您可以选择在错误跟踪系统中输入找出的威胁,利用它的报告工具来生成报告。也可以用一个状态栏来表明错误是否已经被修复。您应当确保报告包括用来连接威胁模型文档的原始威胁编号。
在报告中,根据网络、主机和应用程序种类来组织威胁。这可以使不同角色的不同小组成员更方便地使用该报告。每一类中,按优先顺序排列威胁,最先的是评价具有最大危险的威胁,紧跟的是危险较小的威胁。
总结
虽然您可以降低攻击带来的危险,但是却不能减少或者消除实际的威胁。不管您采取何种安全措施以及采用何种对策,威胁仍旧存在。安全界的现实就是,承认威胁的存在并控制危险。威胁建模可以帮助您控制安全风险并在团队中间沟通这些安全风险,并做出有效响应。威胁建模在过程的整个周期(从初始化到部署,还包括维护过程)进行。至于CISSP及CISP培训学员必须了解威胁建模的所有过程,并应掌握如何通过威胁建模技术以最有效的方式缓解威胁。
要将威胁建模看成一个不断循环的过程。您的威胁模型应当是动态模型,应随着时间的推移不断更改,以适应发现的新型威胁与攻击。它还要能够适应应用程序为适应业务变更的需求而不断完善与更改的自然发展过程。