APP下载

软件安全精品课程的攻防实践探索

2020-08-25彭国军张沪寅傅建明

计算机教育 2020年8期
关键词:漏洞软件体系

彭国军,张沪寅,傅建明,赵 磊

(武汉大学 国家网络安全学院,湖北 武汉 430072)

0 引 言

“软件安全”是网络空间安全学科信息安全专业的一门核心专业课程,目前国内很多高校都开设了该课程或相关课程(如恶意代码、软件漏洞等课程)。其对于学生理解并掌握安全攻防技术,提升创新实践能力与综合应用能力起到非常重要的作用。

1 课程建设存在的挑战及相关研究

软件安全本质上是人与人之间的对抗博弈,该类课程对学生基础要求高,建设难度和强度大,实践性很强,且技术更新较快,是该类课程建设的共识,相关院校在实践体系建设上均为此进行了积极研究和推动[2-5]。通过多年的教学实践,我们发现学生在课程学习过程中,面临多种学习思路上的转换和挑战。

(1)从前期基础课程学习的迷茫到进一步主动深入探索态度的转换。对于大部分高校信息安全专业来说,前两年课程涉及的安全类课程一般较少,导致部分学生认为前期基础课程对信息安全专业针对性不强、作用不大。因此,如何建立计算机基础课程知识到安全场景之间的桥梁,并促使学生进一步重新梳理知识体系,并在此基础上继续主动深入探索系统安全领域,成为课程面临的第一个问题。

(2)从正向构建思维到逆向析构思维的转变。在前期课程中,学生重点学习了如何编程、如何正向构建一个程序,而对于安全来说,探索未知是永恒的,小到一个程序样本,大到一个系统,他们需要构建逆向思维并掌握软件逆向分析的能力,对软件系统底层运作机制进行探索甚至修改。

(3)从计算机程序思维到人类对抗博弈思维的转变。软件安全本质上是人与人之间的博弈,除了理解二进制程序的计算机思维之外,学生还需要能够洞悉对抗者——人的行为与意图,并在此基础上形成对抗博弈思维。

(4)从程序高级语言到低级语言的转变。在前期学习中,大部分同学接触到的是如C、C++、Java、Python 等高级语言,而在软件安全的二进制世界中,对汇编代码的理解与应用成为大家发现、分析和解决问题的必备基础。

(5)需与时俱进拥抱变化。随着网络攻防博弈的不断升级,软件安全攻防知识也在不断更新,如何在保障构建相对稳定的课程知识体系的同时,又能与时俱进跟上时代发展,是学生学习和课程建设都不可逃避的一个现实问题。

一个社会的文明程度,或曰文明的繁荣程度,测量的指标有很多项,但最重要的一项,是社会的包容度。如果社会本身的包容足够宽广,则不用担心繁荣。——社会学家谈文明

此外,近年来目前高校专业课理论课时普遍缩减,如何解决专业课程学时缩减与学习内容增加的矛盾,也成为各门课程建设务必尽快解决的问题。

2 建设思路与措施

2.1 立足攻防对抗,构建相对稳定且具有攻防博弈特色的软件安全课程知识体系

信息安全的本质是攻防博弈,安全技术总是在攻防双方的不断博弈之中螺旋式上升。恶意代码与软件漏洞是网络攻防实战中的两大核心点,也被当做是目前网络空间对抗博弈的重要战略资源。另外,网络攻防知识更新快,但对于任何一门课程建设来说,需要有相对稳定的课程知识体系。因此,如何将攻防博弈理念融入到课程知识体系之中,同时保障课程知识体系能够拥有与时俱进的接纳与扩展能力,是该课程建设的首要任务。

基于前期的计算机病毒课程教学基础,通过梳理和凝练软件安全课程的知识点,结合《高等学校信息安全专业指导性专业规范》[6]的要求,构建该课程相对稳定又兼具新知识接纳和拓展能力的知识体系非常必要,为有效体现攻防博弈,在重要知识单元,一般应涉及多个回合(攻→防→攻,或防→攻→防)。譬如,本知识体系(如图1 所示)的攻防对抗全面体现在课程的三大知识单元[7]:恶意代码攻击→恶意代码分析检测→分析对抗,软件漏洞利用→漏洞利用检测→漏洞防护机制绕过,软件知识产权技术保护→软件破解→软件分析对抗。

图1 软件安全课程知识体系结构

2.2 立足专业基础实践引导,加强安全场景衔接

软件安全与操作系统、计算机组成原理、数据结构、编译原理、高级语言程序设计、汇编语言等课程基础都息息相关。软件安全基础部分覆盖了系统引导、CPU 工作模式、内存管理、磁盘管理、可执行文件格式、程序生成等,这些知识在前序课程都有所讲授,但都分散在不同的课程之中,学生在学习之时大多也未能将这些知识与软件攻防之间建立关联,他们与安全攻防之间隔着一层“窗户纸”。对于很多学生来说,软件安全可能是学生接触的第一门系统化的攻防类课程(譬如武汉大学2018 版培养方案将本课程安排在第5 学期开设)。为有效解决该问题并激发主动探索兴趣,可以设置课内及课外实践任务,以尽快捅破这层“窗户纸”,让学生尽快找到豁然开朗的感觉。表1 列出与基础相关联的典型安全场景或技术。

表1 基础知识单元与安全场景衔接引导

通过以上引导和关联,有助于学生快速理解专业基础知识的重要作用,并对系统安全进行更多主动探索。

2.3 立足攻防实践,有效构建学生安全知识结构与实践能力体系

学生的实践能力应当包含“软件逆向分析能力”与“系统正向构建能力”两个方面。前者通过“操作实践”来提升,后者通过“编程实践”来锻炼。

“操作实践”应该包括“系统机理验证”以及“样本逆向分析”两个层面,通过“系统机理验证”来增强学生对系统运作以及攻防机理的挖掘分析能力,通过“样本逆向分析”来提升学生对于网络攻击事件中新型恶意代码与软件漏洞样本的分析能力。

而通过“编程实践”锻炼,可提高学生快速构建和实施方案、解决问题的能力,有利于学生将软件安全知识转化为安全能力,并激励学生在不断的攻防实战中进行攻防博弈能力和思维的迭代更新。

本课程从操作实践和编程实践两方面着手,将攻防实践贯穿于整个课程之中。相关实践活动设置情况描述见表2。

以上所有实验实践环节分为“操作实践”和“编程实践”两大类型,分布在每周课后练习、挑战加分题及实验课程环节,后半学期进行软件攻防对抗大作业。

另外,要激励学生积极参加各类作品竞赛及技能竞赛,提升作品设计与竞技实战能力。在选题策划上,课程组可基于课程进度,适时导入课程组指导的往年竞赛优秀作品,并邀请CTF 竞赛参赛成员到课堂上分享竞赛解题思路及参赛经验,提升学生参赛实力与积极性。与此同时,通过国内举办的竞赛活动或作品展(如在我校每年主办的全国网络与信息安全防护峰会中设立“全国大学生信息安全竞赛优秀作品展”[8]),也可为学生提供向全国顶尖团队和作品进行现场学习和交流的机会。

表2 软件安全实践环节设置

(续)表2

2.4 与时俱进更新课程知识体系与实践体系

随着网络空间对抗博弈的加剧,软件安全攻防技术更新较快,同学们使用的操作系统版本和各类应用平台也在不断变化,他们也不断接触到一些新的攻击事件和思路,在参加高校和安全厂商组织的各类安全活动中,也会遇到一些新的技术挑战,课程应在现有知识体系架构下,做好课程新增知识点的完善与补充,以提升课程内容的实用性,增强学生的实战能力。需要注意的是,对课程体系的更新,并不是推翻原有课程体系,因为大部分新生技术依然是在现有体系下开枝散叶、在不断攻防博弈中推进演变的产物。对于课程体系更新而言,需要把握好软件攻防博弈螺旋上升的规律,并以“知识增量”激发学生在此攻防博弈规律下去探索新的攻防技术,并引导学生尝试挑战新的知识高度。

对课程体系的更新,应从知识体系与实践体系两方面多角度同时推进。在知识体系的基础部分,我们增加了UEFI 引导、GPT 分区、数字签名验证机制等(其对BOOTKIT、签名验证漏洞、网络攻击溯源等具有支撑作用),以及最新APT 案例分析;在恶意代码部分,增加了新型的病毒感染方式、控制权获取技术、蠕虫传播方式、木马实现技术与机制,以及机器学习与恶意代码检测、恶意代码溯源、威胁情报共享、恶意代码分析对抗,自动化分析平台构建等;在软件漏洞部分,新增了最新漏洞评分机制,新型的漏洞利用方法、漏洞案例、漏洞防护机制及绕过机制等,并结合全球安全会议最新技术趋势适当引入前沿技术。

在课程实践体系方面,一方面需要从优秀的网络攻防比赛中吸取精华[2],另外也可以根据最新恶意代码攻击手法和CVE 漏洞发布情况,及时重现攻击技术与漏洞,并纳入到课程体系中。譬如在恶意代码方面,我们引入针对数字签名PE文件的攻击载荷寄生技术,WinRAR ACE 释放漏洞(CVE-2018-20250),PE 文件数字签名证书检测绕过漏洞(CVE-2020-0601)等,在漏洞利用方面,我们进一步完善格式化字符串、栈和堆溢出实验,引入内存泄漏漏洞分析,FASTBIN、JITROP,以及沙盒逃逸等,进一步更新实践环节。

另外,需要促进学生更多了解和接触安全业界发展。课程组每周向学生推送软件安全领域最新事件与安全技术,通过积极与Intel、腾讯、安天、科锐等企业进行合作,引入企业优势师资、资源和需求,建立学生与产业界的沟通桥梁。

2.5 线上与线下教学相结合,有效提升学生课外学习效果,积极应对专业课理论课时缩减

专业课程理论课时压缩,成为各大高校普遍面临的问题(如在本校新版培养方案中,本课程理论课时从54 学时缩减到32 学时)。因此加强课堂引导,树立激励目标,激发学生兴趣,提升学生课后探索动力,成为增强课程教学效果的重要突破口。但除此之外,还需要为学生课后学习提供有效学习资源。基于MOOC 课程进行线上线下相结合的学习模式,是解决这一问题的有效手段之一。

2015 年,课程组在网易云课堂开设“软件安全之恶意代码激励与防护”课程[9]。2019 年,该MOOC 课程在校内珞珈在线平台上线[10],并首次采用线上教学与线下教学相结合的教学模式。我们在课堂中设立了部分课后学习挑战目标,以此来激励学生进行课后学习和探索。以2019 年上半年2016 级信安3-4 班,2017 级网安1-2 班为例,相关课程统计数据如表3 所示。

表3 珞珈在线平台软件安全MOOC 课程部分学习数据

经过进一步分析发现,学生对于具有挑战性的实践环节特别感兴趣,以“C4.2 手工替换程序图标”为例,该视频时长为4.8 分钟,该小节的在线学习最高反刍比达到1 017%,从此可以看出,在线MOOC 课程在解决课程部分知识难点方面,可起到明显支撑作用,有效提升了学生的课后学习效果。

3 实践效果、问题与后续建设思路

近年来,我们将以上教学思路和方法进行了积极实践,学生的专业兴趣和综合实践能力得到有效提升,大部分同学能够在课后进行积极主动探索,大部分同学在感受到课程压力和难度大的同时,也表示收获非常丰富。近4 年来,课程组的教学效果也得到了学生们的高度评价。如课程组负责人2016—2018 年3 年主讲该课程的学生评教结果中,教师得分分别为:98.84 分、99.64分、99.91 分,课程评价得分为:98.68 分、99.55分、99.55 分。在2019 年新版评教体系中,获得96.54 分(全校平均分为85 分)。另外,我们以课程实验成绩为基准选拔出优秀学生代表报名参加全国大学生信息安全竞赛和各类全国网络攻防比赛,也取得了不错的成绩。课程组在网易云课堂开设的“软件安全之恶意代码机理与防护”MOOC 课程,于2019 年获批2018 年国家精品在线开放课程,目前面向公众开课6 次,对华中科技大学、西安电子科技大学、南京邮电大学、华南理工大学、中国地质大学、杭州电子科技大学等兄弟院校的软件安全类课程开设起到相应的辐射作用。

但是,目前在我们进行软件安全精品课程的攻防实践探索过程中,还依然存在一部分问题。SPOC 模式的课程开设经验还存在不足,日常线上学习效果还需要更完善的评估方法;理论教材有待保持同步更新,缺少配套实验教材和与时俱进的实训系统等。基于此,下一步我们将着手推动理论教材的换版以及实验教材的编写,并推动在线课程实验建设。同时,我们也将欢迎全国更多高校同仁,与我们一起共同建设,并基于MOOC 课程进一步探索和完善SPOC 教学模式,以更好地辐射应用于兄弟院校。

猜你喜欢

漏洞软件体系
漏洞
TODGA-TBP-OK体系对Sr、Ba、Eu的萃取/反萃行为研究
禅宗软件
工业软件 自主创新
“三个体系”助力交通安全百日攻坚战
侦探推理游戏(二)
漏洞在哪儿
即时通讯软件WhatsApp
“曲线运动”知识体系和方法指导
视频、Office漏洞相继爆发