主站

分类

漏洞 工具 极客 web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据库安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

FreeBuf+小程序

官方公众号企业安全新浪微博

国内领先的互联网安全新媒体,同时也是爱好者们交流与分享安全技术的社区

5分钟看完安全开发大讲堂之“威胁建模”
2020-04-01 17:04:18

错过了上周五“威胁建模”的直播?

不要紧,勤奋的小默为大家整理了

2000字的内容小结

想5分钟看完的童鞋

可跳过80分钟的录播。。

 你要的精华都在这儿了

一、软件可能面临哪些安全风险?

系统软件本身的安全问题

应用软件开发过程中出现漏洞

直接使用第三方代码的安全问题

新技术的出现

二、安全开发的常见模型有哪些?

SDL:安全开发生命周期

BSI:内建安全

BSIMM:软件安全构建成熟度模型

SAMM:软件保障成熟度模型

CLASP:综合的轻量应用安全过程

课程中展开介绍了SDL、BSIMM、SAMM。

SDL图片1.png

在微软定义的SDL中,威胁建模属于设计阶段,安全设计是从安全性的角度定义软件的总体结构。通过分析攻击面,设计相应的功能和策略,降低并减少不必要的安全风险。同时通过威胁建模,分析软件或系统的安全威胁,提出缓解措施。

BSIMM图片2.png图片3.png

在BSIMM模型中威胁建模属于架构分析(AA)阶段。根据右下图BISMM10记分卡对金融、医疗、保险三大行业的软件安全开发水平统计数据可以看出,架构分析、攻击模型等是这三个行业普遍薄弱的模块。

SAMM图片4.png

SAMM从企业组织与软件开发的核心活动开始,规定了5个软件开发过程中的核心业务功能,包括治理、设计、实施、验证、操作。其中设计关注软件安全开发中的需求、目标和架构方面的过程、活动和措施。主要包括威胁建模、安全要求和安全架构三个方面的实践。

三、什么是威胁建模?

网络安全的本质是攻防双方的对抗与博弈。攻击方往往凭借天赋、脑洞和个人兴趣发起五花八门的攻击活动,执行单点式攻击;但是防御方却要防住所有,全靠脑洞不讲究方法就难免会有疏漏。因此防御方需要有方法论的指导。威胁建模就是其中一种方法论。

那什么是威胁建模?简单来说,威胁建模就是通过结构化的方法,系统地识别、评估产品的安全风险和威胁,并针对这些风险、威胁制定消减措施的一个过程。在此过程中,可以识别、枚举潜在威胁,并确定缓解的优先级。同时,可以回答例如“我最容易受到攻击的地方是哪里”、“我该怎么做才能抵御这些威胁?”这样的问题。

常见的威胁建模方法有以下四种,分别是STRIDE、PASTA、Trike、VAST。以上4个方法主要分为2个类型,分别是基于数据流程图和基于过程流程图。

STRIDE、PASTA和Trike都利用数据流程图(DFD)开发了应用程序基础结构的可视表示。传统上,DFD仅使用四个唯一的符号:数据流,数据存储,进程和交互器。在2000年代初期,增加了一个附加符号,即信任边界,以允许将DFD用于威胁建模。

VAST区分了应用程序威胁模型(ATM)和运营或基础架构威胁模型(OTM),一旦构建了ATM或OTM,该方法将指定如何识别,枚举,划分优先级并将其与相关风险和缓解安全控制措施相关联。

下面简要介绍基于STRIDE数据流程图的微软威胁建模模型。

微软的威胁建模

1. 整体模型 

图片5.png

微软威胁建模模型

说起微软的威胁建模,可以追溯到本世纪初,2004年微软从流程管理、技术措施、人员组织和考量指标四个方面清晰地定义了威胁建模能力,包括1个流程、2个模型、1个支撑工具、多名角色定义及多个评价指标。

2. 工具

图片6.png

微软威胁建模工具界面

2008年11月,微软宣布安全开发生命周期(SDL)威胁建模工具的通用版本,并提供免费下载。工具的发布是微软威胁建模发展的关键点。将威胁建模能力工具化。从2008年至2020年,历经12年的时间,威胁建模的方法论基本没有更新。在2016年,微软对威胁建模工具进行了扩展性更新,包括模版编辑等。目前最新的版本是TMT7,于2020年2月发布。

3. 流程管理

图片7.png

微软威胁建模流程

该流程就是上图“微软威胁建模模型”中“流程管理”部分的详细步骤。简单说,是在威胁建模软件上绘制业务数据流程图,然后采用STRIDE模型进行威胁识别和利用DREAD模型完成威胁评价。

(1)绘制业务数据流程图

其中标识资源、创建结构、分解程序这三部分主要用于:

了解软件信息,包括需要保护的数据、功能架构、使用技术、数据走向、特权代码和信任边界等;

在对软件具有一定认知后,完成数据流程图的绘制。同时为后续威胁识别做铺垫。

(2)识别威胁

绘制数据流程图后,进入威胁识别过程。最为大众所熟悉的威胁识别方法是STRIDE,它从攻击者的角度,把威胁划分成 6 个类别,分别是 Spoofing(欺骗)、Tampering(篡改)、Repudiation(抵赖)、Information Disclosure(信息泄露)、DoS(拒绝服务) 和 Elevation of Privilege (特权提升)。

图片8.png

软件开发4个元素分别对应的威胁类型

STRIDE威胁建模方法已经明确了每个数据流图元素具有不同的威胁,具体可以对照表格进行威胁识别。数据存储中 Repudiation(抵赖)是红色,表示只有存储的数据是审计类日志才会有抵赖的风险,存储其它数据时无抵赖。

(3)记录威胁

当分析完数据流图中的所有对象的潜在威胁后,要输出一个威胁列表,记录列表举例如下:

图片9.png

威胁列表中不仅需要有具体的威胁信息还应具备缓解措施,同时,在提出缓解措施时,也要考虑软件的易用性。

(4)威胁评价

针对发现的威胁,采用DREAD模型对其进行评级,用来作为解决或管理威胁的参考。DREAD分别是5个指标的英文首字母:

潜在损失(Damage Potential):如果缺陷被利用,损失有多大?

重现性(Reproducibility) :重复产生攻击的难度有多大?

可利用性(Exploitability) :发起攻击的难度有多大?受影响用户(Affected Users):用粗略的百分数表示,有多少用户受到影响?

可发现性(Discoverability) :缺陷容易发现吗?

每个指标的评级分为高中低三等,最终威胁的危险评级由这5个指标的加权平均算出。

图片10.png

DREAD模型下的威胁评价参考标准

微软的威胁建模到这里就告一段落。具体人员部分没有展开讲是因为每个组织的架构各不相同,无法一概而论。

其它威胁识别模型(除STRIDE外)

威胁建模的重点是威胁识别。除STRIDE外,常见的威胁识别模型还有攻击树和攻击库(较为流行的攻击库由CAPEC组织发布)两种。模型细节可以通过查阅课程PPT或自行学习。

实际操作中,威胁识别可采用多方式组合的方法进行威胁发现,例如,基于CAPEC攻击库,结合攻防用例绘制基于业务场景的攻击树,再用STRIDE去补充攻击树的缺陷等。具体威胁识别模型的使用,各位可在实际操作中进行探索、选择。

四、学习资料

课程结尾,讲师推荐了18款威胁建模工具威胁建模学习资料的推荐,有兴趣了解的小伙伴可在“默安科技”公众号后台回复“直播”,直接获取PPT下载链接。



安全开发大讲堂第四课 

《默安DevSecOps落地实况》

直播预告:

本周五(4月3日)下午4点准时开播!想听的同学们直接扫描下方海报底部二维码,添加小默微信,进入微信群后获取直播链接。参与每场直播结束时的问答环节,更有机会获得默安内部限量发行的《上医治未病 企业安全开发体系(SDL)建设指南》书籍一本!

安全开发大讲堂-202003.jpg

本文作者:, 转载请注明来自FreeBuf.COM

被以下专栏收录,发现更多精彩内容
+ 收入我的专栏
评论 按时间排序

登录/注册后在FreeBuf发布内容哦

相关推荐
  • 0 文章数
  • 0 评论数
  • 0 关注者
登录 / 注册后在FreeBuf发布内容哦