必背 (名词解释/简答)书从后往前
一、软件安全测试
1、漏洞扫描与渗透测试区别
渗透测试是尽可能地模拟黑客的漏洞发现技术和攻击手段,对目标的安全做深入的探测,发现系统的漏洞。
漏洞扫描是基于漏洞数据库来检测目标系统,漏洞数据库包含检测安全问题的大量漏洞信息
两者的不同之处在于:
漏洞扫描只展示系统的缺陷,不会衡量这些缺陷给系统带来的影响。而渗透测试不仅发现漏洞,还要进一步利用漏洞以及维持对目标系统的控制权。
漏洞扫描仅仅以一种非侵略性地方式,定位和量化系统的所有漏洞。而渗透测试的侵略性强很多,使用多种技术手段去攻击真实生产环境。一般来说,渗透测试是一项更要智力和技术的技术活,也要花费更多资金。
2、渗透测试的核心思想
渗透测试的核心思想是模仿黑客的特定攻击行为。也就是尽可能完整地模拟黑客的发现漏洞技术和攻击手段,对目标的安全做深入探测,发现系统的最脆弱环节的过程。
3、污点分析
“污点”是指所有来自非可靠数据源的数据,如用户输入、网络等。基于数据流程图判断源代码中那些变量可能遭受攻击。是验证程序输入、识别代码表达缺陷的关键。
4、软件测试与软件安全测试的区别
软件测试是从最终用户的角度出发发现缺陷并修复,保证系统最终满足用户要求。软件安全测试是从攻击者角度出发去发现漏洞并修复,保证该软件不被恶意攻击者所破坏。
软件测试用例是根据功能需求和其他特定文档等设计的,软件安全测试用例是根据安全需求、攻击模式归纳和已公开漏洞等从攻击者的角度设计的。
5、软件功能测试有哪些
保密性,完整性,可用性,可认证性,授权,可审计
6、软件安全测试的目标
验证软件系统的功能是否满足安全需求;发现系统安全漏洞,并把漏洞的数量降到最少;评估软件其他的安全属性,包括可靠性、可存活性等。
二、软件安全编码
1、数据净化
输入数据净化:剥离,替代,文本化
输出数据净化:HTML实体编码,URL编码
2、清洁发送给其他系统的数据
清洁发送给子系统的所有数据,防止攻击者实施注入类攻击,验证输入后再清洁数据是纵深防御的体现。
3、多样化编译技术和4种程序多样化转化方式
在安全编码中,多样化编译技术是提高软件安全的一种方法。
程序多样化转化方式:(1)程序从源代码到可执行文件的编译过程中进行多样化转化 (2)已经编译好的二进制文件进行多样化转化 (3)镜像改变 (4)程序在运行中定期或随机改变自己的特征
三、软件安全设计
1、平均排序,PxI排序
平均排序法又叫DREAD法:潜在损失,可再现性,可利用性,受影响的用户,可发现性
公式:(D+R+E+A+DI)/5
PxI排序是概率x影响因子
公式:(R+E+DI)x (D+A)
2、威胁建模一般过程
确定安全目标,创建应用程序流程图,分解应用程序,确定威胁,威胁评估,创建威胁缓解计划或策略,验证威胁,验证建档
3、安全设计原则中
(1)减少软件受攻击面原则:软件受攻击面是指用户或其他程序以及潜在攻击者能够访问的所有功能和代码的总和,减少受攻击面就是禁止一切不需要使用的模块,协议和服务。
(2)纵深防御原则:纵深防御也称分层防御,在软件设计中加入层次化安全控制和风险防御方法。
(3)默认安全配置原则:是为系统提供默认的安全措施,包括默认权限、默认策略等,尽可能使用户不用额外添加配置就能安全的应用。
4、软件架构安全性分析
形式化分析:实用性弱,自动化程度高
工程化分析:实用性强,自动化程度弱
四、软件安全需求分析
1、4个9的软件表示含义
...表示该软件系统在连续运行一年时间里最多可能的业务中断时间是...
2、软件安全需求分析和软件需求分析的区别
软件安全需求的客观性:软件安全需求是系统的客观属性决定的
软件安全需求的系统性:软件安全需求分析不能只从软件本身出发,必须从系统的角度去分析
软件安全需求的经济性和适用性
3、软件安全需求分析的主要工作
首先确定软件系统的业务运行环境,规则环境和技术环境
在了解各种安全需求内容的基础上,通过安全需求的获取过程,对程序应该包含的安全需求进行分析
关于如何实现这些安全需求在软件安全设计和开发部分进行讨论
五、漏洞
1、软件漏洞的分类
根据成因分:设计错误,配置错误,逻辑错误,内存破坏类和输入验证类
根据利用位置分:本地漏洞和远程漏洞
根据威胁类型分:获取控制,获取信息,拒绝服务
2、软件漏洞的成因分析
(1)软件系统结构决定漏洞的必然性 (2)软件趋向大型化,第三方扩展增多 (3)新技术,新应用的开发之初缺乏安全考虑 (4)软件安全开发重视不够,软件开发者缺乏安全知识 (5)软件的应用场景更具威胁