做好安全测试的方法

article/2025/9/8 1:21:39

目录

摘要:

一.安全性测试

二.常见的软件安全性缺陷和漏洞

三.做好安全性测试的建议

总结


摘要:

今天主要跟大家讲一下什么是安全测试和怎么做好安全测试的几种方法。还有安全测试的优缺点及过程,最后会给大家几条建议,希望对大家有用。

一.安全性测试

1、安全性测试方法

测试手段可以进行安全性测试,目前主要安全测试方法有:
  

1)静态的代码安全测试

主要通过对源代码进行安全扫描,根据程序中数据流、控制流、语义等信息与其特有软件安全规则库进行匹对,从中找出代码中潜在的安全漏洞。

静态的源代码安全测试是非常有用的方法,它可以在编码阶段找出所有可能存在安全风险的代码,这样开发人员可以在早期解决潜在的安全问题。而正因为如此,静态代码测试比较适用于早期的代码开发阶段,而不是测试阶段。
  

2)动态的渗透测试

渗透测试也是常用的安全测试方法。是使用自动化工具或者人工的方法模拟黑客的输入,对应用系统进行攻击性测试,从中找出运行时刻所存在的安全漏洞。

这种测试的特点就是真实有效,一般找出来的问题都是正确的,也是较为严重的。但渗透测试一个致命的缺点是模拟的测试数据只能到达有限的测试点,覆盖率很低。
  

3)程序数据扫描

一个有高安全性需求的软件,在运行过程中数据是不能遭到破坏的,否则就会导致缓冲区溢出类型的攻击。数据扫描的手段通常是进行内存测试,内存测试可以发现许多诸如缓冲区溢出之类的漏洞,而这类漏洞使用除此之外的测试手段都难以发现。

例如,对软件运行时的内存信息进行扫描,看是否存在一些导致隐患的信息,当然这需要专门的工具来进行验证,手工做是比较困难的。

             
  

2、反向安全性测试过程
  

大部分软件的安全测试都是依据缺陷空间反向设计原则来进行的,即事先检查哪些地方可能存在安全隐患,然后针对这些可能的隐患进行测试。

因此,反向测试过程是从缺陷空间出发,建立缺陷威胁模型,通过威胁模型来寻找入侵点,对入侵点进行已知漏洞的扫描测试。好处是可以对已知的缺陷进行分析,避免软件里存在已知类型的缺陷,但是对未知的攻击手段和方法通常会无能为力。
  

1)建立缺陷威胁模型

建立缺陷威胁模型主要是从已知的安全漏洞入手,检查软件中是否存在已知的漏洞。建立威胁模型时,需要先确定软件牵涉到哪些专业领域,再根据各个专业领域所遇到的攻击手段来进行建模。
  

2)寻找和扫描入侵点

检查威胁模型里的哪些缺陷可能在本软件中发生,再将可能发生的威胁纳入入侵点矩阵进行管理。如果有成熟的漏洞扫描工具,那么直接使用漏洞扫描工具进行扫描,然后将发现的可疑问题纳入入侵点矩阵进行管理。
 

3)入侵矩阵的验证测试

创建好入侵矩阵后,就可以针对入侵矩阵的具体条目设计对应的测试用例,然后进行测试验证。
  

3、正向安全性测试过程
  

为了规避反向设计原则所带来的测试不完备性,需要一种正向的测试方法来对软件进行比较完备的测试,使测试过的软件能够预防未知的攻击手段和方法。
  

1)先标识测试空间

对测试空间的所有的可变数据进行标识,由于进行安全性测试的代价高昂,其中要重点对外部输入层进行标识。

例如,需求分析、概要设计、详细设计、编码这几个阶段都要对测试空间进行标识,并建立测试空间跟踪矩阵。
  

2)精确定义设计空间

重点审查需求中对设计空间是否有明确定义,和需求牵涉到的数据是否都标识出了它的合法取值范围。

在这个步骤中,最需要注意的是精确二字,要严格按照安全性原则来对设计空间做精确的定义。
  

3)标识安全隐患

根据找出的测试空间和设计空间以及它们之间的转换规则,标识出哪些测试空间和哪些转换规则可能存在安全隐患。

例如,测试空间愈复杂,即测试空间划分越复杂或可变数据组合关系越多也越不安全。还有转换规则愈复杂,则出问题的可能性也愈大,这些都属于安全隐患。
  

4)建立和验证入侵矩阵

安全隐患标识完成后,就可以根据标识出来的安全隐患建立入侵矩阵。列出潜在安全隐患,标识出存在潜在安全隐患的可变数据,和标识出安全隐患的等级。其中对于那些安全隐患等级高的可变数据,必须进行详尽的测试用例设计。
  

4、正向和反向测试的区别
正向测试过程是以测试空间为依据寻找缺陷和漏洞.

反向测试过程则是以已知的缺陷空间为依据去寻找软件中是否会发生同样的缺陷和漏洞,两者各有其优缺点。

1)正向测试

过程的优点是测试比较充分,但工作量相对来说较大。因此,对安全性要求较低的软件,一般按反向测试过程来测试即可,对于安全性要求较高的软件,应以正向测试过程为主,反向测试过程为辅。

2)反向测试

过程主要的一个优点是成本较低,只要验证已知的可能发生的缺陷即可,但缺点是测试不完善,无法将测试空间覆盖完整,无法发现未知的攻击手段。

二.常见的软件安全性缺陷和漏洞

软件的安全有很多方面的内容,主要的安全问题是由软件本身的漏洞造成的,下面介绍常见的软件安全性缺陷和漏洞。
  

1、缓冲区溢出
  

缓冲区溢出已成为软件安全的头号公敌,许多实际中的安全问题都与它有关。造成缓冲区溢出问题通常有以下两种原因。

1)设计空间的转换规则的校验问题

即缺乏对可测数据的校验,导致非法数据没有在外部输入层被检查出来并丢弃。非法数据进入接口层和实现层后,由于它超出了接口层和实现层的对应测试空间或设计空间的范围,从而引起溢出。

2)局部测试空间和设计空间不足

当合法数据进入后,由于程序实现层内对应的测试空间或设计空间不足,导致程序处理时出现溢出。
  

2、加密弱点
  

这几种加密弱点是不安全的:

1)使用不安全的加密算法。加密算法强度不够,一些加密算法甚至可以用穷举法破解。

2)加密数据时密码是由伪随机算法产生的,而产生伪随机数的方法存在缺陷,使密码很容易被破解。

3)身份验证算法存在缺陷。

4)客户机和服务器时钟未同步,给攻击者足够的时间来破解密码或修改数据。

5)未对加密数据进行签名,导致攻击者可以篡改数据。所以,对于加密进行测试时,必须针对这些可能存在的加密弱点进行测试。
                         

3、错误处理
  

一般情况下,错误处理都会返回一些信息给用户,返回的出错信息可能会被恶意用户利用来进行攻击,恶意用户能够通过分析返回的错误信息知道下一步要如何做才能使攻击成功。

如果错误处理时调用了一些不该有的功能,那么错误处理的过程将被利用。错误处理属于异常空间内的处理问题,异常空间内的处理要尽量简单,使用这条原则来设计可以避免这个问题。

但错误处理往往牵涉到易用性方面的问题,如果错误处理的提示信息过于简单,用户可能会一头雾水,不知道下一步该怎么操作。所以,在考虑错误处理的安全性的同时,需要和易用性一起进行权衡。
  

4、权限过大
  如果赋予过大的权限,就可能导致只有普通用户权限的恶意用户利用过大的权限做出危害安全的操作。

例如:没有对能操作的内容做出限制,就可能导致用户可以访问超出规定范围的其他资源。进行安全性测试时必须测试应用程序是否使用了过大的权限,重点要分析在各种情况下应该有的权限,然后检查实际中是否超出了给定的权限。权限过大问题本质上属于设计空间过大问题,所以在设计时要控制好设计空间,避免设计空间过大造成权限过大的问题。

三.做好安全性测试的建议

许多软件安全测试经验告诉我们,做好软件安全性测试的必要条件是:


1、充分了解软件安全漏洞

  评估一个软件系统的安全程度,需要从设计、实现和部署三个环节同时着手。我们先看一下Common Criteria是如何评估软件系统安全的。

首先要确定软件产品对应的Protection Profile(PP)。一个PP定义了一类软件产品的安全特性模板。

例如:数据库的PP、防火墙的PP等。然后,根据PP再提出具体的安全功能需求,如用户的身份认证实现。最后,确定安全对象以及是如何满足对应的安全功能需求的。因此,一个安全软件的三个环节,哪个出问题都不行。
  

2、安全性测试的评估
  当做完安全性测试后,软件是否能够达到预期的安全程度呢?这是安全性测试人员最关心的问题,因此需要建立对测试后的安全性评估机制。一般从以下两个方面进行评估。

1)安全性缺陷数据评估
  如果发现软件的安全性缺陷和漏洞越多,可能遗留的缺陷也越多。进行这类评估时,必须建立基线数据作为参照,否则评估起来没有依据就无法得到正确的结论。

2)采用漏洞植入法来进行评估

漏洞植入法和可靠性测试里的故障插入测试是同一道理,只不过这里是在软件里插入一些有安全隐患的问题。采用漏洞植入法时,先让不参加安全测试的特定人员在软件中预先植入一定数量的漏洞,最后测试完后看有多少植入的漏洞被发现,以此来评估软件的安全性测试做得是否充分。
3)采用安全测试技术和工具

可使用专业的具有特定功能的安全扫描软件来寻找潜在的漏洞,将已经发生的缺陷纳入缺陷库,然后通过自动化测试方法来使用自动化缺陷库进行轰炸测试

例如,使用一些能够模拟各种攻击的软件来进行测试。
  

安全测试是用来验证集成在软件内的保护机制是否能够在实际中保护系统免受非法的侵入。一句通俗的话说:软件系统的安全当然必须能够经受住正面的攻击——但是它也必须能够经受住侧面的和背后的攻击。

    


http://chatgpt.dhexx.cn/article/mtHosSRh.shtml

相关文章

AppScan 安全测试详解+实操

定义:AppScan是IBM的一款web安全扫描工具,主要适用于Windows系统。该软件内置强大的扫描引擎,可以测试和评估Web服务和应用程序的风险检查,根据网站入口自动对网页链接进行安全扫描,扫描之后会提供扫描报告和修复建议等…

Android安全测试

目录 1、客户端APP安全 2、服务端安全 3、通信安全(通信保密性) 1、客户端APP安全 (1)反编译-APP加密或者代码混淆或者加壳处理 (2)防二次打包-验证APP签名-获取二次打包后APP的签名与正确的AP签名进行…

软件测试之安全测试

一、什么是安全测试? 安全测试是在IT软件产品的生命周期中,特别是产品开发基本完成到发布阶段,对产品进行检验以验证产品符合安全需求定义和产品质量标准的过程 。 二、安全测试的目的? 1、提升IT产品的安全质量; 2、尽…

软件安全测试

安全测试 文章目录 安全测试安全测试类型安全性测试工具分类 安全测试 安全测试一般围绕被保护的资产,通过代码和程序的分析来确定威胁或漏洞的严重程度,以及被利用的可能性和影响,来评估特定威胁或漏洞对企业造成负面影响的风险。除了综合的…

安全测试入门介绍

目录 1、安全测试定义 2、安全测试目的 3、安全测试与常规测试区别 4、安全测试类型 5、安全测试工具 1、安全测试定义 安全测试是建立在功能测试基础上进行的测试,安全测试提供证据表明,在面对恶意攻击时,应用仍能充分满足它的需求&…

什么是安全测试

一、安全测试概述 1.1.定义 安全测试是在软件产品开发基本完成时,验证产品是否符合安全需求定义和产品质量标准的过程 1.2.概念 安全测试是检查系统对非法侵入渗透的防范能力 1.3.准则 理论上来讲,只要有足够的时间和资源,没有无法进入的系…

如何从0到1做一次完整的安全测试

大家好,我是馨馨,一个混过大厂,待过创业公司,有着6年工作经验的软件测试妹纸一枚。近期针对公司项目做了一次完整的安全测试,扫描出来了不少漏洞,价值还挺大的。回顾整个流程,并没有特别复杂的点…

机器学习之向量空间的基本概念

向量空间:如果在一个空间中,任取若干个向量进行相加或数乘,其计算结果仍然在该空间中,则称这个空间为向量空间。换句话说,向量空间对于相加和数乘运算是封闭的(closed)。 当然,基于向量的广义定义&#xff…

什么是向量空间

向量 AB(AB上面有→)的大小(或长度)叫做向量的模,记作|AB|(AB上有→)或|a|(a上有→)。 向量空间又称线性空间,是线性代数的中心内容和基本概念之一。在解析几何里引入向量概念后,使许多问题的处…

向量空间中的:线性相关与线性无关

生成空间:以二维空间为例,给定两个非零向量。 其中两个非零向量系数a,b任意取值组合,就可以得到整个二维空间,除非两向量共线。 一个向量固定,另一个向量自由变化,其线性组合可得到一条直线。 …

关于向量空间和线性空间的认识

Reason 这两天学习张贤达的《矩阵分析和应用》,1.3.2节对向量空间的定义扩展,然后突然扩展到线性空间让我很不适应,并不能理解二者的关系。上网一查更迷惑了,很多的线性代数教材倾向于将二者等价,大家对向量空间和线性…

线性代数学习之向量空间,维度,和四大子空间

空间: 在上一次https://www.cnblogs.com/webor2006/p/14306046.html学习了诸多在线性代数中非常核心的概念(线性组合、线性相关、线性无关、生成空间,空间的基...),这次则继续学习重要的核心概念(空间、维度、四大子空间)。在之前的学习中用到…

大数据入门10:向量空间模型(Vector Space Model)

文章目录 向量空间模型(Vector Space Model)0. 概述1. TF(Term frequency ,TF)2. IDF(Inverse document frequency,IDF)3. TF-IDF(Term Frequency-Inverse Document Frequency)4. Similarity Function 相似性函数5. 举…

05转置和向量空间

进入了向量空间才算开始了线性代数的大门。几个重要的概念: 列空间包含所有列向量的线性组合,记作 C ( A ) C(A) C(A);当且仅当 b b b在 A A A的列空间时, A X b AXb AXb才有解; 一个 m n m\times n mn的系数矩阵 …

向量空间模型算法(Vector Space Model)

概念介绍 向量空间模型(VSM:Vector Space Model)由Salton等人于20世纪70年代提出,并成功地应用于文本检索系统。 VSM概念简单,把对文本内容的处理简化为向量空间中的向量运算,并且它以空间上的相似度表达语…

向量空间搜索引擎理论

简述 向量空间搜索引擎使用了一个非常简单的计数对于矩阵代数去比较基于词频的文档。 向量空间搜索引擎的第一个主要组成部分是概念术语空间。简单地说,术语空间由每个唯一的单词组成出现在文档集合中。 向量空间搜索引擎的第二个主要组成部分是项目计数。项目计…

向量空间 vector space

向量空间表示为 R 1 , R 2 , R 3 , R 4 , . . . , R n \bf{R}^1, \bf{R}^2, \bf{R}^3, \bf{R}^4, ..., \bf{R}^n R1,R2,R3,R4,...,Rn 。 R n \bf{R}^n Rn 表示 n n n 维向量集合所组成的空间,称为二维向量空间。但是,并不是所有集合组成的空间都能称作…

向量空间的基

1 向量空间的基 1.1 回顾 继续往下之前,先总结下前面所学的。先是学习了向量,然后把同维数的向量放在集合中构成了向量组: 然后通过向量组得到张成空间,也就是关注的核心,向量空间: 1.2 定位 定义向量空间之后,我们就需要去研究它。就如研究宇宙空间,需要把每一颗恒…

线性代数-向量空间

线性代数-向量空间 向量空间向量空间张成空间等价向量组最大无关组向量组的秩 向量空间的基基与坐标向量空间的维度 点积(数量积)欧几里得空间长度角度新的运算点积的定义长度/角度与自然基点积的性质欧氏距离和余弦距离小结 向量空间 向量空间 向量空间的严格定义&#xff1…

向量空间、子空间、列空间

1.向量空间、子空间、列空间 1.1 向量空间 向量空间是由列空间组成的 诸如下面 v \boldsymbol{v} v 这样的类型的所有向量构成了空间 R n \boldsymbol{R}^n Rn,可以将空间看作一个集合,集合中的每个元素都是一个类似于 v \boldsymbol{v} v 的向量 …