前言:
构建新系统与更新老系统,设计与实施要考虑防御入侵的手段,威胁建模是种手段.
威胁的分类:来自网络,来自主机,来自应用。
威胁建模的定义:
结构化标识、定量、定位威胁的方法,是开发过程的一部分。
设计安全软件的其中一个问题在于,不同的团体考虑安全性的方式不一样。软件开发人员认为安全性好坏主要取决于代码质量,而网络管理员考虑的是防火墙、事件响应和系统管理。学术界大多数人可能按经典的
Saltzer
和
Schroeder
设计原则、安全性模型或其他抽象概念来看待安全性。当然,所有这些对于构建安全的系统都是非常重要的
威胁建模的本质:1.至今还没有任何已确定有效的方法来衡量威胁模型的质量,2.我们无法证明给定的设计是安全的,但我们可以从自己的错误中汲取教训并避免重复犯同样的错误
用STRIDE进行威胁建模,保证系统的5大安全属性。
安全属性 对应的STIDE的字母 说明
机密性 I 数据只限应具有权限的人员访问。
完整性 T 数据和系统资源只限适当的人员以适当的方式进行更改。
可用性 D 系统在需要时一切就绪,可以正常执行操作。
身份验证 S 建立用户身份(或者接受匿名用户)。
授权 E 明确允许或拒绝用户访问资源。
认可 R 用户无法在执行某操作后否认执行了此操作。
STRIDE
是
Spoofing
(假冒)、
Tampering
(篡改)、
Repudiation
(否认)、
Information Disclosure
(信息泄漏)、
Denial of Service
(拒绝服务)和
Elevation of Privilege
(提升权限)的字母缩略词。
其中分别对应的安全属性是S---身份验证,T----完整性,R---认可,I----机密性,D--可用性,E----授权。
建模过程分为6步:
1.标识机密信息
2.建立体系结构
3.分解应用
4.辨别威胁
5.将威胁文档化
6.评定威胁级别
其中第一步标识机密信息,哪些是机密信息呢?一般是保密数据(如客户清单,其他人的工资,管理员口令),私有数据(如知识产权保护的数据),重要数据(如卡号,加密密钥等),还有数据库的完整性,页面的完整性,网络与计算机的完整性,还有应用的可用性。
第二步,建立体系结构,目的是为了更好的理解系统架构,为辨别威胁做准备。
具体就是定义应用的目的与实现方法,并绘制应用架构图,包括标识子系统,标识数据流,列出系统中的机密。
第三步,分解应用结构图,包括认证机
制,授权机制,标识所用的技术,描述信任的边界,标识系统的入口。
象黑客一样思考。
第四步,辨别威胁。方法有3种,第一是威胁清单。第二种是STRIDE。第三种是威胁树(根节点(表示攻击者的目的),子节点用来描述威胁的子威胁与条件)。
第五步:文档化
第6步,评定威胁级别
2种方法:
一是简单模型法:风险=资产重要性(1-10级)*威胁等级(1-10级)
二是DREAD 模型法:比法1的粒度大一些。将级别分为1-15,在微软公司广泛使用。
D--DAMAGE 损害。被攻击后的严重性有多大?
R-Reproducibility 再现性。攻击是任何时间都可以进行,还是有一定的先决条件?
E-Exploitability 可利用性。实现攻击是否需要很高的技能与知识?
A-affected users 影响的用户。被攻击后,有多少用户会受到影响?
D-discoverability 可发现性。这个漏洞是否容易被发现?
DREAD定量评定
|
HIGH(3)
|
MEDIUM(2)
|
LOW(1)
|
D | attacker can retrieve extremely sensitive data and corrupt or destroy data |
attacker can retrieve sensitive data but do little else
|
attacker can only retrieve data that has little or no potential for harm
|
R
|
works every time; does not require a timing window
|
timing-dependent;works only within a time window
|
rarely works
|
E
|
bart simpson could do it
|
attacker must be somewhatknowledgeable and skilled
|
attacker must be very knowledgeable and skiiled
|
A
|
most or all users
|
some users
|
few if any users
|
D
|
attacker can easily discover the vulnerability
|
attacker might discover the vulnerability
|
attacker will have to dig to discover the vulnerability
|
举例: