威胁建模——围绕假想敌的领域建模 | IDCF
共 3367字,需浏览 7分钟
·
2022-04-19 04:08
来源:Thoughtworks洞见
作者:蒋帆
威胁建模是一个帮助识别列举潜在威胁,并确定缓解措施的优先级,让安全实践左移的过程方法(例如架构缺陷漏洞或缺乏适当的保护措施)。
威胁建模的目的是为防御者提供系统分析,分析需要包含哪些控制或防御措施,考虑到系统的性质、可能的攻击者的概况、最可能的攻击向量以及攻击者最需要的资产。威胁建模可以回答诸如“我在哪里最容易受到攻击?”、“什么是最相关的威胁?”以及“我需要做什么来防范这些威胁?”等问题。
简而言之,威胁建模是一个围绕假想敌开展的领域建模活动。
能力要求 —— 资深架构师的小众发展路径
“这个岗位好难招啊,我们招了一年都没招到特别匹配的”
——某客户安全实验室威胁建模负责人
威胁建模并不是一个特别新的概念,但是在中国的信息安全行业,如果10个候选人里面能遇到1个简历里写着威胁建模经验,运气就已经很不错了,并且,实际上可以胜任这个岗位的角色更为稀缺。大部分的威胁建模能力都留在了各大高校机构实验室从事研究员的角色,没有广泛的技术经验在企业中铺开,并且这个岗位也还很少在产品和IT部门出现。
为什么这么难?主要的原因是,威胁建模并不是一个传统安全测试岗位可以很容易发展出的能力。
一个优秀的安全测试人员,需要了解各种类型的漏洞和攻击原理,需要思考每个攻击路径之间的联系,需要能阅读源码或二进制反汇编的代码寻找漏洞的蛛丝马迹,需要操作自动化工具进行暴力搜索,甚至需要熟练地逆向分析软件的原理,但是却往往缺乏正向开发和架构师的背景,尤其是在安全领域浸淫多年的大牛,很多都缺乏对最新技术架构的跟进和实践经验。
一个仅仅在安全测试方面有所建树的专家,却很难与大部分软件开发人员建立对话,而威胁建模,本质上是一个与架构师对话的过程,对话需要足够的共同语言和互相理解,因此也就对安全测试提出了新的要求,“与架构师统一语言”的要求。
整个过程中,威胁建模专家应当扮演假想敌的角色,与架构师进行思维上的碰撞,从而阐明和解释威胁的来源与可能存在的影响。
因此,对威胁建模人员的要求,既需要他能积累大量安全漏洞风险相关的知识,也需要了解大量软件架构设计和技术原理,甚至需要对开发非常熟悉,这也导致一个很有意思的现象,威胁建模人员大部分是由开发者发展而来,而非业务分析师或安全测试人员。
方法论 —— 加入安全视角的架构建模过程
在人员稀缺的情况下,为了让更多的企业能更容易开展威胁建模活动,于是出现了非常多的威胁建模“方法论”,其中以DFD模型最为突出,它尝试将软件架构抽象为一系列的组件数据交互,并指出系统中的安全要素(角色、组件、资产数据、交互关系、边界)。
通常一场威胁建模工作坊中,主持人会从以下几个步骤展开话题:
我们有哪些系统,这些系统有哪些用户? 我们从每一个业务事件流的角度出发,这个用户和系统的交互有哪些? 我们在交互中,产生了哪些数据实体?有哪些属于我们关心的核心资产? 我们有哪些外部的系统或者依赖(我们难以控制的威胁引入)? 我们有哪些系统安全边界设计,如网络隔离、认证和鉴权等(我们已经考虑并实施的安全控制)?
威胁助记词和情报知识库 —— 划分子域,并进行威胁头脑风暴
Spoofing(伪装) Tampering(篡改) Repudiation(抵赖) Information Disclosure(信息泄露) Denial of Service(拒绝服务) Elevation of Privilege(提权)
理想安全模型挑战 —— 经验or方法?
一方面,围绕漏洞利用经验,尤其是大量攻防活动中的威胁,被逐渐归纳为威胁/防御的模式库,如ATT&CK、CAPEC、CVSS的逐年完善,已经成为可以支撑威胁模型的数据集,在威胁建模活动中作为参考输入。 而另一个方向上,安全方法论也开始不只局限于停留在纸面文章,我们看到越来越多的安全方法论讲究与实践结合,如DevSecOps、CARTA(自适应安全)等安全方法论,都紧贴工具输出甚至业务上下文,而非局限于安全活动的执行情况审计。
2022年首场将在美丽的海滨城市-大连举办,5月14-15日,36小时内从0到1打造并发布一款产品。
企业组队参赛&个人参赛均可,赶紧上车~👇