基本介绍
STRIDE威胁建模是由微软提出的一种威胁建模方法,将威胁类型分为Spoofing(仿冒)、Tampering(篡改)、Repudiation(抵赖)、Information Disclosure(信息泄漏)、Denial of Service(拒绝服务)和Elevation of Privilege(权限提升)六种威胁构成,STRIDE威胁模型几乎可以涵盖目前绝大部分安全问题
常见术语
资产(Asset):有价值的资源,例如:数据库或文件系统上的数据或者系统资源
威胁(Threat):任何潜在有可能直接或间接的危及资产的恶意的或其他的事件
漏洞(Vulnerability):漏洞是在硬件、软件、协议的具体实现或系统安全策略上存在的缺陷,从而使攻击者能够在未授权的情况下访问或破坏系统
攻击(Attack):由某人或某些事物采取的针对资产的损害行为,这可能是有人根据威胁实施损害或利用漏洞采取的一些行为
对策(Countermeasure):解决威胁并降低风险的保障措施
建模流程
STRIDE威胁建模的一般流程如下:
绘制数据流图——设计
识别潜在威胁——中断
提出缓解措施——修复
进行安全验证——验证
绘制数据流图
数据流图是由以下4个元素组成:
外部实体(External Entity):系统控制范围之外的用户、软件系统或者设备,作为一个系统或产品的输入或输出,在数据流图中用矩形表示外部实体
处理过程(Process):表示一个任务、一个执行过程,一定有数据流入和流出。在数据流图中用圆形表示
数据存储(Data Store):存储数据的内部实体,如数据库、消息队列、文件等。用中间带标签的两条平行线表示
数据流(Data Flow):外部实体与进程、进程与进程或者进程与数据存储之间的交互,表示数据的流转。在数据流图中用箭头表示
安全人员与系统架构师及设计人员沟通了解设计详情并画出数据流图后还需要标注信任边界(Trust Boundary),针对简单的Web应用的数据流图如下:
识别潜在威胁
STRIDE威胁建模方法已经明确了每个数据流图元素具有不同的威胁,其中外部实体只有仿冒(S)、抵赖(R)威胁,数据流只有篡改(T)、信息泄露(I)、拒绝服务(D)威胁,处理过程有所有六种(STRIDE)威胁,存储过程有篡改(T)、信息泄露(I)、拒绝服务(D)威胁,但如果是日志类型存储则还有抵赖(R)威胁,具体可对照如下表格进行威胁识别
提出缓解措施
根据不同的数据流图元素及威胁相应的缓解措施也不相同,如本文示例数据流图中外部实体用户的仿冒威胁,其缓解措施简单来说就是对用户身份进行认证,对一个Web应用来说缓解仿冒威胁不仅需要较强的认证机制,还需要防止恶意攻击者用暴力破解、口令猜测等方法绕过认证从而造成仿冒用户的威胁,如果笔者来提出该用户仿冒威胁的缓解措施的话,详细措施如下:
对用户访问进行帐号密码、证书等身份认证
用户认证5次后仍然验证失败,则在30分钟内禁止该帐号登录
用户帐号密码认证过程中,如果出现三次密码错误,则增加验证码机制,输入验证码且正确再进行身份认证
用户密码必须包含数字、字母及特殊字符且长度在8位以上,如果业务安全需要则增加密码过期机制,每隔6个月提醒用户修改密码
在提出缓解措施时,有的时候不仅要考虑安全问题,同时也要考虑软件的易用性,所以不同的威胁和不同的应用场景,其缓解措施也要随之而改变以提高应用安全的同时也能给用户带来较好的交互体验,微软对于常用的威胁给出了其常用的标准缓解措施并在具体实施时已将常用的缓解方案及措施集成为独立的解决方案或者代码模块,可以方便同类应用直接使用: