目录
1. 写在前面
2. 什么是安全测试?
3. 安全测试和渗透测试的区别?
4. 何为安全漏洞?
4.1. 常见的漏洞类型
4.2. 漏洞等级
5. 安全漏洞的危害?
6. 如何发现或预防安全漏洞?
6.1 安全测试方法
6.2 安全测试内容
6.3 安全测试过程
7. 写在最后
1. 写在前面
关于安全的重要性以及安全意识到底有多重要,咱们从2021年互联网历史上破坏力最惊人漏洞之一Log4j漏洞讲起,漏洞波及面和危害程度堪比2017年的“永恒之蓝”漏洞。从爆发至今,Log4j漏洞影响的严重性、广泛性已经在各领域开始显现,并不断加大。简单点说,黑客可以恶意构造特殊数据请求包payload触发漏洞,从而可以在目标服务器上执行任意代码,导致服务器被黑客控制。
Apache Log4j 是一个基于Java的日志记录工具。它是由Ceki Gülcü首创的,现在已经发展为Apache软件基金会的项目之一。
本次漏洞是因为Log4j2组件中 lookup功能的实现类 JndiLookup
的设计缺陷导致,这个类存在于log4j-core-xxx.jar
中
log4j的Lookups功能可以快速打印包括运行应用容器的docker属性,环境变量,日志事件,Java应用程序环境信息等内容。比如我们打印Java运行时版本。
因为这里没有任何的白名单,那么我们就可以构造任何的字符串,只有符合${就可以,那么就很容易构造漏洞
咱们中国的阿里第一时间发现了改漏洞,但是第一时间报给了apache的软件基金会,并没有报给中国的软件工信部,这导致中国滞后于美国去处理这件事情,所以我们每个人都要有安全意识,更要明白出现安全问题如何处理和防范。
2. 什么是安全测试?
安全测试是指有关验证应用程序的安全等级和识别潜在安全性缺陷的过程
导致软件出现安全问题的主要原因或根源事软件的安全漏洞。
3. 安全测试和渗透测试的区别?
安全测试是从内到外的一种测试,是一种安全预防性测试,代码审查,架构分析,而渗透测试是从外到内的测试,它是一种试探的方法。
出发点差异:渗透测试是以成功入侵系统,证明系统存在安全问题为出发点;而安全测试则是以发现系统所有可能的安全隐患为出发点。
视角差异:渗透测试是以攻击者的角度来看待和思考问题,安全测试则是站在防护者角度思考问题,尽量发现所有可能被攻击者利用的安全隐患,并指导其进行修复。
覆盖性差异:渗透测试只选取几个点作为测试的目标,而安全测试是在分析系统架构并找出系统所有可能的攻击界面后进行的具有完备性的测试。
成本差异:安全测试需要对系统的功能、系统所采用的技术以及系统的架构等进行分析,所以较渗透测试需要投入更多的时间和人力。
解决方案差异:渗透测试无法提供有针对性的解决方案;而安全测试会站在开发者的角度分析问题的成因,提供更有效的解决方案。
4. 何为安全漏洞?
安全漏洞特指在硬件、软件、协议的在逻辑设计上或具体实现或系统安全策略上存在的缺陷或错误。
4.1. 常见的漏洞类型
1,客户端漏洞:
XSS(跨站脚本攻击)
CSRF(跨站请求伪造)
XXE(XML外部实体注入)
2,服务端漏洞:
SQL注入
文件上传漏洞
服务器请求伪造(SSRF)
反序列化
命令执行漏洞
文件包含漏洞
逻辑漏洞
越权漏洞
敏感信息泄露
4.2. 漏洞等级
- 紧急: 可以直接被利用的漏洞,且利用难度较低。被攻击之后可能对网站或服务器的正常运行造成严重影响,或对用户财产及个人信息造成重大损失
- 高危: 被利用之后,造成的影响较大,但直接利用难度较高的漏洞。或本身无法直接攻击,但能为进一步攻击造成极大便利的漏洞。
- 中危: 利用难度极高,或满足严格条件才能实现攻击的漏洞。或漏洞本身无法被直接攻击,但能为进一步攻击起较大帮助作用的漏洞。
- 低危: 无法直接实现攻击,但提供的信息可能让攻击者更容易找到其他安全漏洞。
- 信息: 本身对网站安全没有直接影响,提供的信息可能为攻击者提供少量帮助,或可用于其他手段的攻击,如社工等。
5. 安全漏洞的危害?
6. 如何发现或预防安全漏洞?
6.1 安全测试方法
6.2 安全测试内容
6.3 安全测试过程
7. 写在最后
安全隐患就像软件的其他缺陷一样是不可能杜绝的,只能尽可能防御,减少,下面是一下软件安全测试设计的基本原则
- 最小授权
只授予每个用户/程序在执行操作时所必须的最小特权。这样可以限制事故、错误、攻击带来的危害,减小特权程序之间潜在的相互影响。
- 发生故障优先保证安全
当系统发生故障时,对任何请求默认应加以拒绝。
- 深入防御原则
采用多层安全机制,这个概念范围比较大。比如在表单中的字段校验不光要在页面校验,还要在后台有相应的校验机制;比如在信任区、非信任区之间二次部署防火墙。文章来源:https://www.toymoban.com/news/detail-409561.html
- 权限分离
比如禁止root用户远程登录、多重身份校验登陆等。文章来源地址https://www.toymoban.com/news/detail-409561.html
- 系统架构设计和代码尽可能简洁,越复杂的系统,bug越多...
- 共享事务的数量和使用尽可能少,毕竟单独控制一个操作比并行控制两个过程更容易一些。
- 安全保护机制不能依赖于攻击者对系统实现过程的无知、而只依赖于像口令/密钥这样较容易改变的东西。
- 不信任原则,要严格限制用户、外部部件的信任度,要假设他们都是不安全的。
- 对受保护的对象的每一个访问都要经过检查。
- 心理接受程度,不能通过限制、甚至组织用户访问系统资源来阻止攻击,但可以考虑引入少量可接受的使用障碍。
- 不要等开发人员编码完成才开始进行安全测试,可以负责任的讲65%以上的安全漏洞都是发生在架构设计阶段,因此要积极参与到架构设计评审活动中,将一些低中级别的隐患扼杀在摇篮中。
到了这里,关于软件安全测试-软件安全测试概述的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!