软件安全技术【太原理工大学】

没有划重点,只说了一句课后题和实验中的内容都可能会出。

2022考试题型:选择20个20分,填空10个10分,名词解释4个20分,简答6个30分,分析与论述2个20分,没找到历年题。

如此看来,这门考试大概是类似于马原考试的那种,只要别太过分,重点概念掌握一下就差不多了。所以如果逃课被王老师抓到太多的话就要认真点好好背背了,因为如果考试难度不高的话大概会从平时分拉开差距(。ì _ í。)

1.零日攻击

零日攻击指未被公开披露的软件漏洞,没有给软件的作者或厂商以时间去为漏洞打补丁或是给出建议方案,从而攻击者能够给出这种漏洞破坏计算机程序、数据及设备。

利用零日漏洞开发进行的攻击称为零日攻击。零日攻击成功率高,造成后果严重。零日漏洞反映了软件系统的脆弱性,存在漏洞的隐秘性、修复的滞后性。

2.软件安全威胁分类

软件自身的安全(软件漏洞)、恶意代码、软件侵权。

3.软件漏洞

软件漏洞通常被认为是软件生命周期中与安全相关的设计错误、编码缺陷及运行故障等。

一方面,软件漏洞可能会造成软件在运行过程中出现错误结果或运行不稳定、崩溃等现象,甚至引起死机等情况,另一方面,软件漏洞会被黑客发现和利用,进而实施窃取隐私等信息、甚至破坏系统等攻击行为。

4.恶意代码

恶意代码是在未授权情况下,以破坏硬件、窃取信息、干扰正常使用、扰乱正常使用、扰乱用户心理为目的的软件或代码片段。如 蠕虫、特洛伊木马、后门、恶意广告、流氓软件、逻辑炸弹、僵尸网络、勒索软件等。

5.软件安全

软件安全是软件工程和软件保障的一个方面,提供了一种系统的方法来标识、分析和追踪对危害及具有危害性功能的软件缓解措施和控制。

软件安全具有信息安全三大基本属性(CIA):保密性、完整性、可用性

保密性:确保信息资源仅被合法的实体(如用户、进程等)访问,使企业不泄露给未授权的实体;

完整性:信息安全中的完整性是指信息资源只能由授权的方式修改,在存储或传输过程中不被授权、未授权或无意篡改、销毁,或在篡改后能够被迅速发现;

可用性:信息安全中的可用性是指信息资源(信息、服务和IT资源等)可被合法实体并按要求特性使用。

其他属性:可认证性、授权、可审计性、可控性、可存活性等。

6.PDRR模型

保护-检测-响应-恢复

7.软件中的错误、缺陷、故障和失效在软件生命周期各个阶段的表现

错误(Error)是在软件开发过程中出现的不符合期望或不可接受的人为差错,其结果可能导致软件缺陷的产生;

缺陷(Bug/Defect)是指由于人为差错或其他客观原因,导致软件隐含能导致其运行过程中出现不希望或不可接受的偏差

故障(Fault)是指软件出现可感知的不正常、不正确或不按规范执行的状态;

失效(Fgilure)是指软件丧失完成规定功能的能力的事件。

8.软件漏洞的成因

计算机系统结构决定了漏洞的必然性。例如,数据和指令可能发生混淆,人为因素导致编码错误等。

软件趋向大型化,第三方扩展增多,软件漏洞的增长和软件复杂度、代码行数的增长呈正比。

新技术、新应用的设计缺乏安全性考虑。

使用场景更具威胁、网络技术的引入使得软件的使用环境变得更加复杂多变。

缺乏对软件安全的重视,开发者缺乏相关知识。

9.软件漏洞的特点

持久性与时效性,广泛性与具体性,可利用性与隐蔽性

10.软件漏洞的分类

基于漏洞成因分类:内存破坏类、逻辑错误类、输入验证类、设计错误类、配置错误类;

基于漏洞利用位置分类:本地漏洞、远程漏洞;

基于威胁类型的分类:获取控制、获取信息、拒绝服务。

11.栈溢出、栈溢出漏洞及利用分析

栈溢出是指程序视图访问超出栈空间的内存区域;

栈溢出漏洞是一种常见的安全漏洞,攻击者可以通过向程序输入过多的数据来触发栈溢出,进而覆盖栈中的关键数据,以实现任意代码执行的目的;

缓冲区溢出指攻击者通过向程序输入过长的数据,超出缓冲区的大小,从而覆盖栈中的其他数据。

12.堆溢出漏洞及利用分析

堆溢出漏洞是一种常见的安全漏洞,它发生在程序动态分配内存时未能正确处理数据的情况。

13.格式化字符串漏洞及利用分析

格式化字符串漏洞是由于程序员在编程过程中错误的将用户输入作为格式化字符串传递给某些函数,而没有对用户输入进行充分的验证和过滤,导致用户可以控制格式化字符串的输出,进而引发安全问题。

14.Windows安全漏洞保护分析

栈溢出检测选项/GS问题:1.cookie值可以被猜测  2.cookie可以被修改  3.覆盖SEH绕过cookie检查  4.覆盖父函数的栈数据绕过cookie检查

数据执行保护DEP  1.最早出现在win xp sp  2.使可写数据不可执行,使执行数据不可写)问题:可以执行已经加载的模块中的指令或调用系统函数,栈上的数据作为这些函数/指令的参数

地址空间布局随机化ASLR 问题:1.对于本地攻击,DLL的地址不会重新随机化 2.造成内存碎片增多  3.有些DLL模块没有采用/DYNAMICBASE可以从这个模块发起攻击

安全结构化异常处理SafeSEH(生成一张安全的SEH表,保存在数据块里)问题:当进程中存在一个不支持SafeSEH的模块时,整个SafeSEH的机制就可能失效,

增强缓解体验工具包EMET(增强型DEP,SafeSEH升级版SEHOP,强制性ASLR,HeapSpray防护)问题:EMET不是操作系统的一部分,会给操作系统的性能,可靠性以及会给其上运行的应用程序带来严重的副作用,且未跟上windows发展的步伐

15.Web安全漏洞

注入、失效的身份认证与会话管理、跨站脚本、不安全的直接对象引用、错误的安全配置、敏感的数据泄露、缺失功能级访问控制、跨站请求伪造、使用有漏洞的组件、未验证的重定向和转发

16.SQL注入漏洞

SQL注入漏洞是指,攻击者能够利用现有Web应用程序,将恶意的数据插入SQL查询中,提交到后台数据库引擎执行非授权操作。

SQL注入具有广泛性,基于SQL语言的标准数据库软件以及与之连接的网络应用程序都面临此类攻击。SQL注入攻击原理相对简单,教程很多;相较于其他漏洞,对于SQL注入漏洞的防范要困难。

17.漏洞防护的基本措施

采用强类型语言,如Java、C#等强类型语言几乎可以完全忽略数字型注入;

尽可能避免使用拼接的动态SQL语句;

在服务器端验证用户输入的值和类型是否符合程序的预期要求;

在服务器端对用户输入进行过滤;

避免网站显示SQL错误信息,如类型错误、字段不匹配等;

加固应用程序服务器和数据库、利用最低权限账户与数据库连接;

遵守安全规范;

使用专业的漏洞扫描工具进行安全性测试。

18.软件的生命周期

软件生命周期是指从软件的设计、开发、实施、维护等一系列过程的总和。通常的生命周期包括软件需求分析、软件设计、软件编码、软件测试、软件部署、维护、改进和升级等几个阶段。

19.安全开发生命周期SDL

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

20.软件安全需求分析的目的和作用

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

一个缺少安全需求分析的软件开发项目,将威胁到信息的保密性、完整性和可用性,以及其他一些重要安全属性。这个软件产品被攻破可能就只是一个时间早晚的问题,而不是条件的问题,这取决于攻击者对于这个软件系统价值的判断。

21.网络安全等级保护制度

网络安全等级保护制度将网络划分为五个安全保护等级,从第一级到第五级逐级增高。

第一级,属于一般网络,其一旦受到破坏,会对公民、法人和其他组织的合法权益造成损害,但不危害国家安全、社会秩序和社会公共利益。

第二级,属于一般网络,其一旦受到破坏,会对公民、法人和其他组织的合法权益造成严重损害,或者对社会秩序和社会公共利益造成危害,但不危害国家安全。

第三级,属于重要网络,其一旦受到破坏,会对公民、法人和其他组织的合法权益造成特别严重损害,或者会对社会秩序和社会公共利益造成严重危害,或者对国家安全造成危害。

第四级,属于特别重要网络,其一旦受到破坏,会对社会秩序和社会公共利益造成特别严重危害,或者对国家安全造成严重危害。

第五级,属于极其重要网络,其一旦受到破坏,会对国家安全造成特别严重危害。3)开展网络安全等级保护工作的流程。

22.等级保护工作

等级保护工作主要分为五个环节,定级、备案、等级测评、安全建设整改、监督检查。

23.软件安全设计的目的和作用

软件安全设计的目的是将安全属性设计到软件架构中,以实现软件产品本质的安全性。软件安全设计对于软件安全有着举足轻重的作用,大多数软件安全问题都是由于软件设计上的安全性考虑不足或不完整所导致的。

24.软件架构安全性设计

软件架构设计:逻辑架构、物理架构、系统架构;

软件架构安全性设计:软件架构安全设计首先需要进行系统描述,包括系统功能、安全要求、系统部署和技术需求,确定软件系统的安全级别。

25.安全设计原则

1)减少软件受攻击面原则:软件受攻击是指,用户或其他程序及潜在的攻击者都能够访问到所有的功能和代码的总和。一个软件的攻击面越大,安全风险就越大。减少软件受攻击面就是去除、禁止一切不需要使用的模块、协议和服务,其目的是减少攻击可以利用的漏洞;

2)最小授权原则:最小授权指系统仅授予实体完成规定的任务所必须的最小权限,并且改权限的持续时间也尽可能短;

3)权限分离原则:将软件功能设计为需要在两个或更多条件下才能实现,以防止一旦出现问题,整个软件都可能面临风险;

4)纵深防御原则:在软件设计中加入层次化安全控制和风险缓解/防御方法,它强调不依赖于单一的安全解决方案,使用多种互补的安全功能,即使一个安全功能失效,也不会导致整个系统遭受攻击;

5)完全控制原则:要求每一次访问受保护对象的行为都应可能进行细粒度检查;

6)默认安全配置原则:为系统提供默认的安全措施,包括默认权限、默认策略等,尽可能让用户不需要额外配置就可以安全地应用;

7)开放原则:软件设计本身应该是开放的,安全防御机制的实现应该不依赖于设计本身。通过模糊和晦涩难懂的方法固然可以给攻击者增加一些难度,或者说某种程度上提供了纵深防御的能力,但不应该是唯一的或主要的安全机制;

8)最弱保护一环原则“保护软件系统中的最弱组件。该原则类似于“木桶原理”;

9)最少共用机制原则:尽量减少依赖于一个以上用户甚至于所有用户的通用机制。设计应该根据用户角色来划分功能或隔离代码,因为这可以限制软件的暴露概率,提高安全性;

10)安全机制的经济性原则:以较低的开发成本和资源消耗获得具有较高安全质量的软件产品和系统保障;

11)安全机制心理可接受原则:安全保护机制设计得要简单,要让用户易用,要确保用户对资源的可访问,以及安全机制对用户透明,用户才会使用这些保护机制;

12)平衡安全设计原则:以上介绍的这些安全设计原则每一项都有自己的侧重点,将所有这些安全原则都设计到软件中是不可能的,因此有必要在这些安全原则间进行决策折中,即平衡安全设计原则。

26.威胁建模

威胁建模是一项在软件设计阶段不应忽视的、系统的、可迭代的、结构化的安全技术。对软件系统来说,资产包括软件流程、软件本身,以及它们处理的数据。在当前超过70%的漏洞来自于应用软件的情况下,解决软件安全问题应该首先明确应用软件面临的威胁,建立威胁模型,然后才能考虑软件的安全设计和编码实现。

27.软件安全编码的主要工作

选择安全的编程语言、版本(配置)管理、代码检测。

28.安全编译

编译是指将程序员编写的源代码转换为计算机可以理解的目标代码的过程。安全编译包括以下4个方面的含义。

1)采用最新的集成编译环境,并选择使用这些编译环境提供的安全编译选项和安全编译机制来保护软件代码的安全性。例如在VS中编译时,开启/GS选项对缓冲区的安全进行检查。

2)代码编译需要在一个安全的环境中进行。编译环境的完整性对于保证最终目标代码的正确性是很重要的。可以采用以下一些保证措施。

●在物理环境上,对代码编译系统实施安全访问控制,防止人为地破坏和篡改。

●在逻辑上,使用访问控制列表防止未授权用户的访问。

●使用软件版本控制方法,保证代码编译版本的正确性。

●尽量使用自动化编译工具和脚本,保证目标代码的安全性。

29.CERT安全编译建议

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/25699.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

渗透测试模拟实战(二)-BlueCMS平台

渗透测试 渗透测试是维护网络安全的重要组成部分,可以帮助组织识别并修复潜在的安全漏洞,减少被恶意攻击的风险。然而,进行渗透测试时必须遵守法律和道德规范,确保所有活动都在授权范围内进行。 环境部署: study2016、…

【优选算法】优先级队列 {优先级队列解决TopK问题,利用大小堆维护数据流的中位数}

一、经验总结 优先级队列(堆),常用于在集合中筛选最值或解决TopK问题。 提示:对于固定序列的TopK问题,最优解决方案是快速选择算法,时间复杂度为O(N)比堆算法O(NlogK)更优;而对于动态维护数据流…

使用Matplotlib进行Python绘图

Matplotlib是Python中广泛使用的2D绘图库,适合于各种数据可视化需求。它提供了多种图表类型,如折线图、散点图、柱状图和饼图,帮助用户直观地展示数据。 基本介绍 Matplotlib通过其主要模块pyplot,允许用户用简洁的代码快速绘制…

linux 网桥学习

前言: 本文来学习一下linux网桥概念和网桥配置 1. linux网桥概念 网桥,类似于中继器,连接局域网中两个或者多个网段。它与中继器的不同之处就在于它能够解析它收发的数据,读取目标地址信息(MAC)&#xff…

立创EDA专业版设置位号居中并调整字体大小

选择某一个器件位号,右键->查找: 选择查找全部: 下面会显示查找结果: 查看,所有的位号都被选中了: 然后布局->属性位置: 属性位置选择中间: 然后位号就居中了 调整字体大小&a…

微信小程序学习笔记(1)

文章目录 一、文件作用app.json:project.config.json:sitemap.json页面中.json 二、项目首页三、语法**WXML**和**HTML**WXSS 和CSS的区别小程序中.js文件的分类 一、文件作用 app.json: 当前小程序的全局配置,包括所有页面路径、窗口外观、…

文件的基础必备知识(初学者入门)

1. 为什么使用文件 2. 什么是文件 3. 二进制文件和文本文件 4. 文件的打开和关闭 1.为什么使用文件 我们写的程序数据是存储在电脑内存中,如果程序退出,内存回收,数据就丢失,等程序再次运行时,上次的数据已经消失。面…

每日复盘-20240607

今日关注: 这几天市场环境不好,一直空仓。 六日涨幅最大: ------1--------605258--------- 协和电子 五日涨幅最大: ------1--------605258--------- 协和电子 四日涨幅最大: ------1--------605258--------- 协和电子 三日涨幅最大: ------1--------0…

入侵报警系统的智慧核心——ARMxy工控机深度应用

智能安防领域高清视频监控、人脸识别门禁系统以及入侵报警系统的智能化升级,正以前所未有的速度推动着行业的变革。在这场变革中,ARMxy工业计算机以其卓越的性能、高度的灵活性及强大的集成能力,成为了众多安防解决方案中的核心组件。 高清视…

线程+线程池+锁

有合适延时代码会补充 线程 创建方式 1:继承Thread 2:实现Runnable接口 3:CallableFuture接口 方法介绍 sleep:Thread类静态方法 当前线程暂停执行指定时间,让出cpu,不释放对象锁,任何地方使用…

BC11 学生基本信息输入输出

BC11 学生基本信息输入输出 废话不多说上题目&#xff1a; 这道题表面上很简单&#xff0c;但是里面有很重要的点先给大家上正确的代码&#xff1a; #include<stdio.h> int main() {int stu 0;float c 0;float English 0;float math 0;scanf("%d;%f,%f,%f"…

3 数据类型、运算符与表达式-3.1 C语言的数据类型和3.2 常量与变量

数据类型 基本类型 整型字符型实型(浮点型) 单精度型双精度型 枚举类型 构造类型 数组类型结构体类型共用体类型 指针类型空类型 #include <stdio.h> #include <string.h> #include <stdbool.h> // 包含布尔类型定义 // 常量和符号常量 #define PRICE 30//…

AI大模型日报#0610:港大等1bit大模型“解决AI能源需求”、谷歌开源TimesFM时序预测模型

导读&#xff1a;AI大模型日报&#xff0c;爬虫LLM自动生成&#xff0c;一文览尽每日AI大模型要点资讯&#xff01;目前采用“文心一言”&#xff08;ERNIE 4.0&#xff09;、“零一万物”&#xff08;Yi-Large&#xff09;生成了今日要点以及每条资讯的摘要。欢迎阅读&#xf…

Jmeter分布式、测试报告、并发数计算、插件添加方式、常用图表

Jmeter分布式 应用场景 当单个测试机无法模拟用户要求的业务场景时&#xff0c;可以使用多台测试机进行模拟&#xff0c;就是Jmeter的分布 式测试。 Jmeter分布式执行原理 Jmeter分布测试时&#xff0c;选择其中一台作为控制机&#xff08;Controller&#xff09;&#xff0c…

Spring5

文章目录 1. Spring 是什么&#xff1f;2. IoC3. Spring Demo4. IoC 创建对象的方式 / DI 方式注入的默认参数在哪里设定? 5. Spring 配置tx:annotation-driven 用于启用基于注解的事务管理 6. Bean的作用域7. 在Spring中有三种自动装配的方式1. 在xml中显式的配置2. 在java中…

RAG:如何从0到1搭建一个RAG应用

通过本文你可以了解到&#xff1a; 什么是RAG&#xff1f;如何搭建一个RAG应用&#xff1f;目前开源的RAG应用有哪些&#xff1f; 大模型学习参考&#xff1a; 1.大模型学习资料整理&#xff1a;大模型学习资料整理&#xff1a;如何从0到1学习大模型&#xff0c;搭建个人或企业…

定个小目标之刷LeetCode热题(15)

这道题直接就采用两数相加的规则&#xff0c;维护一个进阶值&#xff08;n&#xff09;即可&#xff0c;代码如下 class Solution {public ListNode addTwoNumbers(ListNode l1, ListNode l2) {// 新建一个值为0的头结点ListNode newHead new ListNode(0);// 创建几个指针用于…

JAVA基础【String类】

在 Java 编程中&#xff0c;String 类是一个非常重要且常用的类&#xff0c;用于表示字符串对象。本文将详细介绍 Java 中的 String 类&#xff0c;包括定义、常用方法、不可变性特性以及字符串拼接等方面的内容。 1. String 类的定义与创建 定义 String 是 Java 中的一个类…

【C++初阶学习】第十三弹——优先级队列及容器适配器

C语言栈&#xff1a;数据结构——栈(C语言版)-CSDN博客 C语言队列&#xff1a;数据结构——队列&#xff08;C语言版&#xff09;-CSDN博客 C栈与队列&#xff1a;【C初阶学习】第十二弹——stack和queue的介绍和使用-CSDN博客 前言&#xff1a; 在前面&#xff0c;我们已经…

Android基础-自定义view

在Android开发中&#xff0c;自定义View是一个常见的需求&#xff0c;它允许开发者根据应用的具体需求创建独特的UI元素。自定义View可以极大地增强应用的用户界面和用户体验。下面将详细阐述Android中自定义View的方式和方法&#xff0c;包括基本的步骤、常见的技巧和一些深入…