第一章 软件安全概述
软件的定义:国家标准GB/T 11457—2006《信息技术 软件工程术语》给出的软件定义是:计算机程序、规则和可能相关的文档。
软件定义网络:
将转发的复杂控制逻辑从交换机路由器等设备中分离出来,以便通过软件编程实现硬件对数据转发规则的控制,最终达到对流量进行自由操控的目的
软件定义安全
将物理及虚拟的网络安全设备预期接入模式、部署方式和实现功能进行解耦,底层抽象为安全资源池里的资源,顶层统一通过软件编程的方式进行智能化、 自动化的业务编排和管理,以完成相应的安全功能,从而实现一种灵活的安全防护。
SDS可以分解为软件定义流量、软件定义资源和软件定义威胁
软件无处不在
软件规模日益庞大
软件漏洞普遍存在,零日漏洞成为主要安全威胁
传统的工业控制系统(ICS)逐渐向网络化转变、黑客、病毒和木马等威胁正在向ICS扩散,ICS面临的信息安全形式日益严峻
100%安全的软件和系统是不存在的,软件产品纯在漏洞是当前信息安全领域面临的最大困境
微软的安全开发生命周期(SDL)受到学术界和软件巨头的推崇。SDL实践可以帮助人们从软件开发之初就构建安全的代码,从而降低出现软件漏洞的可能性
漏洞利用过程:漏洞发现->漏洞挖掘->漏洞验证->漏洞利用->实施攻击
常见的软件侵权行为包括以下几种
未经软件著作权人许可,发表、登记、修改或翻译其软件。
复制、部分复制软件著作权人软件。
未经合作人许可,将合作完成的软件作为单独完成的软件发表、登记。
向公众发行、出租、传播著作权人的软件。
转让他人软件著作权或许可他人行使。
软件安全:软件工程与软件保障的一个方面,它提供一种系统的方法来标识、分析和追踪对危害以及具有危害性的功能(例如数据和命令)的软件缓解措施与控制。
根据软件开发生命周期的阶段划分,软件安全开发涉及以下几个方面的内容:
软件安全需求分析
软件安全设计
软件安全编码
软件安全测试
软件安全部署
1-8 谈谈对软件安全概念的理解。
是软件工程和软件保障的一个方面,提供了一种系统的方法来标识、分析和追踪对危害及具有危害性功能的软件缓解措施和控制。
软件安全具有信息安全三大基本属性CIA: 保密性、完整性、可用性。
其他属性:可认证性、授权、可审计性、抗抵赖性、可控性、可存活性等。
第二章软件漏洞概述
信息系统安全漏洞是信息安全风险的主要根源之一
软件漏洞是信息系统安全漏洞的一个重要方面
漏洞认识的三个共同的:
漏洞是信息系统自身具有的弱点或者缺陷
漏洞存在环境通常是特定的
漏洞具有可利用性
美国《时代》周刊,作者列夫·格罗斯曼:战利品是信息,漏洞是武器,黑客则是军火商
2-3 软件漏洞的成因
计算机系统结构决定了漏洞的必然性。例如,数据和指令可能发生混淆,人为因素导致编码错误等。
软件趋向大型化,第三方扩展增多。软件漏洞的增长和软件复杂度、代码行数的增长呈正比。
新技术、新应用的设计缺乏安全性考虑。
使用场景更具威胁。网络技术的引入使得软件的使用环境变得更加复杂多变。
缺乏对软件安全的重视,开发者缺乏安全知识。
2-4 软件漏洞如何分类分级管理?
分类
基于漏洞成因的分类。内存破坏类、逻辑错误类、输入验证类、设计错误类、配置错误类。
基于漏洞利用位置的分类。本地漏洞、远程漏洞。
基于威胁类型的分类。获取控制、获取信息、拒绝服务。
分级
微软按照漏洞严重程度的分类等级:严重、重要、中等、低。
利用通用漏洞评分系统(CVSS)分级。依照基本度量、时间度量、环境度量三个标准对漏洞打分。
2-5 软件漏洞管理遵循的标准
国际标准主要包括6大漏洞分级规范以及一系列安全漏洞管理规范,分级规范包括:
CVE(通用漏洞和披露)
CVSS(通用漏洞评分系统)
CWE(通用缺陷枚举)
CWSS(通用缺陷评分系统)
CPE(通用平台枚举)
OVAL(开放漏洞评估语言)
国内标准主要包括《信息安全技术安全漏洞标识与描述规范》、《信息安全技术安全漏洞等级划分指南》、《信息安全技术安全漏洞分类》、《信息安全技术信息安全漏洞管理规范》。
2-6 软件漏洞买卖合法吗?软件漏洞如何管控?
是否合法:不合法。
案例1:漏洞平台陷入“暂停”风波。
案例2:阿里巴巴员工利用漏洞刷月饼获利。
如何管控:
认清“漏洞是一种武器”。漏洞交易市场日趋成熟,大量流动的高危漏洞造成危害。这种问题逐渐形成规模,必须加以重视。
通过限制“白帽”行为的尺度和规范,使软件厂家与“白帽”获得双赢。
加强法律建设,完善漏洞管控规范。企业和国家都应建立专门的部门来系统的收集、分析、修复软件安全漏洞。
2-8 目前已知漏洞库可以划分为国家级漏洞库、行业和民间级、软件厂商漏洞库3类,自己在书上看去,有漏洞库,自己划分一下属于哪一类
第四章 Web漏洞分析
基于这三层的考虑(包含用户视图层、业务逻辑层和数据访问层)P75
第五章 软件安全开发模型
软件生命周期由定义、开发和维护3个时期组成
1. 软件定义时期
这个时期的工作又称为系统分析,分为3个阶段,即问题定义,可行性研究和需求分析
2. 软件开发时期
通常由4个阶段组成:总体设计、详细设计、编码和单元测试、综合测试,前两个阶段被称为系统设计,后两个阶段被称为系统实现
3. 软件维护时期
8种典型的软件开发模型:
瀑布模型
快速原型模型
增量模型
螺旋模型
喷泉模型
Rational同一过程
极限编程和敏捷开发
微软过程
微软的软件安全开发生命周期模型SDL
SDL模型是由软件工程的瀑布模型发展而来,是在瀑布模型的各个阶段添加了安全活动和业务活动
第六章 软件安全需求分析
软件需求分析的主要任务包括:确定对系统的综合要求,分析系统的数据要求,导出系统的逻辑模型和修正系统的开发计划
TC-SEC用于对操作系统地评估,这是IT历史上的第一个安全评估标准
等级保护的几个等级:
6-3 软件安全需求分析的主要工作是什么?它和软件需求分析有什么区别与联系?
主要工作:
识别、确定、追踪和协调软件项目中涉及安全相关的功能性需求。
区别:
1、软件安全需求分析需要更多的安全知识,软件需求分析则不需要;
2、软件安全需求分析的过程中要考虑不同的安全攻击和防御,而软件需求分析可以忽略此类要素;
3、软件安全需求分析的核心是安全需求,而软件需求分析的核心是功能性需求。
联系:
1、软件安全需求分析是软件需求分析的一个衍生;
2、软件安全需求分析应以功能性需求分析为基础,以更严格的标准审视安全功能性方面的问题;
3、软件安全需求分析可以帮助从安全角度考虑性地确定系统需求,为软件系统更好地提供保护。
6-7 对网络安全等级划分通常有两种描述形式,即根据安全保护能力划分安全等级的描述,以及根据主体遭受破坏后对客体的破坏程度划分安全等级的描述这两种形式。试谈谈这两种等级划分的对应关系。
对应关系:
低安全保护能力通常对应于低到中等影响的损害等级。这意味着如果安全措施较弱,遭受攻击后可能只会造成较小的损害。
中等安全保护能力可能对应于中等影响等级,表明有一定的安全措施可以抵御一些攻击,但如果遭受更复杂的攻击,损害可能会增加。
高安全保护能力通常对应于高影响等级,意味着尽管安全措施较强,但在面对高级持续性威胁时,一旦被突破,损害可能会很大。
极高安全保护能力对应于极高影响等级,这表明系统具备抵御最严重攻击的能力,损害可能性极低。
第七章 软件安全设计
软件安全设计的主要工作
目的:将安全属性涉及到软件框架种,以实现软件产品本质的安全性。
软件安全设计对软件安全有着举足轻重的作用,大多数软件安全问题都是由于软件设计上的安全性考虑不足或不完整所导致的
软件架构安全性设计
逻辑架构:描述软件系统中组件的关系,如用户界面、数据库和外部接口等。
物理架构:描述软件组件在硬件上的部署模式。
系统架构:说明系统的功能性特征,若可拓展性、可靠性、灵活性等。
软件安全设计原则(重点前6个)
1. 减少软件受攻击面原则
2. 最小授权原则
3. 权限分离原则
4. 纵深防御原则
5. 完全控制原则
6. 默认安全配置原则
7. 开放设计
8. 保护最弱一环原则
9. 最少公用机制原则
10. 安全机制的经济性原则
11. 安全机制心理可接受原则
12. 平衡安全设计原则
威胁建模
什么是威胁建模
即将开发完成的软件系统会面临哪些安全威胁,由此可在接下来的软件设计和软件实现等环节中来防范每一个安全威胁。
通过抽象的概念模型对影响软件系统的威胁进行系统的识别和评价。
为什么要威胁建模
威胁建模有着重要的存在价值,包括早期发现安全缺陷,理解安全需求,设计和交付更安全的产品,解决其他技术无法解决的问题等作用。
威胁建模的一般过程,包括8个步骤:
(1)确定安全目标
(2)创建应用程序概况图
(3)分解应用程序
(4)确定威胁
(5)威胁评估
(6)确定威胁环节计划或策略
(7)验证威胁
(8)验证建档
第八章 软件安全编码
类型安全语言
①C# ②Java
安全编码实践
1. 输入验证
2. 数据净化
3. 错误信息输出保护
4. 数据保护
(1) 密码算法选择
① 对称加密算法(DES、3DES、AES、IDEA)
② 非对称加密算法(RSA、ECC)
③ 哈希算法(MD5、SHA-1、SHA-256)
SM3哈希算法。SM3算法在SM2、SM9标准使用,适用于数字签名和验证、消息认证码的生成与验证以及随机数的生成