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

目录

背景

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.mzph.cn/news/22331.shtml

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

相关文章

构建高效读写分离MySQL主从复制架构,应对高可用挑战!

前言 在现代数据库架构中,MySQL主从复制技术扮演着重要角色。它不仅可以提升数据库性能和可扩展性,还赋予系统卓越的高可用性和灾难恢复能力。本文将深入剖析MySQL主从复制的内部机制,同时通过一个实际案例,展示其在实际场景中的…

selenium 截屏

当前环境: Windows 10 Python 3.7 selenium 3.141.0 Google Chrome 115.0.5790.110 (64 位) from selenium import webdriver import base64if __name__ __main__:#driver webdriver.Chrome()driver.get(https://www.baidu.com/)# 1.…

torch.multiprocessing

文章目录 张量共享torch.multiprocessing.spawnmultiprocessing.Pool与torch.multiprocessing.Pool阻塞非阻塞map阻塞非阻塞 starmap torch.multiprocessing是具有额外功能的multiprocessing,其 API 与multiprocessing完全兼容,因此我们可以将其用作直接…

简单游戏截图_可控截取内容2

一个需求 我需要在场景中截取不同层级的截图(如只截模型或只截UI或只截外部相加看到的画面 或全都截或和Shader配合呈现人眼夜视仪热成像的画面切换) 将截图排到列表中,在场景UI中展示出来 如何做 相机要能够看到不同的画面 将当前帧画面存储下来 将存储的画面展示出…

【数字IC基础】时序违例的修复

时序违例的修复 建立时间违例保持时间违例Buffer 插入位置参考资料 建立时间违例 基本思路是减少数据线的延时、减少 Launch clock line 的延时、增加capture clock line的delay 加强约束,重新进行综合,对违规的路径进行进一步的优化,但是一…

【C++】万能引用、完美转发

万能引用 万能引用的格式如下&#xff1a; template<typename T> void PerfectForward(T&& t) {Fun(t); }虽然写的是&&和右值引用类似&#xff0c;但是它可以接收左值引用和右值引用 当传过来的是左值&#xff0c;那么T&&会折叠为T&。 引用折…

【2023年电赛国一必备】E题报告模板--可直接使用

任务 图1 任务内容 要求 图2 基本要求内容 图3 发挥部分内容 说明 图4 说明内容 评分标准 图5 评分内容 正文 &#xff08;部分&#xff09; 摘要 本文使用K210芯片设计了一个运动目标控制与自动追踪系统。系统包括使用深度学习进行识别激光位置&#xff0c;其中红色激…

Oracle表段中的高水位线HWM

在Oracle数据的存储中&#xff0c;可以把存储空间想象为一个水库&#xff0c;数据想象为水库中的水。水库中的水的位置有一条线叫做水位线&#xff0c;在Oracle中&#xff0c;这条线被称为高水位线&#xff08;High-warter mark, HWM&#xff09;。在数据库表刚建立的时候&…

Emacs之将.el编译成bin(一百二十五)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…

Mac 卸载 IntelliJ IDEA 方法

Mac 系统下 IDEA 没有一键卸载程序&#xff0c;也没有完全卸载的插件&#xff0c;若要彻底删除&#xff0c;除了在应用&#xff08;Application&#xff09;里删除 IDEA 到垃圾桶外&#xff0c;还需要在终端&#xff08;Terminal&#xff09;执行删除相应的文件及文件夹。 1 分…

vscode如何退出/切换 github 账号

退出/切换 github 账号 左下角点击头像按钮&#xff0c;选择注销&#xff0c;然后再重新登录

if条件语句

if语句是一种在编程中常用的条件控制语句&#xff0c;用于根据条件来执行不同的代码块。下面是if语句的使用及用法&#xff1a; 基本语法&#xff1a; if 条件: 执行代码块 如果条件为真&#xff0c;则执行代码块&#xff0c;否则跳过。 可选的else语句&#xff1a; if 条件…

JS进阶-Day3

&#x1f954;&#xff1a;永远做自己的聚光灯 JS进阶-Day1——点击此处&#xff08;作用域、函数、解构赋值等&#xff09; JS进阶-Day2——点击此处&#xff08;深入对象之构造函数、实例成员、静态成员等&#xff1b;内置构造函数之引用类型、包装类型等&#xff09; 更多JS…

boost beast http server 测试

boost beast http client boost http server boost beast 是一个非常好用的库&#xff0c;带上boost的协程&#xff0c;好很多东西是比较好用的&#xff0c;以下程序使用四个线程开启协程处理进入http协议处理。协议支持http get 和 http post #include <boost/beast/cor…

Java与Kotline Funcation函数与参数函数的详解

一.介绍 在现在以IDE为开发工具的时代&#xff0c;各种开发语言都有&#xff0c;kotlin的语法势头比较强&#xff0c;今天我们将介绍在项目中出现比较多的两种函数&#xff0c;一种是参数函数&#xff0c;还有一种就是Function函数 如果你不了匿名函数请阅读以下文档&#xff…

ISC 2023︱诚邀您参与赛宁“安全验证评估”论坛

​​8月9日-10日&#xff0c;第十一届互联网安全大会&#xff08;简称ISC 2023&#xff09;将在北京国家会议中心举办。本次大会以“安全即服务&#xff0c;开启人工智能时代数字安全新范式”为主题&#xff0c;打造全球首场AI数字安全峰会&#xff0c;赋予安全即服务新时代内涵…

【华为OD机试】数字最低位排序【2023 B卷|100分】

【华为OD机试】-真题 !!点这里!! 【华为OD机试】真题考点分类 !!点这里 !! 题目描述 给定一个非空数组(列表) 起元素数据类型为整型 请按照数组元素十进制最低位从小到大进行排序 十进制最低位相同的元素,相对位置保持不变 当数组元素为负值时,十进制最低为等同于去除符号…

常见的设计模式(超详细)

文章目录 单例模式饿汉式单例模式懒汉式单例模式双重检索单例模式 工厂模式简单工厂模式工厂&#xff08;方法&#xff09;模式抽象工厂模式 原型模式代理模式 单例模式 确保一个类只有一个实例&#xff0c;并且自行实例化并向整个系统提供这个实例。 饿汉式单例模式 饿汉式单…

【Vue】全家桶介绍

文章目录 概述核心Vue.Js浏览器开发插件vue-devtools项目构建工具&#xff1a;vue-cli路由管理器 &#xff1a; vue-Router状态管理模式&#xff1a;vuex网络请求库&#xff1a;AxiosUI框架&#xff1a; iview、vant、elementUI打包工具&#xff1a; webpack来源 概述 Vue全家…

编程导航算法村第七关 |二叉树的遍历

编程导航算法村第七关 | 二叉树的遍历 前序遍历&#xff08;递归&#xff09; public List<Integer> preorderTraversal(TreeNode root) {ArrayList<Integer> result new ArrayList<Integer>();preorder(root, result);return result;}public void preorde…