软件安全复习材料自用版本
  4DPNPWWNhSsO 2023年11月13日 38 0

名词解释 SQ:软件质量

SQA:软件质量保证

SA:软件保障

SDS:软件定义安全

VPN:虚拟专用网

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

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

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

CVSS:通用漏洞评分系统

CVE:通用漏洞和披露

CWE:通用缺陷枚举

CWSS:通用缺陷评分系统

CPE:通用平台枚举

OVAL:开放漏洞评估语言

ESP:扩展栈指针

EBP:扩展基址指针

EIP:扩展指令指针

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

BSI:内建安全模型

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

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

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

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

PTES:sentou测试执行标准

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虚拟机

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

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

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

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

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

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

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

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

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

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

三个维度分析漏洞特点

持久性与时效性(时间角度) (2)广泛性和具体性(空间) (3)可利用性与隐蔽性 (利用角度) 常用的漏洞分类方法

基于漏洞成因 (2)基于漏洞利用位置 (3)基于威胁类型 漏洞管控的基本理念

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

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

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

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

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

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

八种典型软件开发模型

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

软件安全开发模型

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

McGraw的内建安全模型(BSI)

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

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

SDL的七个阶段

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

SDL模型实施的基本原则

安全设计 2.安全配置 3.安全部署 4.沟通 BSI核心思想

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

BSI模型的三支柱

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

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

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

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

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

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

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

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

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

  1. 等级保护概念:1.对网络实施分等级保护、分级监管 2.对网络中发生的安全事件分等级响应、处置 3.对网络中使用的网络安全产品实行按等级管理
  2. 等级保护级别:第一级:属于一般网络,危害个人(轻),不危害公共。第二级:属于一般网络,危害个人(严重)危害公共(轻),但不危害国家安全 第三级:属于重要网络,危害个人(特别严重) 危害公共(严重),危害国家安全(轻) 第四级:属于特别重要网络危害公共(特别严重)危害国家(严重) 第五级:属于极其重要网络 危害国家安全(特别严重)

一 个人轻

二 个人严重 社会轻

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

四 社会特别严重 国家严重

五 国家特别严重

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

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

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

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

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

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

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

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

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

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

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

安全设计原则

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

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

威胁建模八步骤

确定安全目标 创建应用程序概况图 分解应用程序 确定威胁 威胁评估 确定威胁缓解计划或策略 验证威胁 验证归档

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

第八章 软件安全编码主要工作

选择安全的编程语言 版本管理 代码检测 安全编译 基本原则

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服务平台的基准安全配置

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月13日 0

暂无评论

推荐阅读