课程名称 |
软件安全实验 |
Experiment of Software Security |
开课单位 |
计算机学院 |
课程性质 |
必修课 |
课程类别 |
实践环节 |
课程代码 |
210731102701 |
学分 |
1 |
学时 |
22 |
适用专业 |
信息安全 |
先修课程 |
程序设计基础 |
支撑课程 |
软件安全 |
授课语言 |
中文 |
一、课程简介
(一)课程中文简介
软件安全实验是针对《软件安全》理论课程的实践课程。要求学生在教师的指导下,充分利用所学的软件安全的开发模型、软件安全需求分析、软件安全设计、威胁建模、常见软件漏洞原理分析等方面的内容,通过实验的具体代码分析、软件安全分析与设计的复杂问题的研究,加深学生对软件具体代码中的缓冲区溢出漏洞、整型溢出漏洞、格式化串漏洞的分析理解,加强软件安全生命周期中软件安全需求分析和软件安全设计的实践能力,同时培养和锻炼学生的逻辑思维能力、分析设计能力。
(二)课程英文简介
Software security experiment is a practical course for the theory course of software security. Under the guidance of teachers, students are required to make full use of the software security development model, software security requirements analysis, software security design, threat modeling, common software vulnerability principle analysis and other aspects of the content. Through the experiment of specific code analysis, software security analysis and design of complex problems, the students can deepen on the understanding of software buffer overflow, integer overflow vulnerability and format string vulnerability ,strengthen the practical ability of software security requirement analysis and software security design in the software security life cycle, and improve the logical thinking ability, the analysis and design ability.
二、实验课程目标
本课程的目标包括:
CO1:熟练掌握Codeblocks等集成开发环境的调试跟踪方法,跟踪、分析代码漏洞,培养动手能力。
CO2:分析缓冲区溢出、格式化串、整型溢出、XSS等软件编码漏洞的现象和原理,领会软件编码漏洞可能给软件带来的危害,改进并了解安全的编码方式,提高安全编码的意识。
CO3:具备初步的软件安全分析设计能力,针对软件工程复杂问题,培养运用软件安全设计方法进行软件安全需求分析、软件安全设计和威胁建模的分析和设计能力。
课程目标与所支撑的毕业要求指标点的对应关系如下表所示。
适用专业 |
毕业要求内涵观测点 |
课程目标 |
信息安全 |
GR4.2能够基于专业理论和方法,根据特定信息安全需求,采用适合的技术路线,研发可行的实验方案。 |
CO2 |
GR4.4能够分析实验数据,通过信息综合进行归纳总结得到合理有效的结论 |
CO1 |
GR5.2能利用相关资源、选用相应的工具、对网络及信息安全系统进行模拟、设计、分析。 |
CO3 |
三、实验内容与要求
软件安全实验是信息安全专业重要的实践环节。要求学生验证并分析整型溢出、缓冲区溢出、格式化串等常见的软件安全漏洞,在软件开发的实践中完成软件安全需求分析、软件安全设计和软件安全编码。
(一)实验设计(实验类型及内容)
验证性
验证Debug调试的范围、方法和步骤;验证缓冲区溢出、整型溢出、格式
化串漏洞的代码和原理。
综合性
综合已有专业领域的知识,针对复杂软件系统进行总体设计,并充分考虑
软件系统的安全性。
设计研究性
针对复杂软件系统的软件安全需求分析和威胁建模进行分析、设计和研究。
实验课程目标 |
实验模块(可选) |
对应实验 |
CO1 |
模块1 |
实验1 |
CO2 |
模块2 |
实验2、实验3、实验4 |
CO3 |
模块3 |
实验5、实验6 |
(二)实验内容及要求
编号 |
实验项目 |
学时数 |
实验内容 |
实验类型 |
实验要求 |
1 |
Debug调试 |
4 |
熟悉Codeblocks的debug方法;验证整型溢出 |
验证性 |
必做 |
2 |
缓冲区溢出 |
4 |
掌握代码中缓冲区溢出的分析 |
验证性 |
必做 |
3 |
XSS漏洞分析 |
4 |
掌握XSS漏洞的分析 |
验证性 |
必做 |
4 |
格式化串漏洞 |
4 |
掌握格式化串漏洞的分析 |
验证性 |
必做 |
5 |
软件安全需求分析 |
4 |
给定软件系统的安全需求分析;给定软件系统的威胁建模 |
设计研究性 |
必做 |
6 |
软件安全设计 |
2 |
进行给定软件系统的安全设计 |
综合性 |
必做 |
四、实验设备与环境配置
1. 计算机:Intel Core2 Duo E4300 1.8GHZ、内存512MB、硬盘15GB以上。
2.开发环境:Codeblocks 10.05以上,或Visual C++6.0,或Visual Studio 2008以上。
3. 实验题目及结果:学生根据教师指定题目进行实验,由指导教师判定实验结果。
五、课程思政、创新创业元素
教学章节 |
知识点 |
思政元素案例 |
培养目标 |
备注 |
实验1 |
整型溢出 |
整型溢出造成的风险分析 |
学生应遵从软件安全编码行为规范。 |
|
实验2 |
缓冲区溢出 |
缓冲区溢出造成的风险分析 |
学生应遵从软件安全编码行为规范。 |
|
实验4 |
格式化串漏洞 |
格式化串漏洞造成的风险分析 |
学生应遵从软件安全编码行为规范。 |
|
实验5 |
软件安全需求分析 |
需求分析中的安全性因素 |
作为软件从业人员应具有软件安全保障的责任意识。 |
|
实验5 |
威胁建模 |
软件系统的各种安全威胁报告 |
提高软件分析和设计的安全风险意识 |
|
实验6 |
软件安全设计 |
软件设计中的安全性因素 |
学生应具有独立的和严谨的科研精神、勇于创新。 |
创新创业案例 |
六、主要参考资料
[1]陈波,于泠.软件安全技术[M].中国:机械工业出版社,2018.
[2]彭国军等.软件安全[M].中国:武汉大学出版社,2015.
七、考核方式、方法及实验成绩评定方法
考核成绩可以采用五级制。实验1-实验6实验的平均成绩占总成绩的50%;大作业成绩占总成绩的50%;
实验成绩=实验成绩=实验1-实验6平均成绩×50% +大作业成绩×50%
(一)评分标准
考核 环节 |
<60 (不及格) |
60-69 (及格) |
70-79 (中等) |
80-89 (良好) |
90-100 (优秀) |
实验 |
实验过程中不能完成实验要求,不能得到正确的实验结果,不能从技术角度优选解决方案获得有效的结论 |
实验过程中认真完成实验要求,不能得到正确的实验结果,实验报告格式正确,步骤叙述清楚,没有正确分析实验数据,但是结合理论分析可以从技术角度优选解决方案获得有效的结论 |
实验过程中认真完成实验要求,得到正确的实验结果,实验报告格式正确,步骤叙述比较清楚,正确分析实验数据,从技术角度能够提出解决方案获得比较完整的结论 |
实验过程中认真完成实验要求,得到正确的实验结果,实验报告格式正确,步骤叙述比较清楚,正确分析实验数据,从技术角度优选解决方案获得比较有效的结论 |
实验过程中认真完成实验要求,得到正确的实验结果,实验报告格式正确,步骤叙述清楚,正确分析实验数据,从技术角度优选解决方案获得有效结论 |
大作业 |
针对复杂软件系统的分析、设计出的系统需求不完善,设计功能不能满足要求,方案不完整、不合理 |
针对复杂软件系统的分析、设计出的系统需求比较完善,设计功能基本能满足要求,方案存在不完整、不合理的地方 |
针对复杂软件系统的分析、设计出的系统需求比较完善,设计功能能满足要求,方案比较完整、比较合理 |
针对复杂软件系统的分析、设计出的系统需求完善,设计功能能满足要求,方案完整、比较合理 |
针对复杂软件系统的分析、设计出的系统需求完善,设计功能能满足要求,方案完整、合理,充分 |
(二)实验项目(或考核环节)权重
实验项目(或考核环节) |
CO1 |
CO2 |
CO3 |
实验 |
100% |
100% |
50% |
大作业 |
|
|
50% |
|
100% |
100% |
100% |
撰稿人:刘海霞
审核人:廉文娟
批准人:廉文娟