【安全测试】安全测试威胁建模设计方法STRIDE

news2024/12/26 1:04:51

目录

背景

TM(ThreatModeling)

实践

具体流程

资料获取方法


背景

目前安全测试一般都存在如下问题:

  • 安全测试人员不懂业务,业务测试人员不懂安全,安全测试设计出现遗漏是无法避免的
  • 安全测试点繁多复杂,单点分析会导致风险暴露,不安全

目前的状态:

  • TR2阶段测试人员根据开发人员提供的story威胁分析设计文档,检查已有的削减措施是否正常实现
  • 检查建议的削减措施是否合理,待版本转测试后对削减措施进行多角度测试,确保削减措施被正确实施并真正削减产品分析出的威胁。

基于以上两点需要一套完整的,连贯的方法指导安全及业务特性的安全测试设计,TM(ThreatModeling,威胁建模)安全测试设计方法应运而生。

TM(ThreatModeling)

威胁建模的本质:尽管通常我们无法证明给定的设计是安全的,但我们可以从自己的错误中汲取教训并避免犯同样的错误。

TM主要的理论、实践来源是微软的STRIDE威胁建模方法论,它从6个维度来考察系统设计时存在的来自外部威胁的风险点。

首先需要知道什么样的设计是“安全的”,安全设计原则:

设计安全原则
开放设计假设攻击者具有源代码和规格。
故障安全预设值出故障时自动关闭,无单点故障。
最低权限只分配所需的权限。
机制经济性保持简单、易懂的特性。
分离权限不允许根据单一条件执行操作。
总体调节每次检查所有内容。
最低公用机制注意保护共享资源。
心理可接受性他们将使用它吗?

更进一步,设计完的系统应具有哪些安全相关的属性?

安全属性详细
机密性数据只应限具有权限的人员访问。
完整性数据和系统资源只限适当的人员以适当的方式进行更改。
可用性系统在需要时一切就绪,可以正常操作。
身份验证建立用户身份(或者接受匿名用户)。
授权明确允许或拒绝用户访问资源。
认可用户无法在执行某操作后否认执行了此操作。

STRIDE是这6个维度的单词的首字母的缩写;这6个维度分别为:

  • Spoofing(假冒)
  • Tampering(篡改)
  • Repudiation(否认)
  • Information Disclosure(信息泄漏)
  • Denial of Service(拒绝服务)
  • Elevation of Privilege(权限提升)。

下图对这六项信息各自进行了距离:

属性威胁定义例子
认证Spoofing(假冒)冒充某人或某物假冒billg、microsoft.com或ntdll.dll
完整性Tampering(篡改)修改数据和代码修改一个DLL,或一个局域网的封包
不可抵赖性Repudiation(否认)宣称未做过某个行为“我没有发送email” “我没有修改文件” “我肯定没有访问那个网站”
机密性Information Disclosure(信息泄露)暴露信息给未经授权的访问者允许某人阅读Windows源代码;将客户列表发布在网站上
可用性Denial of Service(拒绝服务)使对服务对用户拒绝访问或降级发送数据包使目标系统CPU满负荷或发送恶意代码使目标服务崩溃
授权Elevation of Privlege(权限提升)未经授权获取权限远程用户执行任意代码,普通用户可以执行管理员私有的系统指令

实践

很多安全从业者所接受的安全认知往往是进入一家企业后,拿到一份名为应用开发安全标准的文档,里面描述了访问控制、输入验证、编码过滤、认证鉴权、加密、日志等各种要求,久而久之就变成了一种惯性思维,实际上之所以要这么做是因为在系统设计的某个环节存在STRIDE中的一种或几种风险,所以在那个设计关注点上要加入对应的安全措施,并不是在所有的地方都要套用全部的或千篇一律的安全措施。否则就会变成另外一种结果:“过度的安全设计”。

威胁建模的成果跟工作者自身的知识也有很大的关系,有攻防经验的人比较容易判断威胁的来源和利用场景,如果缺少这方面的认知,可能会发现到处是风险,有些风险的利用场景很少或利用条件非常苛刻,如果一味地强调风险削减措施也会变成有点纸上谈兵的味道,虽然从安全的角度没有错,但从产品交付的整体视角看,安全还是做过头了。

具体流程

STIRDE如何使用?首先我们需要画出数据流关系图(DFD),以图形的方式表示系统。数据流关系图由数据流、数据存储、进程和交互方四个元素标准符号组成。

  • 数据流表示通过网络连接、命名管道、消息队列、RPC 通道等移动的数据。
  • 数据存储表示文本、文件、关系型数据库、非结构化数据等。
  • 进程指的是计算机运行的计算或程序。

然后我们根据实际情况另外增加了一个元素,即信任边界。

添加信任边界后,对每一个节点元素和过程进行分析判断是否存在上述6种威胁,并制定对应的风险缓解措施。

总体上看,STRIDE是一个不错的参考视角,即便有丰富攻防经验的人也不能保证自己在面对复杂系统的安全设计时考虑是全面的,而STRIDE则有助于风险识别的覆盖面。


资料获取方法

【留言777】

各位想获取源码等教程资料的朋友请点赞 + 评论 + 收藏,三连!

三连之后我会在评论区挨个私信发给你们~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/836592.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

商城-学习整理-基础-商品服务API-品牌管理(六)

目录 一、使用逆向工程生成前后端代码1、新增品牌管理菜单2、使用生成的前端代码 二、优化逆向生成的品牌管理页面1、显示状态开关优化2、品牌上传优化(使用阿里云存储)1)阿里云对象存储-普通上传方式2)阿里云对象存储-服务端签名…

paddlenlp:社交网络中多模态虚假媒体内容核查(代码篇)

初赛之baseline解读篇 一、模型框架图1、框架解读2、评价指标解读 二、代码功能1、数据集加载2、模型定义3、模型训练4、模型预测 三、写在最后 一、模型框架图 1、框架解读 第一列是输入,一部分是文本(需核查文本、文本证据材料)&#xff…

ExtJs 7.7.0 下载方法与去除trial水印

背景 最近发现Sencha ExtJs发布了ExtJs7.7.0版本,立刻下载了SDK包,许多朋友不知如何下载,如何去除右上角的trial水印。本文讲下相关下载技巧与方法。 下载SDK 首先需要申请试用,申请地址如下,需要注意可能需要梯子&…

好烦!快让ChatGPT停止道歉!SD创作宣传图的超细教程;教你在PH冷启动薅流量;CSDN举办AI应用创新大赛 | ShowMeAI日报

👀日报&周刊合集 | 🎡生产力工具与行业应用大全 | 🧡 点赞关注评论拜托啦! 🤖 Stable Diffusion 图生图入门,一份详细的思维导图 🤖 DeeCamp X CSDN 举办AI应用创新大赛,万元奖金…

【C++】继承的基本特性(定义,赋值转换,友元,静态成员,虚拟继承,默认成员函数,作用域)

文章目录 一、继承的定义1.定义格式2.继承基类成员访问方式的变化 二、基类和派生类对象赋值转换三、继承的作用域1. 在继承体系中基类和派生类都有独立的作用域。2.子类和父类中有同名成员3.成员函数的隐藏4.注意在实际中在继承体系里面最好不要定义同名的成员。 四、派生类的…

【C语言学习】整数类型表达数的范围

一、整数类型表达数的范围 1.char类型 char 是1个字节 ,即00000000 ~ 11111111,一般情况默认是有符号char(signed char) ,此时char所能表达的数就是 -128 ~ 127,即 -2 ^ n-1 ~ (2 ^ n-1)-1 ,其中n是位数或比特位(1字节8位8比特&…

OPENCV C++(四)形态学操作+连通域统计

形态学操作 先得到一个卷积核 Mat kernel getStructuringElement(MORPH_RECT,Size(5,5)); 第一个是形状 第二个是卷积核大小 依次为腐蚀 膨胀 开运算 闭运算 Mat erodemat,dilatemat,openmat,closemat;morphologyEx(result1, erodemat, MORPH_ERODE, kernel);morphologyEx…

万界星空科技/免费开源MES系统/免费仓库管理

仓库管理(仓储管理),指对仓库及仓库内部的物资进行收发、结存等有效控制和管理,确保仓储货物的完好无损,保证生产经营活动的正常进行,在此基础上对货物进行分类记录,通过报表分析展示仓库状态、…

道本科技受邀参加建筑产业互联网推动建筑产业现代化体系构建座谈会,以数字化产品为建筑行业注入新动能!

2023年7月底,道本科技作为中国建筑业协会合作伙伴,受邀参加了建筑产业互联网推动建筑产业现代化体系构建座谈会。在这次座谈会上,道本科技旗下产品“合规数”“合同智能审查”和“智合同范本库”被中国建筑(中小企业)产…

Leaflet.Control.Opacity 控制图层的透明度

最新有一个需求,能动态的控制Leaflet.js 地图图层的透明度,官网文档: https://leafletjs.com/reference.html#gridlayer-setopacity 一直有个setOpacity方法,我以为拿来就能使呢,其实不行。后来找到一个日本人开发的demo: 右侧Co…

部署SpringBoot项目在服务器上,并通过swagger登录

1.项目编译打包 2.上传jar包到服务器并启动 xftp将打包好后的jar包传到虚拟机指定路径 java -jar执行该jar包 3.通过swagger登录 输入后点击下面的执行按钮 会得到一个tocken 4.将tocken放到postman的Headers中 5.修改url 例如我本地测试是http://localhost:8080/接口名&am…

关于Java的未来探讨,看看国外开发者怎么说的

博主在浏览 medium 社区时,发现了一篇点赞量 1.5k 的文章,名称叫《Java is Dead — 5 Misconceptions of developers that still think Java is relevant today!》直译过来就是《Java 已死 — 开发人员对 Java 在现代编程语言中的5个误解》。这篇文章可以…

层叠上下文

一、层叠上下文 在CSS2.1规范中,每个盒模型的位置是三维的,分别是平面画布上的x轴,y轴以及表示层叠的z轴,层叠上下文即元素在某个层级上z轴方向的排列关系。假定用户正面向(浏览器)视窗或网页,…

合并pdf怎么合并?试试这几种方法

合并pdf怎么合并?合并PDF文件是处理PDF文件时最基本的需求之一。在日常工作和生活中,我们可能需要将多个PDF文件合并成一个文件,以方便管理、浏览和分享。下面就给大家介绍几种PDF合并的方法。 首先,让我们介绍一下【迅捷PDF转换器…

项目中引用svg图标,公共组件SvgIcon使用,注册全局组件,使用自定义插件注册全局组件

在开发项目的时候经常会用到svg矢量图,而且我们使用SVG以后,页面上加载的不再是图片资源, 这对页面性能来说是个很大的提升,而且我们SVG文件比img要小的很多,放在项目中几乎不占用资源。 1、安装依赖插件 pnpm install vite-plugin-svg-ic…

API是什么?

API是什么? API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制…

SAP BAPI BAPI_SALESDOCUMENT_COPY 直接实现VA01复制销售合同创建小搜订单

BAPI :BAPI_SALESDOCUMENT_COPY 输入参数 : 销售合同、订单类型 输出参数:生成的销售订单号 实现的操作:

自动分班软件:一分钟制作分班查询系统,这个工具轻松实现

作为一名老师,在即将到来的新学期,我们需要进行学生的分班工作,而分班查询系统可以帮助我们更加高效地完成这项工作。在这篇文章中,我将向大家介绍如何创建一个分班查询系统。 首先,我们需要确定分班查询系统的需求和…

java八股文补充

1、JAVA BIO、NIO、AIO的区别 BIO (Blocking I/O):同步阻塞I/O模式。当有其他线程进行数据读写时阻塞等待。当用户线程发出IO请求之后,内核会去查看数据是否就绪,如果没有就绪就会等待,用户线程就会处于阻…

Linux下多python版本共存

python下载官网 https://www.python.org/downloads/ python支持多版本共存,是大版本共存,小版本不共存。 python3.6 和 3.7 共存python3.6.6和python3.6.8 不共存 1.下载特定版本的python 进入官网后点击Downloads–>All releases点击‘Gzipped s…