当前位置:   article > 正文

软件安全复习材料自用版本_软件安全需求分析和软件需求分析的联系

软件安全需求分析和软件需求分析的联系

名词解释

SQ:软件质量

SQA:软件质量保证

SA:软件保障

SDS:软件定义安全

VPN:虚拟专用网

0day漏洞:已被发现但是官方还没有补丁的漏洞

1day漏洞:官方发布补丁后大部分用户还未打补丁时的漏洞,仍然具有可利用性

历史漏洞:距离补丁发布日期遥远且可利用性不高的漏洞

CVSS:通用漏洞评分系统

CVE:通用漏洞和披露

CWE:通用缺陷枚举

CWSS:通用缺陷评分系统

CPE:通用平台枚举

OVAL:开放漏洞评估语言

ESP:扩展栈指针

EBP:扩展基址指针

EIP:扩展指令指针

SDL:软件安全开发生命周期模型

BSI:内建安全模型

BSIMM:内建安全模型成熟度模型

NIST:美国国家标准与技术研究院

OWASP:开放互联网应用安全研究项目

CERT:计算机安全应急响应组织

PTES:渗透测试执行标准

ISMS:信息安全管理体系

PDRR/PDR 2:最常用的网络安全模型,既防护、检测、响应、恢复模型

RUP:Rational统一过程

SAMM:软件保证成熟度模型

STRIDE:一种威胁分类方法,是6种安全威胁的英文首字母缩写,分别是:Spoofing(假冒)、Tampering(篡改)、Repudiation(否认)、Information Disclosure(信息泄露)、Denial of Service(拒绝服务)和Elvation of Privilege(特权提升)。

CNNVD:中国国家信息安全漏洞库

UML:统一建模语言

APT:高级可持续攻击

CLASP:综合的轻量级应用安全过程

JVM:Java虚拟机

第一章

软件面临的三大威胁:软件漏洞、恶意代码、软件侵权

恶意代码:在未被授权的情况下,以破坏软硬件设备、窃取用户信息、干扰用户正常使用、扰乱用户心理为目的而编制的代码片段或者软件

包括计算机病毒、蠕虫、特洛伊木马、后门、恶意广告、恶意脚本、勒索软件

软件安全定义:软件工程与软件保障的一个方面,它提供一种系统的方法来表示、分析和追踪对危害极具有危害性功能的软件缓解措施与控制

软件安全三大属性:保密性、完整性、可用性

除此之外还有可认证性、授权、可审计性、抗抵赖性、可控性、可存活性

第二章

漏洞是存在于信息系统、系统安全过程、内部控制或实现过程中的、可被威胁源攻击或触发的弱点

漏洞特点:信息系统自身具有的缺陷或者弱点。存在环境通常是特定的。具有可利用性,利用漏洞对信息系统进行破坏

软件生命周期各阶段的表现:软件错误(开发过程中,开发人员产生)、软件缺陷(软件产品中)、软件故障(软件运行中)、软件失效(用户使用中)

软件漏洞:软件生命周期中与安全相关的设计错误、编码缺陷以及运行故障

三个维度分析漏洞特点

  1. 持久性与时效性(时间角度)  (2)广泛性和具体性(空间) (3)可利用性与隐蔽性 (利用角度)

常用的漏洞分类方法

  1. 基于漏洞成因 (2)基于漏洞利用位置 (3)基于威胁类型

漏洞管控的基本理念

第三章

缓冲区溢出漏洞:就是在向缓冲区写入数据时,由于没有做边界检查,导致写入缓冲区的数据超出预先分配的边界,从而使溢出的数据覆盖在合法的数据上而引起系统异常的一种现象

堆块:堆区的内存按不同大小组织成块,以堆块为单位进行标识,分为块首和块身

堆表:位于堆区的起始位置,用于索引堆区中所以的堆块信息,包括堆块的位置、大小、空闲还是占用。

第五章

软件生命周期:软件孕育、诞生、成长、成熟、衰亡的生存过程。由定义、开发、维护三个时期组成。

软件定义时期任务:确定要完成的总目标,确定工程的可行性,分为三个阶段问题定义、可行性研究、需求分析

软件开发时期任务:设计和实现在前一个时期定义的软件,分为四个阶段:总体设计、详细设计、编码和单元测试

八种典型软件开发模型

瀑布模型、快速原型模型、增量模型、螺旋模型、喷泉模型、Rational统一过程、极限编程和敏捷开发、微软过程

软件安全开发模型

微软的软件安全开发生命周期模型(SDL)

McGraw的内建安全模型(BSI)

美国国家标准与技术研究院(NIST)的安全开发生命周期模型

OWASP提出的综合的轻量级应用安全过程,以及软件保障成熟度模型

SDL的七个阶段

培训、需求分析、设计、实施、验证、发布、响应

SDL模型实施的基本原则

  1. 安全设计 2.安全配置 3.安全部署 4.沟通

BSI核心思想

对软件全生命周期各个阶段产品的安全性进行评估、测试、验证、以及操作控制,实现面向过程的全生命周期安全质量控制方法

BSI模型的三支柱

风险管理、软件安全接触点、安全知识

第六章

软件需求分析的主要任务:确定对系统的综合要求、分析系统的数据要求、导出系统的逻辑模型和修正系统的开发计划

软件安全需求分析的目的:描述为了实现信息安全目标,软件系统应该做什么,才能有效地提高软件产品的安全质量,减少进而消减软件安全漏洞

软件安全需求分析与软件需求分析的区别(判断):安全需求并不是从使用者的要求和分析出发,而是从系统的客观属性所决定的。

软件安全需求分析分为:外部安全需求和内部安全需求

外部安全需求:主要通过法律法规等遵从性需求

内部安全需求:组织内部需要遵守的政策、标准、指南和实践模式,二是与软件业务功能相关的安全需求

1996年国务院颁布《中华人民共和国计算机信息系统安全保护条例》

2017年6月1日实施《中华人民共和国网络安全法》

1. 等级保护概念:1.对网络实施分等级保护、分级监管 2.对网络中发生的安全事件分等级响应、处置 3.对网络中使用的网络安全产品实行按等级管理

2. 等级保护级别:第一级:属于一般网络,危害个人(轻),不危害公共。第二级:属于一般网络,危害个人(严重)危害公共(轻),但不危害国家安全 第三级:属于重要网络,危害个人(特别严重) 危害公共(严重),危害国家安全(轻) 第四级:属于特别重要网络危害公共(特别严重)危害国家(严重) 第五级:属于极其重要网络 危害国家安全(特别严重)

一 个人轻

二 个人严重 社会轻

三 个人特别严重 社会严重 国家轻

四 社会特别严重 国家严重

五 国家特别严重

3. 网络安全等级保护工作流程:一、定级 二、备案 三、等级测评 四、安全建设整改 五、监督检查

软件安全需求获取相关方:业务负责人,最终用户、客户、安全需求分析人员和安全技术支持

软件安全需求分析获取方法:头脑风暴、问卷调查和访谈、策略分解、数据分类、主/客体关系矩阵、使用用例和滥用案例建模、软件安全需求跟踪矩阵

软件安全需求可分为:1.核心需求:保密性需求、完整性需求、可用性需求、可认证性需求、授权、可审计性需求 2.通用安全需求:安全架构需求、会话管理需求、错误和例外管理需求、配置参数管理需求 3.运维安全需求(环境部署、文件归档、反盗版) 4.其他安全需求(顺序和时间、国际化、软件采购)

第七章

软件设计:从生命周期角度,软件设计是从软件需求规格说明书出发,根据需求分析阶段确定的功能,设计系统软件的整体结构、划分功能模块等形成具体的设计方案。即从整体到局部,总体设计到详细设计的过程

软件安全设计的目的和作用:将安全属性设计到软件架构中,以实现软件产品本质的安全性。

软件安全设计与软件设计的联系:软件安全设计是将软件安全需求转化为软件的功能结构的过程,而软件设计包括架构设计、接口设计、构建设计、功能设计等。软件安全设计是软件设计的一部分。

软件架构安全性设计:1.软件架构设计:(1)逻辑架构 (2)物理架构 (3)系统架构 2.软件架构安全设计:首先对系统进行描述,接着进行安全功能的设计

软件架构安全性分析可分为形式化和工程化

形式化:UMLsec建模描述分析法、软件架构模型法(SAM)、离散时间马尔科夫链(DTMC)

工程化:场景分析法、错误用例分析法和威胁建模(可能选填判断)

安全设计原则

  1. 减少软件受攻击面原则:去除、禁止一切不需要使用的模块、协议和服务,减少攻击可以利用的漏洞。实例:重要性低的功能可取消,中的可非默认开启,高的关闭或者加以限制,用那些安全的组件而不是用户自己编写的  举例:苹果公司iOS系统通过禁用Java和flash来减少iOS系统受攻击面。
  2. 最小权限原则 划分超级用户权限,采用高内聚,低耦合的模块化编程
  3. 权限分离原则 清晰的模块划分,将风险分散。不允许程序员检查自己编写的代码
  4. 纵深防御原则(分层防御) 在输入验证时不使用用户输入的动态查询结构,防止注入,不允许活动脚本与请求验证等结合,防止XSS,使用安全域:不同角色访问不同资源
  5. 完全控制原则
  6. 默认安全配置原则
  7. 开放设计原则
  8. 保护最弱一环原则
  9. 最少共用机制原则
  10. 安全机制的经济性原则
  11. 安全机制心理可接受原则
  12. 平衡安全设计原则

威胁建模:通过抽象的概念模型对影响软件系统的威胁进行系统的识别和评价

为什么要威胁建模:早期发现安全缺陷、理解安全需求、设计和交付更安全的产品、解决其他技术无法解决的问题

威胁建模八步骤

  1. 确定安全目标
  2. 创建应用程序概况图
  3. 分解应用程序
  4. 确定威胁
  5. 威胁评估
  6. 确定威胁缓解计划或策略
  7. 验证威胁

验证归档

STRIDE:假冒、篡改、否认、信息泄露、拒绝服务、特权提升

第八章

软件安全编码主要工作

  1. 选择安全的编程语言
  2. 版本管理
  3. 代码检测
  4. 安全编译

基本原则

1.验证输入 2.留意编译器警告 3.安全策略的架构和设计 4.保持简单性 5.默认拒绝 6.坚持最小权限原则 7.清洁发送给其他系统的数据 8.纵深防御 9.使用有效的质量保证技术 10.采用安全编码标准

其他原则

1.最少反馈 2.检查返回

安全编码实践

1.输入验证 2.数据净化 3.错误信息输出保护(用户名或密码不正确)

正则表达式

验证用户名 ^([A-Za-z])(?=.*[\d])(?=.*_)[A-Za-z0-9_]{5-15}$

验证强密码 ^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8-10}$

身份证号码 ^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{4}$

E-mail地址 ^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$

电话号码 ^((13\d) | (14[5|7]) | (15([0-3] | [5-9])) | (166) | (17([2|3] | [5-8])) | (18\d) | (19([0-3] | [5-9]))) \d{8}$

日期 ^\d{4} ((0[1-9]) | (1[0-2])) ((0[1-9]) | (1\d) | (2\d) | (3[0|1|2]) )

中国邮政编码 ^\d{6}

IP地址(IPV4) \d+\.\d+\.\d+\.\d+

腾讯QQ号 ^[1-9][0-9]{4,10}$

中文字符 ^[\u4e00-\u9fa5]$

空白行 ^(\t)* \n*$

域名 ^((?!-)[A-Za-z0-9-]{1,63} (?<!-)\\.)+[A-Za-z]{2.6}$

数字 ^\d$

第九章

软件测试目标(判):在软件投入生产运行前,尽可能发现软件中的错误

软件测试方法:白盒、黑盒测试

软件测试步骤:1.模块测试 2.子系统测试 3.系统测试 4.验收测试 5.平行运行

软件安全测试目标(判):验证软件系统的安全功能是否满足安全需求,发现漏洞并把数量降到最低,评估其他质量属性

软件安全测试原则(问答):1.尽早进行软件安全测试 2.在有限的实践和资源下进行测试 3.软件安全没有银弹 4.程序员应避免检查自己的程序 5.尽量避免测试的随意性

软件测试和软件安全测试的区别(选、判):软件测试从最终用户角度出发发现缺陷并修复,保证软件满足最终用户要求。软件安全测试从攻击者角度出发发现漏洞并修复,保证软件不被恶意攻击者破坏

模糊测试核心思想:通过监视非预期输入可能产生的异常结果来发现软件问题(使用大量半有效的数据作为应用程序的输入)

模糊测试的优点和局限性

优点:比基于源代码的白盒测试适用范围更广 动态执行 原理简单 自动化程度高

局限性:访问控制漏洞、设计逻辑缺陷、多阶段安全漏洞、多点触发安全漏洞的发现能力有限。

渗透测试核心思想:模仿黑客的攻击行为,对目标做深入探测,发现脆弱环节。

渗透测试对象:硬件设备(路由器,交换机)  主机系统软件(Windows,Linux) 应用系统软件(ASP,PHP)

渗透测试过程:1.前期交互 2.情报收集 3.威胁建模 4.漏洞分析 5.渗透攻击 6.后渗透攻击 7.报告

第十章

软件部署主要活动:打包、安装、更新、激活、钝化、卸载

除此之外:升级、再配置、再部署

软件部署模式:单价软件部署 基于中间件平台部署 基于代理部署

软件部署一般过程:计划阶段 执行阶段 验证阶段 测试阶段

软件安全部署的重要性(判):影响软件运行效率和投入成本,提高软件配置和运行

软件安装配置安全:提供详细的安装手册 可更改的软件安装目录 设置默认安装模块 提供安全功能 启用最小权限用户身份 开启应用日志审计 记录部署过程

基础环境软件的安全配置:操作系统的基准安全配置 数据库系统的基准安全配置 Web服务平台的基准安全配置

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/743837
推荐阅读
相关标签
  

闽ICP备14008679号