系统安全设计的方法--威胁建模

这篇具有很好参考价值的文章主要介绍了系统安全设计的方法--威胁建模。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

    一个IT系统是复杂的,随着提供更多的业务功能它会变得越来越复杂。这意味着一个IT系统的设计决策需要考虑到越来越多的情况,包括安全的情况。因此催生了DevSecOps、SDL的发展,以期规避可能导致影响业务结果的潜在安全威胁。这时除了要对IT系统进行功能建模、性能建模之外,还需要对系统安全进行建模,威胁建模是常见的一种安全建模方式。

1.什么是威胁建模

    威胁建模的最早尝试始于攻击树(attack trees)方法的上世纪90年代,为此,微软公司发布了一份名为《The Threats to Our Products》的文件,被广泛认为是对威胁建模过程的第一个正式描述。

    简单的说,威胁建模是一种帮助识别IT系统相关的威胁、漏洞以及应对策略的方法。对公司当前应用系统来说,我们可以将它限制为检查系统操作的设计,以及数据如何跨子系统边界流动,最终识别安全目标、相关的威胁、相关的漏洞和对策的方法。

2. 威胁建模概述

    我们将威胁建模抽象成图1所示的五个主要步骤。图1中,可以通过重复执行步骤2到5来逐步完善威胁模型。随着应用程序开发生命周期的推进,我们可以添加更多的细节,并发现更多关于应用程序设计的安全信息。

系统安全设计的方法--威胁建模


图1 威胁建模示意图

    对图1中各步骤的初步说明如下:

    步骤1:确定安全目标。明确的目标有助于帮助关注威胁建模活动,并确定在后续步骤上的工作安排和成本安排;

    步骤2:创建应用程序概览。详细说明应用程序的重要特征和参与者有助于在步骤4中识别相关的威胁;

    步骤3:解析应用程序。对应用程序机制的详细了解可以更容易地发现更多相关和更详细的威胁;

    步骤4:识别应用威胁。使用步骤2和步骤3中的详细信息来识别与应用程序场景和上下文相关的威胁;

    步骤5:识别应用漏洞。查看应用程序的各个层,以确定与威胁相关的漏洞/弱点。使用漏洞类别来帮助我们关注那些最经常犯错误的领域。

    随着应用程序开发生命周期的推进,我们会逐渐向威胁模型添加更多的细节,并发现有关应用程序设计的更多细节。因为从性能和功能的角度来看,威胁建模中确定的关键资源也可能是功能和性能的关键资源,所以我们可以在平衡所有需求时重新审视和调整模型,这是正常的,也是这一过程的重要成果。

3. 威胁建模活动的具体说明


    (假设我们当前以敏捷方法进行一个Web系统的开发工作)根据图1,总结了一个简单的敏捷威胁建模方法,如表1所示。以敏捷开发为背景,它是迭代的、增量的,并且专注于在评估各种用例/用户故事风险的同时循环提升、细化威胁模型。

系统安全设计的方法--威胁建模

 

表1 威胁建模活动汇总表

3.1 确定安全目标

    安全目标是与数据和应用程序的保密性、完整性和可用性相关的目标和约束。它们包括: 保密:防止未经授权的信息泄露;完整:防止未经授权的信息更改;可用性:包括即使在受到攻击时也能提供所需的服务。

      特定的安全目标是项目目标的子集,通过确定关键安全目标,还有助于了解潜在攻击者的目标,并专注于应用程序中需要密切关注的领域。

    从个人的经验出发,要确定安全目标,应考虑以下问题:需要保护哪些客户(端)数据?有法律法规遵从性的需求吗?有具体的服务质量要求吗?有需要保护的无形资产?

3.2 创建应用程序概览

    在这一步中,依据概览中应用程序的功能要示,确定出应用程序的关键功能、特征和客户。这有助于在步骤4中识别相关威胁。需要注意的是,威胁建模是一个迭代过程,不要让这一步阻碍向下的步骤。即,应确定尽可能多的细节,然后随着设计的发展添加更多的细节。例如,如果当前正在进行设计,并且还没有考虑物理部署,那么我们仍然可以执行这个步骤,尽管可能利用的数据较少,但也要尽快列举所能列举的。

3.3 解析应用程序

      在这一步中,我们将解析应用程序以确定信任边界、数据流、入口点和出口点。我们对应用程序的机制了解的越多,发现威胁和漏洞就越容易。

3.4. 识别应用程序威胁

    在这一步中,我们将识别可能影响应用程序并危及安全目标的威胁和攻击,这些威胁会对应用程序产生不良影响。

    通常我们可以使用两种基本方法。

    1.从常见的威胁和攻击开始。使用这种方法,可以从按应用程序漏洞类别分组的常见威胁列表开始。然后,将威胁列表应用到应用程序架构中。例如,使用确定的场景来检查数据流,特别注意入口点和跨越信任边界的地方,我们能够立即消除一些威胁,因为它们不适用于应用程序的某些场景或边界;

    2. 使用问题驱动的方法。问题驱动的方法可以帮助识别相关的威胁和攻击。可以使用STRIDE模型来询问与应用程序的架构和设计的各个方面相关的问题。这是一种基于目标的方法--考虑攻击者之考虑。例如,攻击者能够伪造身份来访问服务器或Web应用程序吗?有人会篡改网络上或数据存储中的数据吗?等等。

3.5. 识别应用程序漏洞

    在这一步中,将检查Web应用程序安全框架,并明确查找漏洞。像在上一步中识别威胁时一样,重点关注漏洞类别。一种有用的方法是逐层检查应用程序,考虑每层中的每个漏洞类别。

    漏洞的识别和应用是一个事件的两个步骤,首先,通过询问问题来识别通常的功能漏洞,然后,查找功能是否有漏洞列表中的漏洞。

    例如,对于一个身份验证的功能,首先,通过询问以下问题来识别身份验证漏洞: 凭证是否已存储?如果储存,它们是如何存储和保护的?然后,通过查找以下常见漏洞列表来检查身份验证: 通过未加密的网络链接传递身份验证凭据或身份验证cookies,这可能导致凭据捕获或会话劫持/使用弱密码和账户策略,这可能导致未经授权的访问/混合个性化和身份验证。

4. 威胁建模活动之后的活动

    完成威胁建模活动后,我们应当注意视情况执行以下操作:

    1. 如果我们文档化了威胁模型,应保持文档轻量级并避免过度格式化,以便可以轻松地更新它。关键内容应该包括安全目标、关键场景、受保护的资源、威胁列表和漏洞列表;

    2. 利用这些漏洞来帮助塑造安全设计和实现。例如,开发人员应该注意与已识别的漏洞相关的反模式,并使用模式来解决问题;

    3. 使用漏洞来计划和确定系统测试的范围。例如,测试人员应该针对漏洞进行测试,以验证开发团队修复或解决了所有漏洞;

    4. 跟踪系统中的漏洞并确定其优先级;

    5.如果没有可跟踪和采取行动的漏洞,我们发现的威胁很容易被忽略。如果我们有高优先级威胁,而没有相应的漏洞,此时需要做出决定,是进一步调查以确定漏洞,还是将其排除在范围之外,或者接受风险?

5. 结语

    受制于篇幅,对第三节中的内容无法完全展开更详细的说明;或受制于表达能力和行文时间,上述描述也必有值得商榷之处。总的来说,威胁建模是要消耗时间成本的,但对于系统安全来说是值得的,因为面对来自方方面面的系统安全威胁,如果我们能“料敌于先”,堂堂正正做好防御措施,总比听天由命式的仓促应战更有胜算吧。文章来源地址https://www.toymoban.com/news/detail-417989.html

到了这里,关于系统安全设计的方法--威胁建模的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 物联网(IoT)安全挑战与解决方案: 分析物联网设备面临的安全威胁,以及如何设计和管理安全的IoT生态系统

      随着科技的飞速发展,物联网(IoT)作为连接世界的桥梁,已经成为现代社会不可或缺的一部分。然而,随着IoT设备数量的不断增加,其安全问题也日益显著。本文将深入探讨IoT领域面临的安全挑战,以及我们如何通过创新的解决方案来构建一个安全可靠的IoT生态系统。

    2024年02月12日
    浏览(49)
  • 设计一个亿级高并发系统架构 - 12306火车票核心场景DDD领域建模

    “ 架设一个亿级高并发系统,是多数程序员、架构师的工作目标。 许多的技术从业人员甚至有时会降薪去寻找这样的机会。但并不是所有人都有机会主导,甚至参与这样一个系统。今天我们用12306火车票购票这样一个业务场景来做DDD领域建模。” 要实现软件设计、软件开发

    2024年02月03日
    浏览(48)
  • HTTPS:原理、使用方法及安全威胁

    HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),即安全超文本传输协议,是HTTP协议的安全版。HTTPS在HTTP的基础上,通过SSL/TLS协议对数据进行加密传输,以保证数据的完整性、机密性和身份认证。本文将详细介绍HTTPS的技术原理、使用方法和安全威胁。 HTTPS的主要技

    2024年04月10日
    浏览(72)
  • Falco操作系统安全威胁监测利器

    原理简介 Falco是一个开源的云原生安全工具,用于检测和防御容器和云原生环境中的安全威胁。它基于Linux内核的eBPF技术,通过监控系统调用和内核事件来实现安全检测和响应。 具体来说,Falco的实现原理如下: 1. 内核模块:Falco使用eBPF技术在Linux内核中加载一个内核模块。

    2024年02月07日
    浏览(40)
  • 网络安全系统中的守护者:如何借助威胁情报 (TI) 提高安全性

    在这篇哈巴尔网站上的推文中,我们将解释 TI 缩写背后的含义、为什么需要它、Positive Technologies   收集哪些网络威胁数据以及如何帮助企业预防网络威胁。我们将以四种情况为例,说明公司如何使用  PT Threat Intelligence Feeds  来发现恶意活动并预防攻击。 什么是 TI 当公司建

    2024年02月15日
    浏览(37)
  • 开源共建,360推出WatchAD2.0域安全威胁感知系统新版本

    不论是在攻防演练还是真实入侵对抗场景中,攻击者往往通过攻击域控获取特权管理权限进而横向控制企业内网,窃取重要资产和数据,凭借独特的管理优势,AD域被广泛应用于大型企业的IT基础设施的集中管理。 然而,传统的网络安全防御手段往往不足以抵御域渗透攻击身

    2024年02月15日
    浏览(46)
  • SDL—威胁建模PASTA

    已经在之前的篇章里学习了STRIDE,可以参考: SDL—设计 SDL—威胁建模STRIDE VerSprite Security公司在2012年提出的PASTA(Process for Attack Simulation and Threat Analysis)通过风险为中心的威胁建模方法,针对应用程序或系统环境识别可行的威胁模式。 以风险为中心,量化可能影响业务或系

    2024年02月01日
    浏览(53)
  • 微软威胁建模工具 STRIDE

    what are we woking on  what can go wrong what are we going to do about this did we do a good enough job 说到threat modeling 不得不提的就是微软的STRIDE 微软也提供了工具来做这个工作 Microsoft Threat Modeling Tool overview - Azure | Microsoft Learn 工具提供模板来建模,分析威胁,算是简单易上手的。 画出产品服务

    2024年02月07日
    浏览(35)
  • SDL—威胁建模STRIDE

    专门拎出来一片来学习威胁建模的详细内容,主要是关注不同的威胁建模方法以及威胁建模实际落地的情况。这里特指的软件安全流程。本篇只针对STRIDE以及它的一个补充进行描述。 威胁建模指的是通过分析和思考,识别目标可能出现的漏洞和风险,实际上威胁建模的目的就

    2024年02月09日
    浏览(57)
  • ToBeWritten之固件威胁建模

    也许每个人出生的时候都以为这世界都是为他一个人而存在的,当他发现自己错的时候,他便开始长大 少走了弯路,也就错过了风景,无论如何,感谢经历 转移发布平台通知:将不再在CSDN博客发布新文章,敬请移步知识星球 感谢大家一直以来对我CSDN博客的关注和支持,但

    2023年04月19日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包