威胁建模
什么是威胁建模?
威胁建模可以在产品设计阶段、架构评审阶段或者产品运行时开展,强迫我们站在攻击者的角度去评估产品的安全性,分析产品中每个组件是否可能被篡改、仿冒,是否可能会造成信息泄露、拒绝攻击
核心
像攻击者一样思考
为什么要做威胁建模?
1.站在攻击者的角度通过识别威胁,尽可能多的发现产品架构和功能设计中的安全风险
2.制定措施消减威胁,规避风险,确保产品的安全性
威胁建模方法——STRIDE
六类威胁
- Spooling(仿冒)
- Tampering(篡改)
- Repudiation(抵赖)
- InformationDisclosure(信息泄露)
- Dos(拒绝服务)
- Elevation of privilege(权限提升)
四类元素
-
外部实体
- 系统控制范围之外的用户、软件系统或者设备。作为一个系统或产品的输入或输出。在数据流图中用矩形表示外部实体。
-
处理过程
- 表示一个任务、一个执行过程,一定有数据流入和流出。在数据流图中用圆形表示。
-
数据存储
- 存储数据的内部实体,如数据库、消息队列、文件等。用中间带标签的两条平行线表示。
-
数据流
- 外部实体与进程、进程与进程或者进程与数据存储之间的交互,表示数据的流转。在数据流图中用箭头表示
威胁评估
- 简单评价系统:危险=发生概率 X 潜在的损失
制定消减措施
-
常见的消减措施如下
-
仿冒
- 身份验证、认证
-
篡改
- 完整性验证、访问控制
-
抵赖
- 安全管理’、安全审计、监控
-
信息泄露
- 敏感信息保护、数据加密、访问控制
-
拒绝服务
- 负载均衡、防DDOS
-
权限提升
- 授权、最小化
-
威胁评估模式——DREAD
- 潜在损失(Damage Potential)
- 重现性(Reproducibility)
- 可利用性(Exploitability)
- 受影响的用户(Affected users)
- 可发现性(Discoverability)