官方公众号企业安全新浪微博
FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。
FreeBuf+小程序
前言
无论是在devsecops体系中还是在SDL体系中都提到过一个概念-威胁建模,可在devops体系或者SDL系统的实际建设中,威胁建模总是被忽略掉,这是因为威胁建模需要花费大量的时间以及需要大量的沟通。如果做好了威胁建模,可以在设计阶段就将很多的威胁消除掉,好处是巨大的,本文就来认识一下威胁建模是什么以及要如何去做。
由于本人水平有限,文章中可能会出现一些错误,欢迎各位大佬指正,感激不尽。如果有什么好的想法也欢迎交流~~
威胁建模基础知识
什么是威胁建模
威胁建模是通过分析系统来发现那些由于不太完善的设计方式所导致的缺陷的过程。它的目标是在将这些缺陷(由于实施或部署)引入系统之前就确定它们,以便尽早采取修正措施。
从上面的概念中可以看出威胁建模是在系统设计阶段的工作,找出设计上的缺陷,使问题可以尽早的得到解决。
为什么需要威胁建模
1)了解系统中可能出现的问题以及如何解决它们,在设计阶段就可以避免一些安全问题,降低系统出现问题的概率
2)促使形成更清晰的架构
3)定义明确的信任边界
4)进行有针对性的安全测试以及形成更好的文档
何时做威胁建模?
无论在SDL以及devsecops流程中,都可以看到威胁建模的身影,威胁建模一般是在设计阶段被引入,这也是一个不断完善的过程,在系统不断更新时也要相应的更新威胁模型。
如何做威胁建模
威胁建模大概可以分为下面的几个步骤
1.分解应用程序或基础架构
2.对分解的场景进行建模
3.根据系统架构和模型分析系统中存在的威胁
4.确定如何消除或者减少风险
分解应用程序或基础架构
一个完整的系统可能包含多个应用场景,而威胁建模是针对具体的场景开展的,因此需要对我们系统根据实际情况进行业务场景的分解。比如登录场景、用户管理场景,支付场景,数据保存场景等等。
如下面的一个系统架构图,我们对其进行场景分解,就可以将其分为:登录场景,用户管理,账单场景等等。
系统建模
将系统进行场景分解以后,就可以对各个场景进行建模,一般有三种模型:数据流图,序列图,过程流图。
根据公司情况选择适合的方式,一般用的是数据流图。
数据流图
数据流图(DFD)描述了系统中组件之间的数据流以及每个组件和流的属性。DFD是威胁建模中最常用的系统模型形式,许多绘图程序包本身都支持DFD,DFD中的形状也易于人们手工绘制。
数据流图包括四个核心元素:外部实体、数据流、处理过程及数据存储。
外部实体,可以是浏览器、移动设备、人、进程等实体。
数据流,可以是功能调用、网络数据流等。
处理过程,可以是服务、组件等。
数据存储,除了数据库也可以是文件、注册表、共享存储、缓存等。
如下图,一个最简单的数据流图
序列图
这是统一建模语言(UML)中的活动图,以有序的方式描述了系统组件的交互关系。由于序列