威胁建模是一种提前识别应用程序架构中可能存在的漏洞的方法。 它包括绘制应用程序的图表,识别安全缺陷,并减轻这些缺陷。
阅读本文后,您将能够:
复制文章链接
威胁建模是一种在应用程序及其环境中寻找安全漏洞的练习。 它涉及创建一个具有所有组件的应用程序的代表,然后确定薄弱点。 理想情况下,开发人员和安全工程师在整个软件开发过程中使用威胁建模--在应用程序上线之前,而不仅仅是上线之后。 威胁建模可以帮助使应用程序比其他情况下更安全,但不应该期望它能使应用程序坚不可摧。
在抢劫电影中,主角经常研究他们计划抢劫的设施的蓝图,找出薄弱环节--建筑物可以进入的地方,安全摄像机看不到的角度,等等。 同样,威胁建模就像检查给定应用程序的"蓝图。" 不同的是,威胁建模是由希望保持应用安全的人完成的,而不是由可能的抢劫者完成的。
威胁建模要求团队创建一个完整的应用程序视图。 然后,它涉及到像一个可能想妥协的人那样思考问题。 攻击者会怎么做? 他们也许会利用薄弱的 API安全? 他们会不会使用 供应链攻击 来感染一个综合系统库? 虽然不是所有的攻击都能被预测到,但威胁建模有助于在它们发生之前阻止其中一些攻击。
威胁建模有很多可能的方法,没有一种方法可以适用于所有情况。 但通常涉及这四个主要步骤:
威胁建模者试图识别和描绘:
如果Terry写了一个显示气球图片的简单应用,他的应用图可能如下:
请注意,这是一个大大简化的例子,真正的威胁建模应用图可能要复杂得多。
看到以这种方式布置的应用程序可以使其更容易识别缺陷。 例如,特里可能会注意到,他的气球照片数据库和他的网络服务器之间的通信没有使用 运输层安全(TLS)。 这意味着两个服务器都没有通过数字签名验证对方的身份,这使得攻击者有可能冒充数据库服务器并向网络服务器发送恶意内容。
由于威胁建模发生在整个开发过程中,减轻缺陷可能意味着改变应用程序的架构计划,或对正在构建的应用程序部署修复。
为了减轻他发现的威胁,Terry可以重新配置他的数据库服务器和网络服务器,使其使用TLS进行连接--或者更好的是,使用 相互TLS(mTLS) ,并相互验证。
在这一点上,Terry可能会在测试环境中运行应用程序,并检查1)服务器是否按照配置使用了TLS,以及2)Web服务器是否会接受来自未经验证的服务器而不是数据库服务器的HTTP流量。 他将对他所应用的任何其他缓解措施进行类似检查。
威胁建模方法是一种识别威胁的方法。 方法论为威胁建模过程提供了结构,否则在一个复杂的系统中可能会被淹没。 企业可以从广泛的威胁建模方法中进行选择,甚至可以开发自己的方法。 几种最常见的方法包括:
还有其他几种威胁建模的方法。 其中一些,如"Trike" 和各种混合方法,甚至没有首字母缩写。
威胁建模的目的是在软件开发之前和期间,在应用程序的整个生命周期内进行。 如果一个应用程序在没有任何威胁建模或缓解的情况下发布,安全缺陷可能会在安全团队发现之前被用户--或攻击者--发现。 这可能导致 数据泄露 ,并引入更大的风险 zero-day 威胁。
然而,由于威胁建模并不能发现系统内的所有风险,即使在发布之后,开发者和组织也应该继续这一过程。 除了威胁建模之外,他们还可以通过以下方式来实现:
Cloudflare还提供了一个 威胁情报 和运营服务Cloudforce One,以保护客户免受最新威胁。 Cloudforce One由一个世界级的威胁研究团队领导,该团队在瓦解全球规模的攻击者方面具有丰富的经验。 在此了解Cloudforce One的情况。