本文是对《软件安全》课程期末内容的系统性复习与梳理,围绕软件漏洞、恶意代码、安全开发生命周期(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

    软件:注册验证、水印、代码混淆、软件加壳

  • 软件版权保护的目标有哪些?它与软件保护的目标有什么联系与区别?

    防止软件盗版、逆向工程、信息泄漏

    是子集,谈交集外区别;措施同样可用于软件保护