威胁分析和风险分析
威胁分析
三个定义:威胁(Threat),指的是可能造成危害的来源。风险(Risk),可能造成的损失。漏洞,系统中可能被威胁利用从而造成危害的地方。
威胁分析就是把系统中存在的威胁全部找出来,即确定所有可能的危险来源。除了单纯的头脑风暴外,存在一些科学的方法,比如威胁建模,它使用一个模型帮助思考可能在那些地方可能存在威胁,相比人干想,能够避免一定的遗漏。
威胁建模个人感觉就是列出一张清单,上面有着威胁可能出现的形态,然后我们对着这张单,一条条思考就行。
一种实用的威胁建模是微软的STRIDE模型。名字取自六类可能的威胁。
威胁 | 定义 | 对应的安全属性 |
---|---|---|
Spoofing(伪装) | 冒充他人身份 | 认证 |
Tampering(篡改) | 修改数据或代码 | 完整性 |
Repudiation(抵赖) | 否认做过的事 | 不可否认性 |
InformationDisclosure(数据泄露) | 机密信息的泄露 | 机密性 |
Denial of Service(拒绝服务) | 拒绝服务 | 可用性 |
Elevation of Privilege(权限提升) | 未经过授权获得许可 | 授权 |
一个让人无奈和沮丧的事,工程师花了大把的时间指定的方案,却由于出人意料地漏洞被击破。这就是威胁分析阶段出现的问题。(当然不可否认的是,极难真的在这一阶段就把所有威胁找出来,漏洞总是出人意料,所以才会有许多补丁,但只要这一步做的尽可能地好,后续威胁造成的破坏和补救的代价就都会可接受些。)
风险分析
风险是某一个威胁可能造成的损失,由风险能够造成的伤害和风险发生的概率两方面因素决定。即:
$$
Risk = Probability * Damage Potential
$$
一种用于风险分析的方法是微软的DREAD模型,用于指导我们应该从哪些方面判断一个威胁的风险。
高(3) | 中(2) | 低(1) | |
---|---|---|---|
Damage Potential(破坏潜力) | 获得完全的验证权限;执行管理员操作;非法上传文件 | 泄露敏感信息 | 泄露其他信息 |
Reproducibility(再现性) | 攻击者能够随意地再次发动攻击 | 攻击者可以再次攻击,但存在时间限制 | 攻击者很难重复攻击 |
Exploitability(可利用性) | 初学者短时间内也能掌握攻击方法 | 熟练的攻击者才能完成攻击 | 漏洞利用条件极其苛刻 |
Affected users(受影响用户) | 所有用户,使用默认配置,关键用户 | 部分用户,使用非默认的配置 | 极少用户,匿名用户 |
Discoverability(可发现性) | 漏洞很明显,攻击条件很容易获得 | 在私有区域内,部分人能够看见,需要深入挖掘 | 极难发现该漏洞 |
在DREAD模型中,每一种风险因素都有高中低三种危险等级。用321个表示其权重,总合个因素的权重可以算出某个威胁的风险值。
一个例子,疫情封校期间,FQ出校门:风险值计算应该是:D(2) + R(3) + E(3) + A(2) + D(3) =13 。这算是一个风险较大的漏洞了,所以应该加大校警巡逻力度。