1 课程设计任务书
1.1 课程设计目的
本次课程设计为了巩固上学期在软件安全课程上所学的安全知识,包括堆栈溢出、整数溢出等等,同时考察了一些课外的新事物,例如字符串匹配与CFG控制流程图的同源性检测。根本目的是让同学们加深对软件安全本门学科的理解和深入的实践。
以下是本次课设的具体目的:
l 对代码的同源性检测,分为字符串匹配和CFG的检测,在于考察学生自我解决问题的能力,包括自己查找文献,根据文献提炼思想,再将思想转化为实际代码的能力。
l 对于漏洞的检测,包括几种不同类型的漏洞种类,这要求学生对于每种漏洞的特征做一个总结,通过静态分析的方式将代码中可能隐藏的漏洞发掘出来。
1.2 课程设计要求
本次课程设计要求设计与完成从界面、算法到系统优化等各个环节内容,形成完整的软件系统。在任务中,必做部分为R1-R6,是所有同学必须完成的部分,是本课程设计考核合格所需要的基本构成,选做部分根据自己的擅长做出最好的成果。
具体任务如下:
序号
|
任务(必须完成的)
|
要求
|
R1
|
提供系统界面
|
所有功能要有图形界面展示,形成完整的软件系统.可以使用VS/QT/Python等工具实现。
|
R2
|
利用字符串匹配进行同源性检测
|
通过代码有效字符串对比匹配,分析样本之间的拷贝比率
|
R3
|
利用控制流程图CFG进行源代码同源性检测
|
通过提取代码的调用关系图,检测样本之间各个函数调用关系图是否相似,得出相似的概率
|
R4
|
栈缓冲区检测
|
根据栈缓冲区原理分析分配的栈数据区是否存在溢出的问题,给出可疑代码行数与列数。
|
R5
|
格式化字符串漏洞检测
|
根据格式化字符串漏洞原理分析使用的格式化函数是否存在溢出的问题,给出可疑代码行数与列数。
|
R6
|
提供样本库
|
提供漏洞检测与同源性检测样本库,样本数量不少于10个,每个代码行数不少于100行;每种漏洞至少一个。
|
以下为2选1:
|
A1
|
跨语言同源性检测验证
|
在软件版权保护中,有时候需要检测是否参考了有版权的代码,换用一种语言实现同样的功能,本功能可以通过CFG检测实现,但需要给出4个以上不用语言的同源性分析样本。
|
A2
|
支持分布式任务调度
|
需要设计一个主控,多个进程/主机并发检测。
|
以下为6选4:
|
B1
|
堆缓冲区检测
|
根据堆缓冲区原理分析分配的数据区是否存在溢出的问题,给出可疑代码行数与列数。
|
B2
|
整数宽度溢出检测
|
根据整数宽度溢出原理分析分配的数据是否存在溢出的问题,给出可疑代码行数与列数。
|
B3
|
整数运算溢出检测
|
根据整数运算溢出原理分析分配的数据是否存在溢出的问题,给出可疑代码行数与列数。
|
B4
|
整数符号溢出检测
|
根据整数符号溢出原理分析分配的数据是否存在溢出的问题,给出可疑代码行数与列数。
|
B5
|
空指针引用
|
根据课堂学习其它溢出原理是否存在空指针引用的问题,给出可疑代码行数与列数。
|
B6
|
竞争性条件
|
给出竞争性条件存在的代码位置。
|
以下2选1:
|
C1
|
同源性检测样本库
|
样本数大于等于50个,每个代码行数不少于100行,包含1-100行相同代码。
|
C2
|
漏洞检测样本库
|
样本数大于等于50个,每个代码行数不少于100行;每种漏洞至少一个。
|