购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

5.1 STRIDE威胁建模

STRIDE于1999年被发明,并于2002年被微软采用,是目前最成熟的威胁建模方法。STRIDE随着时间的推移而发展,包括新的特定于威胁的表以及STRIDE-per-Element和STRIDE-per-Interaction变体。STRIDE将威胁类型分为Spoofing(仿冒)、Tampering(篡改)、Repudiation(抵赖)、Information Disclosure(信息泄露)、Denial of Service(拒绝服务)和Elevation of Privilege(权限提升)6种,它对所在系统进行建模。通过构建数据流图(DFD),STRIDE用于标识系统实体、事件和系统的边界。此外,STRIDE威胁建模方法具有详细的流程和方法。

5.1.1 STRIDE的6类威胁

STRIDE威胁建模包含6类威胁,具体如下。

1.仿冒(Spoofing)

仿冒是指攻击者伪装自己的身份以成功冒充可信来源并获得对用户重要数据或信息的访问权限。仿冒经常使用社会工程来说服用户提供用户名和密码等信息。一旦攻击者获得信息,他们将使用它来访问应用程序并从那里感染网络。仿冒攻击包括Cookie重放攻击、会话劫持和跨站点请求伪造(CSRF)攻击。由于仿冒是对用户身份验证的攻击,因此最好的预防形式是实施安全的用户身份验证方法,包括安全密码要求和多因素身份验证(MFA)。

2.篡改(Tampering)

篡改涉及恶意修改数据。攻击者尝试通过篡改目标参数或代码来破坏应用程序,以修改应用程序数据,如用户凭据和权限或应用程序中的其他关键项目。跨站点脚本(XSS)和SQL注入等篡改攻击会破坏应用程序的完整性。为了防止篡改,应用程序应设计为验证用户输入并编码输出。在开发阶段和应用程序投入生产后,应使用静态代码分析来识别应用程序中的篡改漏洞。

3.抵赖(Repudiation)

抵赖攻击利用缺乏正确跟踪和记录用户操作的控制,利用这种缺乏来操纵或伪造新的、未经授权的操作的标识、删除日志或将错误数据记录到日志文件中,并拒绝操作或接收服务(如实施欺诈)。开发人员可以通过在提供操作证明的应用程序中加入数字签名或确保有完整的、防篡改的日志来建立不可否认性,或确保某人不能否认操作的有效性。

4.信息泄露(Information Disclosure)

信息泄露是指应用程序无意中泄露了可能被攻击者用来破坏系统的应用程序信息。信息泄露可能来自应用程序中留下的开发人员评论、提供参数信息的源代码或包含过多细节的错误消息、泄露用户数据、敏感的商业或业务数据以及有关应用程序及其基础架构的技术细节。然后,攻击者可以使用此信息来强制访问收集有关客户信息的应用程序,这些信息可用于进一步犯罪或者获得特权,从而可以访问应用程序的更敏感区域。

开发人员是防止应用程序信息泄露漏洞的核心:

1)错误消息、响应标头和背景信息应尽可能通用,以避免泄露有关应用程序行为的线索。

2)应制定适当的访问控制和授权,以防止未经授权访问信息。

3)应该从用户的角度检查应用程序本身,以验证开发人员的评论和其他信息没有在生产环境中显示。

5.拒绝服务(Denial of Service,DoS)

拒绝服务(DoS)攻击使目标流量泛滥,触发崩溃,然后将其关闭,从而拒绝向有效用户提供服务。DoS攻击通常会耗费时间和金钱,但不会对其受害者造成其他损害。最常见的DoS攻击形式是缓冲区溢出攻击,它只是向应用程序发送过多的流量。DoS攻击可以针对网络层或应用程序层。通过配置防火墙来阻止来自某些来源(如保留、环回或私有IP地址或未分配的DHCP客户端)的流量,或者引入速率限制来管理流量,可以保护应用程序免受DoS攻击。

6.权限提升(Elevation of Privilege)

权限提升攻击利用应用程序中的漏洞和错误配置来获得特权的非法访问。权限提升攻击可能会利用凭证和身份验证过程,利用设计中的漏洞、错误配置或社会工程来获取非法访问权限。应在开发阶段将防止权限提升的保护内置到应用程序中,这包括管理身份生命周期、对所有用户强制执行最低权限原则、通过配置更改强化系统和应用程序、删除不必要的权限和访问、关闭端口等。

5.1.2 STRIDE威胁建模的一般流程

STRIDE是微软开发的用于威胁建模的方法和工具,STRIDE威胁建模流程图如图5-1所示。

1.绘制数据流图

数据流模型是进行威胁建模的最佳模型,这是因为安全问题往往是在数据流中出现,而不是在控制流中。外部实体、进程、数据存储和数据流是数据流图的4个基本要素。

· 图5-1 STRIDE威胁建模流程图

(1)外部实体

外部实体指系统控制范围之外的用户、软件系统或者设备,作为一个系统或产品的输入或输出。在数据流图中用矩形表示外部实体。

(2)进程

进程表示一个任务、一个执行过程,一定有数据流入和流出。在数据流图中用圆形表示。

(3)数据存储

数据存储指存储数据的内部实体,如数据库、消息队列、文件等。用中间带标签的两条平行线表示。

(4)数据流

数据流指外部实体与进程、进程与进程或者进程与数据存储之间的交互,表示数据的流转。在数据流图中用箭头表示。

2.识别威胁

STRIDE威胁建模方法已经明确了每个数据流图元素具有不同的威胁,其中外部实体只有仿冒(S)、抵赖(R)威胁,数据流只有篡改(T)、信息泄露(I)、拒绝服务(D)威胁,处理过程有所有6种(STRIDE)威胁,存储过程有篡改(T)、信息泄露(I)、拒绝服务(D)威胁,但如果是日志类型存储则还有抵赖(R)威胁。

3.提出缓解措施

根据不同的数据流图元素及威胁,相应的缓解措施也不相同。例如,对于一个Web应用来说,缓解仿冒威胁不仅需要较强的认证机制,还需要防止恶意攻击者用暴力破解、口令猜测等方法绕过认证从而造成仿冒用户的威胁。用户仿冒威胁的缓解措施详细内容举例如下:

· 对用户访问进行账号密码、证书等身份认证。

· 用户账号密码认证过程中,如果出现三次密码错误,则增加验证码机制。输入验证码且正确后再进行身份认证。

· 当用户认证5次后仍然验证失败,则在30分钟内禁止该账号登录。

· 用户密码必须包含数字、字母及特殊字符,且长度在8位以上,如果业务安全需要则增加密码过期机制,每隔3个月提醒用户修改密码。

在提出缓解措施时,有的时候不仅要考虑安全问题,同时也要考虑软件的易用性,所以不同的威胁和不同的应用场景,其缓解措施也要随之而改变,以在提高应用安全的同时也能给用户带来较好的交互体验。微软对于常用的威胁给出了其常用的标准缓解措施,并在具体实施时已将常用的缓解方案及措施集成为独立的解决方案或者代码模块,可以方便同类应用直接使用,见表5-1。

· 表5-1 威胁缓解措施

4.安全验证

在威胁建模完成后,需要对整个过程进行回顾,不仅要确认缓解措施是否能够真正缓解潜在威胁,同时也要验证数据流图是否符合设计、代码实现是否符合预期设计、所有的威胁是否都有相应的缓解措施。最后将威胁建模报告留存档案,作为后续迭代开发、增量开发时威胁建模的参考依据。

5.1.3 STRIDE威胁建模的优点

STRIDE威胁建模的优点如下。

1.尽早发现漏洞

一旦开发了所有或大部分应用程序,许多公认的漏洞识别方法(如静态代码分析、渗透测试、漏洞赏金等)就会发挥作用。但是,在开发周期中修复漏洞比在实时产品中修复漏洞更便宜、更容易。STRIDE威胁建模是一种以开发为中心的方法,用于评估可能影响应用程序的威胁。STRIDE可用于形成安全软件开发生命周期的清单,支持开发人员在更便宜且更容易缓解或补救时及早发现潜在弱点。

2.采取安全第一的方法

STRIDE威胁建模是围绕威胁构建的,鼓励开发人员思考每个威胁如何攻击应用程序的不同部分。此外,它挑战假设,使开发人员和信息安全团队质疑他们的假设,并测试它们的有效性和安全性。

STRIDE威胁建模练习的结果可以与DREAD风险评估模型相结合,以评估每个风险的影响,并确定漏洞的优先级以进行补救。

3.STRIDE威胁建模可以反复进行

STRIDE威胁建模是一个框架,允许定期进行威胁建模练习,以使安全团队能够掌握快速发展的威胁形势,并确保到位的保护能够抵御新旧威胁。 8SZCNejB0tCgonn/QkX/+M/e8xCNGJP+S/2mM/LaNrAryHF/6eedGubobO+S2Rdi

点击中间区域
呼出菜单
上一章
目录
下一章
×

打开