公务员期刊网 论文中心 正文

谈软件漏洞分析课程建设

前言:想要写出一篇引人入胜的文章?我们特意为您整理了谈软件漏洞分析课程建设范文,希望能给你带来灵感和参考,敬请阅读。

谈软件漏洞分析课程建设

摘要:本文从《软件漏洞分析》课程的建设目标、设计思路、内容设置、实验环境建设和教学模式等多方面对课程建设进行了探索,重点培养学生软件漏洞分析、漏洞利用和漏洞挖掘的能力。

关键词:软件安全;漏洞分析;漏洞利用;课程建设

1引言

软件漏洞是指存在于操作系统或应用程序中,可导致攻击者在未授权情况下获取或破坏系统数据的安全缺陷[1]。随着软件规模不断扩大,软件的开发、集成变得越来越复杂,新型应用软件数量急剧增加,导致软件产品在推出时总会存在很多对系统安全可靠运行构成严重威胁的软件漏洞[2];软件运行与开发环境已从传统的静态封闭状态转变为互联网环境下的动态开放状态,因此越来越多的软件漏洞和缺陷被发现[3]。如何发现和减少产品中的漏洞,提高软件产品的安全性,改善软件产品的质量是当前的重要课题。《软件漏洞分析》课程正是为了解决这一问题,培养软件安全人才而开设。通过《软件漏洞分析》课程建设,组建理论基础扎实、科研能力强和工程实践水平高的师资团队,构建培养学生软件漏洞分析、挖掘和利用基本能力的教学体系。本文从课程建设的目标、设计思路、内容设置、实验环境建设和教学模式与评价方法等方面开展了研究和探索。

2软件漏洞分析课程体系设置

2.1课程建设目标

依照教育部网络空间安全专业的人才培养目标,参考其他相关高校软件漏洞相关课程,建立了本课程的建设目标:(1)掌握常见软件漏洞产生的成因和基本原理,能够对常见软件漏洞进行分析。(2)掌握常见缓冲区溢出漏洞的利用方法,能够利用经典的缓冲区溢出漏洞。(3)掌握操作系统对软件漏洞的防范机制及对应的破解机制和方法。(4)掌握基本的漏洞挖掘机制和方法,能够运用不同的方法对多个漏洞软件进行漏洞挖掘。(5)理解软件漏洞发展的趋势,了解软件漏洞的前沿领域。(6)培养学生脚踏实地、认真严谨的工作风格;引导学生建立软件安全研究的正确价值观和职业道德伦理,同时增强学生遵纪守法的法律意识。

2.2课程设计思路

在高校的教学中,学生具备扎实计算机相关的理论基础,理解密码学、身份认证体系和PKI体系结构,同时具有一定的网络攻防能力,但对于具体的如何分析二进制文件中的漏洞,如何使用各种方法来利用程序中的漏洞了解得不多;学生比较熟悉使用各种现成的工具进行网络攻击和漏洞利用,但对于背后的原理及更深一个层次的理解和实践比较缺乏。因此需要系统学习软件漏洞的原理、监测、分析和利用等方面的知识,来掌握软件漏洞的相关知识体系;同时为了避免大偏的枯燥理论灌输,在《软件漏洞分析》的教学中需要引入大量的实践环节,开展多种教学形式,调动学生的积极性和探索主动性,实现理论与实践的结合,能够对软件漏洞有一个比较深入的认识。(1)强化“理论”基础,同时做到有的放矢。软件漏洞分析涉及汇编语言、操作系统、逆向分析、计算机组成原理、计算机系统结构等多方面的内容,同时包含不同的系统平台以及多种不同的软件漏洞类型,因此在选择内容时候需要做到有的放矢,有所取舍。本课程主要以Windows平台的软件漏洞为研究对象,重点学习Windows平台下栈溢出漏洞、堆溢出漏洞、整数溢出漏洞、格式化字符串漏洞的原理、分析和利用,Windows系统的漏洞防护机制的原理及对应破解方法;同时讲解Windows平台下的双重释放漏洞、数组越界访问漏洞和内核漏洞的原理;在对不同类型的漏洞进行分析时,突出对应各类软件漏洞产生原理的理解。(2)突出“实践”导向,培养学生的实践动手能力。在软件漏洞的学习上,注重对学生实践能力的培养。对每一种漏洞的理论,本课程都通过生灵活现的经典案例来加强理论的消化;从实际例子出发,通过动手分析、利用每一个漏洞样本程序来掌握理论知识。对于不同的漏洞类型,分别采用字符串定位、栈回溯、污点追踪、条件断点分析、函数定位、源码对比等方法来快速定位和分析漏洞,分析不同的漏洞成因,制定检测、利用和防御方案。(3)紧贴前沿领域,建立学生对新兴领域漏洞的自主学习基础能力。结合当前的技术发展趋势,课程对移动终端、云计算和物联网的漏洞软件进行介绍,同时结合具体的漏洞案例进行简要分析,帮助学生对最新的软件漏洞领域建立一个初步的理解和认识,为进一步学习对应知识打下基础。

2.3课程内容设置

按照软件漏洞学习实践能力的规律,按照层次递进的原则,将课程内容划分为9个大的模块。各模块主要知识点和课时安排如表1所示,课时安排为48个学时。每个模块中,每个知识点的内容具体如下:软件漏洞基础知识模块:软件漏洞基本概念主要讲解什么是软件漏洞、软件漏洞产生的原因、软件漏洞分析和利用的基本概念;PE文件格式主要讲解PE文件的各个组成部分以及各种内存地址之间的转换;必备分析工具讲解PEView、Ollydbg、immunityDebugger、Windbg、IDAPro和VMware等静态和动态分析工具软件;最后以一个具体的例子来演示这些软件的应用。栈溢出漏洞原理与利用模块:函数调用原理讲解函数调用过程中系统栈的变化和相关寄存器的作用;栈溢出机制讲解为何存在栈溢出,以及其系统栈的变化;栈溢出利用讲解当存在栈溢出漏洞时,如何编写代码控制程序的流程。堆溢出漏洞原理和利用模块:先讲解Windows堆管理的数据结构和策略,以及堆的分配、释放、合并等操作;然后学习堆链表拆卸中可能出现的问题,以具体例子调试和体会堆溢出的利用和攻击。ShellCode模块:Shellcode概念部分解释其处于软件漏洞中的哪一个环节,以及其要解决的问题;Shellcode开发讲解如何开发基本的shellcode程序,如何利用跳板开发shellcode,以及如何开发通用平台的shellcode;Shellcode优化讲解如何对shellcode进行编码和解码,如何尽量开发占用小空间的shellcode;基于MetaSploit的Shellcode讲解通用测试平台下shellcode的开发、和使用。其他内存攻击技术模块:基于结构化异常处理的攻击讲解Windows的异常处理机制,以及如何在栈和堆溢出漏洞下利用异常处理机制进行攻击;基于虚函数的攻击讲解如何利用软件类中的虚函数实现漏洞攻击;Heapspray技术讲解如何利用堆喷射技术实现系统攻击,同时会结合栈和堆溢出漏洞利用技术。其他类型软件漏洞模块:基于条件记录断点的漏洞分析方法学习整数溢出漏洞的原理和利用;基于输出消息定位漏洞的方法学习格式化字符串漏洞的原理和利用;基于栈回溯和补丁比较的方法学习双重释放漏洞的原理和利用;基于源代码对比与跟踪的方法学习数组越界漏洞。根据不同漏洞的特点,介绍多种不同的漏洞分析方法和利用方法[4-5]。Windows安全机制模块:讲解Windows采用的各种安全机制的实现原理,包括GS、SafeSEH、DEP、ASLR和SEHOP机制;针对每一种安全机制,介绍多种突破限制的方法,及如何利用这些漏洞。漏洞挖掘模块:基于存在漏洞的FTP、SMTP服务器,介绍fuzz技术如何挖掘在这些服务器中的漏洞;同时基于已有的漏洞多媒体播放软件,学习fuzz方式下如何挖掘文件类型漏洞。在挖掘漏洞的基础上,掌握如何快速定位、分析和利用漏洞。

2.4漏洞分析实验环境建设

漏洞分析实验环境是整个教学中重要的部分。由于市面上没有合适的Windows平台下漏洞分析实验平台,因此根据课程的教学内容,基于VMwareWorkstationPlayer虚拟机搭建了课程的实验平台。在虚拟机中根据实验环境需要,动态地导入对应的Windows操作系统,构建相应的模拟仿真实验环境。

2.5教学模式探讨

(1)案例教学法,激发学生学习兴趣。该课程理论性和实践性都很强,如果只是单纯的理论讲解,很容易陷入一知半解的境地,需要实践才能对讲授的理论有清晰和深刻的理解和体会。因此在教学过程中,每一章的每一个知识点的学习都通过案例进行演示来加深对知识的掌握程度。知识点的学习分为四个阶段:理论讲解、实践演示、学生实践操作和课后作业,阶段之间是层级递进的关系。首先教师讲解知识点的理论,以及涉及到的工具软件;然后教师通过具体的例子,一步一步地演示理论内容;接着通过实验,让学生自己动手操作实现一遍对应的例子来体会知识点;最后布置对应的课后作业,要求学生对不同的例子进行分析,通过举一反三,加深对知识点的理解和掌握。(2)翻转教学法,培养学生探索精神。在教学中,讲解完某一种类型的漏洞知识点后,教师提供一个具体类型的CVE编号,让学生自己组队,从网上收集资料,分析该漏洞的成因、机理、利用方式和修复机制;在下一次课堂上,挑选两个队上台讲解作业结果,分享他们的心得,其他学生在台下提问及交流。通过这种翻转教学法,调用学生的学习积极主动性,培养自由探索和钻研的精神。(3)灵活的考核方式,培养学生的创新能力。考核主要包含平时成绩和期末大作业成绩,其中平时成绩60%,期末成绩40%。平时成绩主要由平时出勤、课堂表现、课后作业完成情况、分组案例讲解等四部分构成。其中平时出勤占10%,课堂表现占10%,主要考核上课学习态度和课堂回答问题的情况;课后作业完成情况占20%,分组案例讲解占20%,这两部分主要考核学生对于知识点的掌握程度,以及课后的参与度。期末考试成绩以大作业的形式开展,要求学生完成一份有一定难度的大作业,题目自选,可以是对已知漏洞的分析、利用和修复报告,也可以是对Web和二进制软件的漏洞挖掘实践,根据完成报告的难度给定分数。同时对于参加网络信息安全竞赛的同学,比赛的获奖成绩也可以作为期末大作业来提交。

3总结

本文构建了软件漏洞分析课程体系,在讲解漏洞相关基本理论的基础上,紧紧围绕实践进行教学组织。通过案例教学、翻转课堂和灵活的考核方式来培养学生的软件漏洞分析实践创新能力。

参考文献

[1]黄烨烽,王嘉捷,杨轶.有限资源条件下的软件漏洞自动挖掘与利用.计算机研究与发展,2019,56(11):2299-2314

[2]曹晓梅,朱枫,沙乐天.“软件漏洞分析与防范”课程建设.软件导刊,2018,3(17):217-220

[3]傅建明,彭国军,严飞.软件安全课程教学方法探究.软件导刊,2020,19(2):226-229

[4]王清,张东辉,周浩,等.0day安全:软件漏洞分析技术.第2版.北京:电子工业出版社,2011

[5]林桠泉.漏洞战争.北京:电子工业出版社,2016

作者:彭碧涛 王常吉 罗海蛟 单位:广东外语外贸大学网络空间安全学院