06 软件安全测试

news/2025/2/6 16:09:19/文章来源:https://www.cnblogs.com/learnForLife/p/18701232

13. 软件安全性测试

黑客、病毒、蠕虫、间谍软件、后门程序、木马、拒绝服务攻击等。

安全产品:指在系统的所有者或者管理员的控制下,保护用户信息的保密性、完整性、可获得性,以及处理资源的完整性和可获得性。

安全漏洞:产品不可行的缺陷,正确使用产品时来防止攻击者窃取系统的用户权限、调节操作、破坏数据、或建立未授权的信任。

13.3 威胁模式分析

找出产品可能会引起安全漏洞的地方

构建威胁模型分析小组:隔离安全威胁,设计解决方案。

确认价值:计算损失。

创建一个体系结构总体图:了解技术模块之间如何通讯。

记录威胁:每个威胁都必须用文档记录,并且应进行跟踪以确保其解决。

威胁等级评定:DREAD 公式

损害度(Damage Potential):指黑客或攻击者在成功利用漏洞后可能对系统、数据或用户造成的潜在损害程度。这包括数据泄露、服务中断、信息篡改等。

可重现性(Reproducibility):指攻击是否容易被复现,以及是否可以在多个环境或条件下进行复现。如果攻击容易被复现,那么它的威胁级别更高。

可利用性(Exploitability):指利用漏洞进行攻击的难易程度。如果漏洞易于被利用,那么应用程序的安全风险也就更高。

受影响的用户数(Affected Users):指受到潜在攻击的用户数量。如果攻击影响的用户数量较大,则安全风险相应增加。

发现时间(Discoverability):指攻击者发现漏洞并能够利用它的时间。如果漏洞很容易被攻击者发现,那么应用程序的安全性也就更低。

13.4 软件测试是一项功能还是缺陷

并不是非黑即白,主动添加是功能,主动测试是缺陷。

13.5 缓冲区溢出

使用没有正确声明和初始化的变量、常数、数组、字符串或记录引起的缺陷,缓冲区溢出就是这种缺陷。比如:声明字符串的大小,但实际存储大于声明,会导致多余字符溢出覆盖。

13.6 使用安全的字符串函数

每个函数接收目标缓冲的长度作为输入。

函数空字符中止所有的输入字符串,即使操作截断了预计的结果。

所有函数返回一个 NTSTATUS 值,该值只有一个可能成功的代码。

每个都提供版本,比如字符类型。

13.7 计算机取证

文件写入磁盘保存分区如下

以下是对上述软件安全性测试相关内容的一些补充说明和解释:

13.3威胁模式分析

  • 构建威胁模型分析小组:小组通常应由具备不同专业知识的人员组成,包括安全专家、软件开发人员、系统管理员等。他们需要从不同角度审视产品,比如安全专家能从攻击手法和漏洞利用的角度出发,软件开发人员能深入了解软件内部架构和可能存在的风险点,系统管理员则能从实际运行和管理的角度提供见解,共同隔离安全威胁并设计出全面的解决方案。
  • 确认价值 计算损失:要对系统中的各种资产进行评估,确定其价值,例如用户数据、业务流程、品牌声誉等。然后分析一旦这些资产受到安全威胁,可能带来的经济损失、业务影响、声誉损害等,以便更直观地了解安全漏洞可能造成的后果,为后续的应对策略提供依据。
  • 创建一个体系结构总体图:通过图形化的方式展示软件系统的各个技术模块,以及它们之间的通信方式、数据流向等。这有助于清晰地呈现系统的架构,便于发现潜在的安全薄弱环节,例如哪些模块之间的通信可能存在风险,哪些数据在传输过程中容易受到攻击等。
  • 记录威胁:对每个威胁都要详细记录其发现时间、威胁描述、可能影响的范围、当前状态等信息。通过跟踪这些记录,可以确保每个威胁都能得到及时处理,并且在处理后可以进行验证,确认威胁已被有效消除。
  • 威胁等级评定(DREAD公式)
    • 损害度(Damage Potential):损害程度可以从多个维度评估,如数据的敏感性和重要性,如果涉及到用户的金融信息、医疗记录等高度敏感数据,泄露后的损害度就极高;服务中断可能导致业务停顿,造成直接的经济损失和客户流失;信息篡改可能影响业务的正常运营和决策的准确性。
    • 可重现性(Reproducibility):可重现性高的攻击意味着攻击者可以较为容易地反复利用该漏洞进行破坏,例如某个漏洞在特定的系统环境和操作步骤下总是能被触发,那么它的威胁性就更大,相比之下,那些只能在非常特殊、罕见的情况下才会出现的漏洞,可重现性低,威胁相对较小。
    • 可利用性(Exploitability):如果漏洞利用不需要复杂的技术和工具,或者利用条件在常见的环境中容易满足,那么可利用性就高。例如,一个不需要用户特殊权限就能触发的漏洞,比需要管理员权限才能利用的漏洞更容易被攻击者利用,安全风险也就更高。
    • 受影响的用户数(Affected Users):对于面向大量用户的软件,如社交媒体平台、在线支付系统等,一旦出现安全漏洞,受影响的用户数量可能非常庞大,会引发严重的安全事件;而一些仅供内部使用、用户数量有限的软件,在相同漏洞情况下,受影响的范围相对较小,但也不能忽视其安全风险。
    • 发现时间(Discoverability):如果软件的漏洞具有明显的特征或者存在于容易被攻击者探测到的位置,那么发现时间就可能较短,威胁等级相应提高。例如,一些暴露在互联网上的未经过充分安全配置的接口,很容易被攻击者发现和利用,相比之下,隐藏较深、需要特定知识和技术才能发现的漏洞,发现时间可能较长,威胁相对较低。

13.5缓冲区溢出

  • 缓冲区溢出是一种常见且危险的安全漏洞。除了声明字符串大小不当导致的问题外,在使用数组时,如果对数组的访问超出了其定义的边界,也会发生缓冲区溢出。例如,在C语言中,如果程序员没有正确检查数组索引的范围,当访问一个超出数组大小的元素时,就可能会覆盖相邻的内存区域,可能导致程序崩溃,或者更严重的是,被攻击者利用来执行恶意代码。
  • 一些不良的编程习惯也容易引发缓冲区溢出,比如在循环中没有正确控制循环次数,导致对缓冲区的写入超出了其实际大小;或者在使用一些库函数时,没有正确传递参数,使得函数对缓冲区的操作超出了预期范围。

13.6使用安全的字符串函数

  • 每个函数接收目标缓冲的长度作为输入:这样可以确保函数在操作字符串时,不会超出目标缓冲区的边界。例如,在C语言中,strncpy函数就接收目标缓冲区的长度作为参数,它会将源字符串复制到目标缓冲区中,最多复制指定的长度,从而避免了缓冲区溢出的风险。
  • 函数空字符中止所有的输入字符串,即使操作截断了预计的结果:这是为了确保字符串在存储和处理过程中的完整性和安全性。以C语言为例,字符串是以空字符\0作为结束标志的,安全的字符串函数会在复制或处理字符串时,自动在字符串末尾添加空字符,即使实际复制的内容因为缓冲区长度限制等原因被截断,也能保证字符串以正确的格式存储,避免后续操作出现错误。
  • 所有函数返回一个NTSTATUS值,该值只有一个可能成功的代码:通过返回特定的状态值,可以让程序员清楚地了解函数的执行情况。在Windows系统中,许多安全的字符串函数会返回NTSTATUS值,当返回值表示成功时,说明函数正确执行并完成了预期的操作;如果返回值表示失败,程序员可以根据具体的错误代码来判断问题所在,例如是否是缓冲区长度不足、参数错误等,从而采取相应的措施。
  • 每个都提供版本,比如字符类型:不同的字符类型可能需要不同的处理方式,提供不同版本的函数可以满足各种需求。例如,在C语言中,有针对窄字符(如char类型)的字符串函数,也有针对宽字符(如wchar_t类型)的字符串函数。根据实际使用的字符类型选择相应的函数版本,可以确保字符串的处理正确无误,提高软件的安全性和兼容性。

13.7计算机取证

遗憾的是内容未完整给出文件写入磁盘保存分区的具体信息,但一般来说,计算机取证中涉及文件写入磁盘保存分区时,需要关注文件系统的类型(如FAT32、NTFS等),不同的文件系统有不同的存储结构和特点。在NTFS文件系统中,文件的元数据(如文件名、创建时间、修改时间等)和数据内容会分别存储在不同的区域,取证人员需要了解这些结构,以便准确地获取和分析文件信息。同时,还需要注意磁盘的分区表,它记录了磁盘上各个分区的起始位置、大小等信息,对于确定文件所在的具体分区以及恢复丢失或损坏的分区非常重要。

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

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

相关文章

微服务引擎 MSE 及云原生 API 网关 2024 年 12 月产品动态

微服务引擎 MSE 及云原生 API 网关 2024 年 12 月产品动态

Redis缓冲区分析

Redis缓冲区分析 1 Redis缓冲区简介 缓冲区,用一块内存空间暂时存放命令数据,目的是解决因数据和命令的处理速度小于发送速度而导致数据丢失和性能问题。缓冲区的内存空间有限,当写数据速度>读数据速度持续进行,会导致缓冲区容量需越来越大。当缓冲区占用内存>设定上限阈…

微服务开发环境搭建

1. 配置maven,使用阿里镜像库 2.idea下载常用的插件,lomok插件和mybatis插件 3.新建工程,微服务分布式工程 4.前端开发工具安装vs code 5.配置git代码仓库管理 本文永久更新地址:1. 配置maven,使用阿里镜像库 找到maven下载安装目录,找到conf配置文件,修改setting.xml配置…

SpringBoot的idea搭建使用过程(一)

1,在idea中新建一个SpringBoot项目 2,搭建项目框架 3,修改application配置文件后缀改成yml,添加配置文件,yml需要注意格式 4,在控制器层添加一个测试接口 5,启动Demo1Application类启动成功后就可以访问http://localhost:8080/看到在templates里面添加的index.html 本文永…

虚机运行pgjdbc-ng 客户端驱动创建数据库连接报超时错误

// debug 调试代码发现 CryptoUtil.nonce卡住,继续跟踪发现是random.nextInt方法阻塞。 public ScramSession start(String user) {String nonce = CryptoUtil.nonce(nonceLength, secureRandom); // return new ScramSession(scramMechanism,channelBindMethod, serverSuppo…

政采云业务网关实践:使用 Higress 统一替代 APISIX/Kong/Istio Ingress

技术栈统一是逐步达成的目标,不过从目前需要解决的问题紧急度上看,容器网关、业务网关需要合并,以一个技术栈解决网关配置治理、扩展能力的问题。经过社区活跃度、能力对比等多个维度的比较,最终筛选出 APISIX、Higress、Istio(IngressGateway)这三个网关服务。作者:政采…

03 配置测试、兼容测试

8.配置测试 8.1配置测试综述 1)个人计算机 2)部件 3)外设 4)接口 5)可选项和内存 6)设备驱动程序 8.1.1分离配置缺陷 软件缺陷和配置缺陷有可能造成软件出现问题。 8.2执行配置测试 1)确定所需配置类型 2)确定有哪些厂商的硬件、型号、和驱动程序可用 3)确定可能的硬件…

ThreeJs-13效果合成与后期处理

一.合成效果原理与设置 什么是效果合成,就是可以把一些效果经过后期处理再放出来 原来的物体是直接通过render渲染出来,而现在则是经过一条render通道,可以处理也可以叠加处理后再放出来首先正常加载模型首先导入效果合成器以及一些自带的效果创建合成效果渲染器,跟之前渲染…

解决Windows11可能出现的自动获取到错误的DNS地址问题

现象 当一个wifi再射中中配置了手动的DNS地址,如114.114.114.114/114.114.115.115,连接其他新wifi的时候,虽然默认自动获取DNS,但是获取的却不是路由配发的DNS,而是之前设置的114.114.114.114/114.114.115.115 解决方案 1、首先打开旧ui的网卡的设置,确定处于自动dns。2、…

docker在mac-m1芯片部署并启用tomcat

手把手教你使用docker在mac-m1芯片部署并启用tomcat 1,下载docker并安装 登陆官网下载dockr,选择mi芯片的docker下载 下载地址:https://www.docker.com/get-started 2,配置docker的阿里云加速器(也可以配置其他加速器) 在设置---docker engine 中添加阿里云的加速器 {&quo…

JS-51 事件代理(事件委托)

由于事件会在冒泡阶段向上传播到父节点,因此可以把子节点的监听函数定义在父结点上,由父节点的监听函数统一处理多个子元素的事件。这种方法叫做事件的代理(delegation)var ul =document.querySelector(ul);ul.addEventListenr(click,function(event){if(event.target.tagN…

docker搭建jenkins导入python包

title: docker搭建jenkins导入python包 tags: - docker - centos - jenkins categories: - docker1. 项目概述 2. 环境准备 3. 创建 Dockerfile 4. 创建 Docker Compose YAML 文件 services volumes5. 同级目录放requirements.txt 6. 启动 Jenkins 服务 7. 访问 Jenkins 8. 验…