赵 磊,彭国军,刘 丹,王丽娜
(武汉大学 国家网络安全学院,湖北 武汉 430070)
在2018年第十一届“中国大学教学论坛”中,教育部高等教育司吴岩司长指出,中国大学要建设高阶性、创新性和挑战度的金课[1],要求课程内容有前沿性和时代性,具有一定的挑战度,课程教学要做到知识、能力、素质的有机融合,培养学生解决复杂问题的综合能力和高级思维。
以高阶性、创新性和挑战度为建设目标,笔者结合多年来的教学和指导学生参加全国网络攻防赛的经历,以“以赛促教、以赛反哺课程内容”为主要思路,提出软件安全课程创新性和实践性建设方法。
软件安全是网络空间安全相关专业的核心专业课程之一,旨在通过讲授软件执行机理、软件漏洞的成因、恶意代码的基本原理、软件逆向分析技术、安全测试等基础知识[2],培养学生逆向思维和系统安全防护能力,同时,结合软件安全配套实验,提高学生的动手实践能力,培养学生解决复杂问题的综合能力和高级思维。
以计算机和互联网为基础的信息系统是网络空间的基础组成部分,而软件是信息系统的灵魂。自“莫里斯蠕虫”以来,软件安全已有30多年的历史,一直是学术界和工业界的热点问题,以软件漏洞、恶意代码为代表的软件安全威胁一直占据全球网络安全威胁排行榜前3的位置。
受课程背景的影响,软件安全课程具有很强的创新性、实践性等需求,课程建设面临诸多挑战,主要包括以下几方面。
(1)从近年来曝光的各类安全事件来看,各种攻击手段防不胜防。究其原因,软件安全面临着“道高一尺,魔高一丈”的状态,新的安全技术不断出现。这就要求课程建设具有创新性,及时吸纳先进的研究成果,淘汰过时内容。
(2)软件安全的前序课程较多,与计算机体系结构、编译原理、汇编语言、操作系统等多门课程都密切相关,对学生的计算机系统能力有很高要求。这就要求课程内容应引导学生做到从计算机系统硬件到软件、从底层到应用层等的深入理解。
(3)作为一门实践性强、动手能力要求高的课程,软件安全课程内容不能局限于理论与方法,要能够贴合当前的产业发展和实战需求,培养学生的实践能力。
综上几个方面,软件安全课程内容复杂且关联性强,课程内容及其配套实验的创新性和实践性建设对任课老师提出非常大的挑战。
网络攻防赛源自于国际网络安全夺旗赛(简称为CTF比赛),以模拟网络攻防实战为手段培养网络安全技术人才,能够极大地提高信息安全及相关专业学生的动手及实战能力,弥补传统课堂教学、课程实验等“重理论、弱技术”的缺陷,在快速和持续提升学生专业兴趣和学生网络安全实战能力方面具有明显优势[3]。
与其他信息安全技术比赛相比,网络攻防赛的最大特点是技术的实战性。就目前的比赛形式来看,比赛模式基本上分为两种:①在解题模式(jeopardy)的CTF赛制中,参赛队伍可以通过互联网或者现场网络参与,与ACM编程竞赛、信息学奥赛等赛制类似,以解决网络安全技术挑战题目的分值和时间来排名,通常用于在线选拔赛;②在攻防模式(attack with defense)中,参赛队伍在封闭的虚拟仿真环境下通过挖掘服务漏洞并攻击对手服务来得分,通过修补自身的服务漏洞进行防御以避免丢分,竞争激烈,具有很强的观赏性和高度透明性。同夺旗赛相比,攻防比赛额外考查系统防护能力,同时,不仅考查参赛队员的智力和技术,还考查团队之间的分工与合作。
网络攻防赛在国际上已经有了很多年历史,一直以来都被作为考查参赛队员动手能力和综合实战能力的重要方式,并且在创新性、前沿性、实践性等方面具有明显的优势,主要体现在以下几方面。
(1)创新性。网络攻防赛属于给定题目的竞技类赛事,每次比赛均会重新设计题目,不仅考查经典的基础理论和技术,还包含最新的学术论文和研究成果,具有创新性。
(2)前沿性。网络攻防赛题目通常由高校和企业专家设计,来自产业界的题目通常能够反映最实际的产业界需求,具有更高的前沿性。例如,以企业监控所得的网络流量为对象,可考查学生的安全分析和取证能力,而这些数据是高校很难获得的。
(3)实践性。网络攻防赛以模拟网络攻防实战为手段,重点考查学生利用专业知识解决实际问题的能力,强调动手和时间。
可以发现,网络攻防赛能够很好地提高信息安全及相关专业学生的动手及实战能力,弥补传统的课堂教学、课程实验等“重理论、弱技术”的缺陷,理应作为一种很好的促学促教手段,完善教学及课程建设。
网络攻防赛所考查的能力比较全面,所设置的比赛题型大致分为以下5类(见表1):密码分析类、Web安全类、数字取证类、软件逆向分析类、漏洞挖掘及漏洞利用类,所考查的知识点分布在多门相关的专业课程中,涉及密码学、操作系统原理及安全、数据库原理及安全、网络安全、软件安全、信息隐藏等。
由表1可见,网络攻防赛定位于一种对学生信息安全综合能力的考查和拔高。考虑到网络攻防赛的优势,有高校已经把网络攻防赛作为主要内容开设网络攻防课程[4-5],然而,网络攻防课程内容可能会与其他相关课程内容重复。针对这一问题,“以赛促教、以赛反哺课程内容”的课程建设方法,以专业培养方案和课程教学大纲为核心,针对性地梳理网络攻防赛所考查的技术能力,凝练其背后的基础理论与知识,遴选具有创新性的知识点和相关实验素材,完善教学大纲,更新课程内容及配套实验。按照此方法,既能够吸收网络攻防赛在实践能力培养方面的优势,又能够更新课程内容,保持课程内容的创新性和时效性。
表1 网络攻防赛知识点所涉及的相关专业课程
笔者自2014年起主讲软件安全及其配套实验课程,自2015年起指导大学生参与全国网络攻防赛。结合自身教学经历和指导学生参加网络攻防赛的经验,以软件安全课程为对象,提出的“以赛促教、以赛反哺课程内容”的软件安全课程创新性和实践性建设方法如图1所示。
图1 “以赛促教、以赛反哺课程内容”的软件安全课程建设方法
首先,结合专业培养方案和教学大纲,以网络攻防赛为导向,优化课程内容和实验建设,培养学生实践能力;其次,基于课程考核及实验完成情况,选拔优秀学生参加比赛,并根据学生参赛经历形成反馈;最后,梳理网络攻防赛所考查的知识与能力,凝练创新点,更新课程内容和配套实验。课程建设方法按照“选拔优秀学生参加网络攻防赛”“赛后题型剖析”“知识点梳理”“更新教学内容”“鼓励学生做教辅参与教学”等步骤实现年度的软件安全课程内容迭代和更新。经过2015—2018年的探索,武汉大学软件安全课程建设共改造和吸收了来自网络攻防赛的9个知识点和相关实验,总的实验达到32学时,具体的更新知识点见表2。
结合武汉大学信息安全专业的培养方案和教学大纲,软件安全课程的知识点共包括8个单元。其中,知识单元1和2为本门课程基础性的前导课程单位。对比表1和表2可以发现,网络攻防赛中软件逆向分析、漏洞挖掘及漏洞利用两类题型考查的知识点和技术能力与软件安全课程的多个知识单元密切相关。
以表2中的JIT-ROP漏洞分析为例,该题目源自2015年上海市信息安全行业协会承办的ISG信息安全技能竞赛,题目所考查的知识点源自2013年发表在国际顶级学术会议IEEE Symposium on Security & Privacy的学术论文[6]。该论文提出了一种利用内存泄漏漏洞可同时绕过操作系统DEP保护和ASLR保护的漏洞利用方法,具有非常强的创新性。
在梳理题目背后的知识点后,对比分析之前的软件安全课程大纲,可以发现课程知识点中涵盖DEP保护和ASLR保护的原理,以及两者对缓冲区溢出漏洞的抑制作用。此学术论文提出了全新的漏洞利用方法,指出DEP保护和ASLR保护的不完善之处,对之前课程内容是一个很好的补充,因此将该学术论文提出的JIT-ROP漏洞分析方法更新到课程内容,同时将该赛题经过改造后吸收进课程实验,仅作为培养学生实践能力的素材,不作其他用途。
此次课程内容的更新,既能够吸收JIT-ROP漏洞分析的创新性优势,保持课程内容的前沿性和时效性,同时又让学生学习前沿技术并付诸实践,提高动手能力和实践水平,为此后的网络攻防赛奠定基础。
依据“以赛促教、以赛反哺课程内容”的课程建设方法,经过2015—2018年的探索,课程教学取得良好效果;同时,以课程实验成绩为基准选拔出优秀学生代表报名参加全国网络攻防比赛,也取得了不错的成绩。
根据课程结束后的课程评议,“课程难却收获颇丰”“既有理论,又能锻炼动手能力”等成为大部分学生的课程总结感想。现摘录学生对本门课程的代表性评议如下。
“课程任务重,从没有这么复杂的课,但是另一方面也督促自己独立思考,能在课上学到很多知识”。
“这学期实验课,一节课一个实验,一次实验虽然只安排了4学时,但基本上课上做不完,有的课下需要做好几天。不过是真的学到了东西”。
“全部的实验做下来让我重新理解了计算机系统结构、计算机组成原理、操作系统等基本原理,就应该有大量的实践”。
“这次软件安全实验让我深刻感受到自己学到了新的知识,学习能力得到了锻炼。这一整个过程中,虽然遇到了许多问题,但是在查找资料并解决问题之后,逐步对之前学过的很多概念有了更加清晰的理解,有很大的成就感”。
“我们逐渐融会理解了计算机系统、软件安全课程中所学的知识,它们不再是课本或PPT中难以理解的一句句话或一行行代码,而是一个软件中鲜活的一部分,这次实践仍然让我们收获颇丰”。
课程授课对象为三年级本科生。在课程结束后,优秀本科生会被推荐参加全国性质的网络攻防类竞赛,其中代表性的比赛有“XCTF全国大学生网络安全能力联赛”“全国大学生信息安全竞赛——实践能力赛”等。每年级的参赛人数一般在6~20人。
得益于课程内容的前沿性和实践性,武汉大学学生代表队在过去的几年里一直保持较高水平,获得了优异成绩,所获奖项见表3。
在“深入学习贯彻全国教育大会精神,全面振兴本科教育”的时代背景下,高等学校课程建设面临着前沿性、创新性、挑战性等新需求。我们结合多年来在课程建设和专业竞赛指导方面的经验,提出“以赛促教、以赛反哺课程内容”的课程建设方法。按照此方法,软件安全课程创新性与实践性建设取得了良好的教学效果,既吸收了网络攻防赛在实践能力培养方面的优势,又更新了课程内容,保持课程内容的创新性和时效性。在下一步的工作中,我们将结合密码学、网络安全等专业课程内容,继续开展以网络攻防赛为导向的课程建设,以此增强其他专业课程的创新性与实践性,进一步提高学生的实践动手能力。
表3 武汉大学学生代表队的获奖成绩