2025南软软件安全期末复习
本文是对《软件安全》课程期末内容的系统性复习与梳理,围绕软件漏洞、恶意代码、安全开发生命周期(SDL)、安全需求与设计、软件版权与法律等核心知识点,对教材中的重点概念、常见考点和易混淆内容进行了整理与归纳。
2025冷门考点:威胁建模、 Windows安全漏洞保护的基本技术及其存在的问题
第一章
什么是零日(0day)漏洞?什么是零日(0day)攻击?(2024)
未公开披露的软件漏洞,没有给软件厂商时间去打补丁或给出解决方案。
攻击者利用零日漏洞开发攻击工具攻击
为什么说面对当前的全球网络空间安全威胁,必须对软件安全给予强烈关注?
背景:软件无处不在
问题:漏洞普遍存在
结论:重视软件安全
当前,黑客为了能够有效达到窃取数据、破坏系统的目的,常常通过挖掘或是购买零日漏洞,开发针对零日漏洞的攻击工具,零日漏洞威胁实际上反映了软件系统存在的一个什么问题?
先介绍零日漏洞
系统的脆弱性,漏洞的隐秘性,修复的滞后性
根据本书的介绍,软件安全威胁可以分为哪几类?
软件漏洞、恶意代码、软件侵权
试谈谈对软件漏洞的认识,举出软件漏洞造成危害的事件例子。
软件生命周期与安全相关的设计错误、编码缺陷和运行故障
举例两方面:
软件漏洞在运行期间造成错误、崩溃、死机:操作系统蓝屏、内存泄漏崩溃
软件漏洞被黑客利用攻击:数据库获取明文口令、缓冲区溢出攻击获得远程权限
什么是恶意代码?除了传统的计算机病毒,还有哪些恶意代码类型?
未授权,搞破坏
蠕虫、特洛伊木马、后门、勒索软件…
针对软件的版权,有哪些侵权行为?
未经许可,发表,登记,修改,翻译
复制、部分复制
合作软件独立发表
向公众发行、出租、传播
转让他人著作权
谈谈对软件安全概念的理解。
提供系统方法标识、追踪危害性软件,缓解和控制
三大属性CIA:保密性、完整性、可用性
其他属性:可认证,审计..
简述软件和软件工程的概念。
计算机程序、数据和相关文档
工程方法开发维护软件,结合好技术,高效开发,是技术和管理结合的工程学科
对照一般软件工程的概念,软件安全工程主要增添了哪些任务
安全代码、安全环境、安全测试、网络安全、安全维护、安全标准、安全审计
谈谈软件安全与软件危机、软件质量和软件质量保证、软件保障、软件可靠性、应用软件系统安全、可信软件和软件定义安全等概念的区别和联系。
给了
确保软件安全的基本思路是什么?软件安全涉及的技术主要有哪些方面?
挖掘安全漏洞,分析给出修复
事先分析可能发生的原因,开发中规避
软件安全属性认知、信息系统安全工程、软件安全开发(背不出来也给了)
第二章
试述软件漏洞的概念,谈谈软件漏洞与软件错误、软件缺陷、软件 Bug 的区别与联系。(2024)
讲讲软件漏洞定义(同上)
错误存在软件开发生命周期中(需求、设计、编码错误一堆错误),缺陷/bug存在软件产品中(静态)
为什么说安全缺陷或者说Bug是一个需要考虑具体环境、具体对象的概念?
举例Https
讲讲安全性需求是否需要加入考量,然后说具体问题具体分析
试分析软件漏洞的成因。
看到成因,刨根问底
系统结构、软件大型化复杂化、使用场景、缺乏重视
软件漏洞如何分类分级管理?
成因类:
利用位置类:
威胁类型类:
严重级
漏洞评分系统级
软件漏洞买卖合法吗?软件漏洞应当如何管控?
不合法
认清并加以重视(漏洞)
限制并获得双赢(”白帽”)
加强法律建设
厂商发布漏洞信息的标准过程是怎样的?
识别、评估、选择补救措施、发布
第三章
程序运行时的内存布局是怎样的?
栈堆代数,中心扩散,上低下高
在程序运行时,用来动态申请分配数据和对象的内存区域形式称为什么?
堆
什么是缓冲区溢出漏洞?
向缓冲区写数据时未作边界检查,导致超过预先分配的边界,覆盖合法数据
黑客利用缓冲区溢出攻击,获取系统权限
第五章
什么是软件的生命周期?软件生命周期通常包括哪几个阶段?
定义、开发、维护
定义:问题定义、可行性分析、需求分析
开发:设计、编码、测试
维护
什么是软件过程?什么是软件开发(过程)模型?为什么从20世纪90年代以后,人们更多使用“软件过程”来替代传统的“软件开发模型”?(难背)
获得高质量软件完成任务的框架,规定工作步骤
软件生命周期开发、运行、维护的全部工作任务的框架
更高效、更灵活、更高精度、减少质量问题、团队
有哪些典型的软件开发模型?这些软件开发模型有什么区别与联系?
螺旋、原型、瀑布、敏捷、增量、喷泉
迭代次数和时机、开发时间
影响开发过程与时机
SD3+C原则是SDL模型实施的基本原则,试简述其内容。
安全设计、安全配置、安全部署、沟通
微软的SDL模型与传统的瀑布模型的关系是怎样的?
发展而来,增加两个活动(安全和业务)
什么是敏捷SDL?敏捷SDL和经典SDL的主要区别是什么?(2024、2025)
无阶段的迭代开发模型
并不是每个发布版本都要达到所有要求
第六章
为什么要进行需求分析?通常对软件系统有哪些需求?
了解用户需求,需求分析是前提
功能、性能、质量属性、接口、约束
为什么要进行安全需求分析?通常对软件系统有哪些安全需求?
如何提高安全质量,减少安全漏洞
外部:法规、合规性、对策总结
内部:组织内部标准、指南,功能相关的安全需求
软件安全需求分析的主要工作是什么?它和软件需求分析有什么区别与联系?
在需求分析阶段,确定环境,了解安全需求内容,通过安全需求获取过程,分析安全需求
安全需求是客观的、安全需求从系统角度分析、按需采纳
是衍生、以功能性需求分析为基础、帮助从安全角度确定系统需求
为什么说软件安全需求更多地来源于遵从性需求?
用户难以提出,来自内外部安全政策和标准的遵从
软件安全需求的获取方法有哪些?
头脑风暴、问卷与访谈、策略分解、数据分类、主客体关系矩阵
软件安全需求的获取方法中的策略分解是指什么?(2024)
将需遵守的内外部政策,分解成详细的安全需求
软件安全需求的获取方法中的数据分类是指什么?
按数据生命周期对数据分阶段划分、按数据重要性对保护级别划分
软件安全需求的获取方法中的主/客体关系矩阵是指什么?
刻画基于使用用例的主客体操作关系,角色(列)与组件(行)的二维表示,与矩阵所允许的对应动作相违背的判定为威胁
针对信息系统中的数据生命周期,通常应当考虑的安全需求有哪些?
创建、处理、传输、存储、介质、归档
数据创建、访问和权限
数据泄漏保护
传输数据安全协议
数据存储格式,环境威胁
介质可靠性
归档数据处理政策
第七章
软件设计阶段的主要工作是什么?
架构、界面接口、模块构件、数据模型、算法、部署
软件安全设计阶段的主要工作是什么?
软件架构安全性设计、软件架构安全性分析、软件安全功能设计
为什么要进行软件架构设计?软件架构设计的主要工作是什么?软件架构安全性设计的主要工作是什么?
开发高质量软件
理清需求、设计业务逻辑和接口……扯第一问、迭代架构设计
进行系统描述,确定安全级别、设计安全功能、解决易用性等问题
为什么要进行软件架构安全性分析?软件架构安全性分析的基本过程是什么?
编码前,要素验证,提供处理漏洞的机会
架构建模 –> 检查安全需求 –> 修改架构设计
软件受攻击面是指什么?举例说明软件设计时可以采取哪些策略来降低受攻击面。
用户或攻击者能访问到的所有功能和代码的总和(代码、接口、服务、协议)
重要性低功能取消、重要性中非默认开启、重要性高增加安全措施、重用安全的现有库。
IOS不支持java、flash
什么是最小授权原则?试举例说明软件设计时哪些措施是采用了最小授权原则。(2024)
系统授予实体完成任务的最小权限,持续时间尽可能短。使不需要的特权使用可能性降到最低,保证安全
权限细粒度划分,高内聚低耦合模块化编程。
什么是权限分离原则?试举例说明软件设计时哪些措施是采用了权限分离原则。
将软件功能设计为需要两个或更多条件下才能实现。防止出问题时,整个软件面临风险
清晰划分模块,分散风险。可快速定位问题、单模块测试、重用和替换模块
不允许程序员检查自己编写的代码
第八章
软件安全编码阶段的主要工作有哪些?
选择安全编程语言、版本管理、代码检测、安全编译
什么是类型安全语言?哪些程序开发语言是类型安全的?
提供类型安全保障机制的语言,操作仅作用于适当类型。C#、java
安全编译是指在代码编译阶段采取的哪些安全措施?(2024)
集成编译环境、安全环境、真实模拟应用环境、多样化编译技术
试列举几条安全编码原则,并举例说明这些原则的重要意义。
验证输入、留意编译器警告、安全策略的架构与设计、保持简单性
第十二章
试解释以下与恶意代码程序相关的计算机系统概念,以及各概念之间的联系与区别:进程、线程、动态链接库、 服务、注册表。
进程是OS对正在运行的程序的抽象,动态,有生命周期,反应程序在数据集上的全部动态过程
线程是OS分配处理器资源的基本单位,讲讲进程与线程的关系
动态链接DLL是共享函数库的可执行文件,通过其他运行程序加载到内存中,可被多个进程加载
服务是OS在后台完成系统任务的程序,有各种权限
注册表是OS中使用的中央分层数据库,存储用户、程序、硬件配置必须的信息
从危害、传播、激活和隐藏4个主要方面分析计算机病毒、蠕虫、木马、后门、Rootkit及勒索软件这几类恶 意代码类型的工作原理。
病毒 蠕虫 木马 后门 Rootkit 勒索软件 危害 破坏机密性、完整性、可用性 网络拥塞、系统性能、安全隐患、反复性、破坏性 非法进入系统、控制系统、破坏系统 访问控制系统的通道,无直接攻击行为 获得访问权限,隐藏在计算机中 劫持用户资源、勒索钱财 传播 存储设备、网络 自我复制、网络 自我传播、诱骗 邮件、漏洞、网络、存储设备 激活 特定条件 自动化、系统漏洞 用户操作 开发者/攻击者设置 隐藏 寄生程序或文档 实体隐藏模块 难以确定 修改OS软件 病毒程序与蠕虫程序的主要区别有哪些?
病毒人为干预、蠕虫不需要;病毒感染文件系统,蠕虫影响系统与网络性能
什么是Rootkit?它与木马和后门有什么区别与联系?(2024)
一类木马后门工具,修改操作系统软件,使攻击者获得权限并隐藏在计算机中
属于木马范畴,替换操作系统软件,伪装与隐藏机制
作为后门行使职责,口令、远程shell绕过检查机制。
Rootkit强调隐藏伪造欺骗,木马强调窃取与侵入。
什么是勒索软件?为什么勒索软件成为近年来数量增长最快的恶意代码类型?(2025)
劫持资产,勒索钱财的恶意软件
加密有效解密成本高、电子货币支付,变现快,追踪难、勒索软件即服务的出现,降低攻击门槛
恶意代码防范的基本措施包括哪些?
增强法律意识、健全管理制度、软件可信验证
第十三章
试从软件的权益处置角度,谈谈对商业软件、免费软件、共享软件(或试用软件)、闭源软件、自由软件及开源软件概念的理解。
商业软件通过销售许可证或订阅方式获利,核心目的是盈利
免费软件是无需支付可使用的软件,源代码可能不公开,提供基础功能,高级功能可能需付费
共享软件提供试用版或部分功能免费,源代码通常不公开,通过共享试用吸引用户购买
闭源软件源代码私有,用户只能使用,不能修改与分发
自由软件用户可以自由使用、分发、修改,重视自由和开放源代码,通常遵循GUN GPL协议
开源软件允许用户修改分发,但不一定要求使用自由,主要强调开放源代码
自由软件赋予软件使用者哪些“自由”?
4种自由:
自由运行、自由研究、自由发布、自由改进
试简述开源软件与自由软件的联系与区别。(2025)
开源软件由自由软件发展而来,都具理想主义色彩,追求更多人使用、学习、改进
概念不同:自由软件比开源软件更严格,开放源代码。遵循GPL和BSD许可证的开源软件才符合自由软件
价值观不同:自由软件将自由作为道德标准,开源软件更注重软件发展
所开发的软件中使用了带 GPL 许可证的开源软件,那么这个软件是不是就要开源?(2024)
是的。GNU通用公共许可证,在一个软件中使用了GPL许可证的产品,则该软件也要使用GPL许可证。“传染性”
第十四章
根据我国法律,软件著作权人有哪些权利?在日常学习和生活中,有哪些违反软件著作权的行为?
信息网络传播权、修改权、发表权、署名权、复制权、出租权、翻译权、发行权等
试述软件版权的概念。针对软件的版权,有哪些侵权行为?有哪些保护措施?(2024)
软件知识产权的一部分,指软件著作权
软件盗版、逆向工程、信息泄漏
硬件:发行介质保护、软件狗、可信平台模块TPM
软件:注册验证、水印、代码混淆、软件加壳
软件版权保护的目标有哪些?它与软件保护的目标有什么联系与区别?
防止软件盗版、逆向工程、信息泄漏
是子集,谈交集外区别;措施同样可用于软件保护





