SDL介绍----3、STRIDE威胁建模方法
文章目录
- 一、什么是威胁建模
- 二、STRIDE威胁建模介绍
- 2.1、STRIDE的六类威胁
- 三、威胁建模流程
- 3.1、数据流图
- 3.2、识别威胁
- 3.3、提出缓解措施
- 3.4、安全验证
一、什么是威胁建模
威胁建模是一个非常有用的工具,它的核心是「像攻击者一样思考」。威胁建模可以在产品设计阶段、架构评审阶段或者产品运行时开展,强迫我们站在攻击者的角度去评估产品的安全性,分析产品中每个组件是否可能被篡改、仿冒,是否可能会造成信息泄露、拒绝攻击。威胁建模的作用更偏向于确保产品架构、功能设计的安全,无法保证编码的安全,但是输出的威胁建模报告中包含了全面的安全需求,这些安全需求不仅包括大的方案设计,如要认证、鉴权、审计,也可以包括安全细节的实现,比如具体的认证方式、密码使用哪种安全算法存储,使用什么方法生成安全随机数等。所以,威胁建模虽不能保证编码的安全,但可以指导研发人员编写出安全的代码,同时也可以辅助渗透测试人员开展安全测试。
简单的来说,威胁建模就是通过结构化的方法,系统的识别、评估产品的安全风险和威胁,并针对这些风险、威胁制定消减措施的一个过程。
二、STRIDE威胁建模介绍
STRIDE威胁建模是由微软提出的一种威胁建模方法,该方法将威胁类型分为Spoofing(仿冒)、Tampering(篡改)、Repudiation(抵赖)、Information Disclosure(信息泄漏)、Denial of Service(拒绝服务)和 Elevation of Privilege(权限提升)。这六种威胁的首字母缩写即是STRIDE,STRIDE威胁模型几乎可以涵盖目前绝大部分安全问题。此外,STRIDE威胁建模方法有着详细的流程和方法。
2.1、STRIDE的六类威胁
1、 Spooling(仿冒)
2、Tampering(篡改)
3、Repudiation(抵赖)
4、InformationDisclosure(信息泄露)
5、Dos(拒绝服务)
6、Elevation of privilege (权限提升)
三、威胁建模流程
STRIDE威胁建模的一般流程如下:
1、绘制数据流图
2、识别威胁
3、提出缓解措施
4、安全验证
STRIDE威胁建模流程:
3.1、数据流图
数据流图是由以下4个元素组成:
①外部实体:
系统控制范围之外的用户、软件系统或者设备。作为一个系统或产品的输入或输出。在数据流图中用矩形表示外部实体。
②处理过程
表示一个任务、一个执行过程,一定有数据流入和流出。在数据流图中用圆形表示。
③数据存储
存储数据的内部实体,如数据库、消息队列、文件等。用中间带标签的两条平行线表示。
④数据流
外部实体与进程、进程与进程或者进程与数据存储之间的交互,表示数据的流转。在数据流图中用箭头表示。
数据流图及元素类型:
3.2、识别威胁
STRIDE威胁建模方法已经明确了每个数据流图元素具有不同的威胁,其中外部实体只有仿冒(S)、抵赖(R)威胁,数据流只有篡改(T)、信息泄露(I)、拒绝服务(D)威胁,处理过程有所有六种(STRIDE)威胁,存储过程有篡改(T)、信息泄露(I)、拒绝服务(D)威胁,但如果是日志类型存储则还有抵赖(R)威胁。具体可以对照如下表格进行威胁识别。
数据流图元素对应的不同威胁:
元素 | S | T | R | I | D | E |
---|---|---|---|---|---|---|
外部实体 | √ | √ | ||||
处理过程 | √ | √ | √ | √ | √ | √ |
数据存储 | √ | ? | √ | √ | ||
数据流 | √ | √ | √ |
3.3、提出缓解措施
根据不同的数据流图元素及威胁,相应的缓解措施也不相同。如本文示例数据流图中外部实体用户的仿冒威胁,其缓解措施简单来说就是对用户身份进行认证。对于一个Web应用来说,缓解仿冒威胁不仅需要较强的认证机制,还需要防止恶意攻击者用暴力破解、口令猜测等方法绕过认证从而造成仿冒用户的威胁。如果笔者来提出该用户仿冒威胁的缓解措施的话。
详细措施如下:
对用户访问进行帐号密码、证书等身份认证;
用户帐号密码认证过程中,如果出现三次密码错误,则增加验证码机制。输入验证码且正确再进行身份认证;
当用户认证5次后仍然验证失败,则在30分钟内禁止该帐号登录;
用户密码必须包含数字、字母及特殊字符,且长度在8位以上,如果业务安全需要则增加密码过期机制,每隔6个月提醒用户修改密码;
在提出缓解措施时,有的时候不仅要考虑安全问题,同时也要考虑软件的易用性,所以不同的威胁,不同的应用场景。其缓解措施也要随之而改变以提高应用安全的同时也能给用户带来较好的交互体验。
微软对于常用的威胁给出了其常用的标准缓解措施,并在具体实施时已将常用的缓解方案及措施集成为独立的解决方案或者代码模块。可以方便同类应用直接使用。
威胁类型 | 缓解措施 | 技术方案 |
---|---|---|
仿冒(S) | 认证 | Kerberos认证、PKI系统如SSL / TLS证书、数字签名 |
篡改(T) | 完整性保护 | 访问控制、完整性校验 |
抵赖(R) | 日志审计 | 强认证、安全日志、审计 |
信息泄露(I) | 保密性 | 加密、访问控制列表 |
拒绝服务(D) | 可用性 | 访问控制列表、过滤、热备份 |
权限提升(E) | 授权认证 | 输入校验、用户组管理、访问控制列表 |
3.4、安全验证
在威胁建模完成后,需要对整个过程进行回顾,不仅要确认缓解措施是否能够真正缓解潜在威胁,同时验证数据流图是否符合设计,代码实现是否符合预期设计,所有的威胁是否都有相应的缓解措施。最后将威胁建模报告留存档案,作为后续迭代开发、增量开发时威胁建模的参考依据。
参考链接:
1、https://www.microsoft.com/en-us/SDL
2、Introduction_to_Threat_Modeling
SDL介绍----3、STRIDE威胁建模方法相关推荐
- 【安全】威胁建模方法
#常见的威胁建模方法有:攻击树.TVRA.STRIDE等# 1.攻击树建模攻击树模型是Schneier提出的一种系统攻击分类方法.这种方法采用树形结构描述攻击逻辑,使安全分析人员从系统面临攻击威胁的角 ...
- STRIDE 威胁建模:面向安全应用程序开发的威胁分析框架
一.什么是 STRIDE 威胁建模? STRIDE 威胁模型由Microsoft安全研究人员于 1999 年创建,是一种以开发人员为中心的威胁建模方法,通过此方法可识别可能影响应用程序的威胁.攻击.漏 ...
- 精华-IoT威胁建模
2.1 简介 无论读者具有软件研发背景还是具有系统或者网络运维背景,可能都对各自领域中的攻击面或者攻击向量都已经比较熟悉了.攻击面指的是通过某一输入源实现设备入侵的多种途径.输入源可以来自硬件.软件, ...
- 常见威胁建模框架分析与比较
1 概述 威胁建模的方法最初是为了帮助开发更多的安全的操作系统,但已经开发的大量威胁建模方法,有些只关注软件发展,有些仅涵盖业务或组织的风险和威胁,另有一些可能是技术性的,不同的威胁模型都在基于不同的 ...
- 3DSMAX渲染器哪个好以及建模方法大盘点?你学会了吗
3DSMAX渲染器哪个好以及建模方法大盘点?你学会了吗 Maya基础到精通案例教程集:传送门 zbrush基础到精通案例教程集:传送门 3dmax基础到精通案例教程集:传送门 3D建模软件安装下载集: ...
- Atomsk孪晶多晶建模方法
大家好,我是小马老师. 本文介绍atomsk孪晶多晶建模方法. atomsk多晶建模的原理是先建立一个晶胞,然后编写一个polycrystal.txt文件,设定最终模型的尺寸和晶粒的个数. atoms ...
- SDL安全设计工具,一款支持多人协作实施威胁建模的微信小程序
SDL安全设计工具,一款支持多人协作实施威胁建模的微信小程序楔子痛点威胁建模活动组织方法道具使用方法要点使用示例多人单人Q&A其他游戏参考阅读致谢 Shingle,音[ˈʃɪŋɡl],是世界上 ...
- 推荐介绍一项新的工程技术:[威胁建模]的相关系列文章《威胁建模Web 应用程序》...
以往我们建立和开发web应用,特别是要部署到Internet上的工程项目,都要多多少少考虑一些安全性问题,分析可能存在的漏洞,来决定如何有效防范攻击,但是很少有公司或个人将这种行为活动归结到项目的建模 ...
- 微软威胁建模工具 STRIDE
威胁建模要回答的四个问题 what are we woking on what can go wrong what are we going to do about this did we do a ...
最新文章
- 竞赛规则补充说明 | 无线节能组车模
- Keras_insightface测试
- c# 微服务学习_微服务:学习几个容易混淆的URL注解
- Leetcode300. Longest Increasing Subsequence最长上升子序列
- c语言根据变量作用域不同分为,C语言中不同变量的访问方式
- 基于51单片机的时钟系统
- mysql 锁问题 (相同索引键值或同一行或间隙锁的冲突)
- 前端重构实践(一) —— 性能优化
- 病毒周报(100118至100124)
- 如何修改WSS站点的主菜单
- LimeSDR实验教程(3) GSM基站
- 数据中台全面分析总结
- 利用js文件获取视频文件详细信息 如帧速率、总比特率等
- FlinkSQL JDBC 批处理 java heap space
- 程序设计学习(c++)(课堂学习2)
- 算法基础(二):master公式
- Java中HashMap底层实现原理
- 微信小程序 - 云开发轮询实现定时推送订阅消息
- java毕业设计创新创业竞赛管理系统2021Mybatis+系统+数据库+调试部署
- Oracle EBS财务模块(四)账套