曹曉梅 朱楓 沙樂天
摘要:
我國網(wǎng)絡(luò)空間安全面臨嚴(yán)峻考驗(yàn),軟件漏洞是其根源之一,因而培養(yǎng)掌握漏洞分析與挖掘技術(shù),具備扎實(shí)安全編程技能的信息安全人才刻不容緩?!败浖┒捶治雠c防范”是信息安全專業(yè)本科生的一門專業(yè)課,根據(jù)課程特點(diǎn)在教學(xué)內(nèi)容安排上注重與時(shí)俱進(jìn)、理論結(jié)合實(shí)踐,培養(yǎng)學(xué)生的動(dòng)手能力,同時(shí)采用案例式教學(xué)和基于競(jìng)爭(zhēng)機(jī)制的啟發(fā)式教學(xué),以增強(qiáng)學(xué)生的學(xué)習(xí)主動(dòng)性和創(chuàng)新能力。實(shí)踐證明,課程建設(shè)取得了良好效果,學(xué)生的專業(yè)知識(shí)水平和綜合能力得到了較大提高。
關(guān)鍵詞:
軟件安全;漏洞分析;漏洞挖掘;安全編程;課程建設(shè)
DOIDOI:10.11907/rjdk.172504
中圖分類號(hào):G434
文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào)文章編號(hào):16727800(2018)003021704
英文摘要Abstract:China′s cyberspace security is facing a severe test and software vulnerability is one of the root causes. It is urgent to cultivate information security talents who master vulnerability analysis and mining technology, and can fundamentally improve software security in the process of development. Software vulnerability analysis and prevention is a specialized course for undergraduates majoring in information security. According to the characteristics of the course, the arrangement of the teaching content emphasizes on keeping pace with the times, combining theory with practice, and cultivating students′ practical ability. Case based teaching and heuristic teaching based on competition mechanism are adopted to enhance students′ initiative and creativity. Practice has proved that the construction of the curriculum has achieved good results, and the level of students' professional knowledge and comprehensive ability has been effectively improved.
英文關(guān)鍵詞Key Words:software security; vulnerability analysis; vulnerability mining; security programming; course construction
0引言
軟件是計(jì)算機(jī)系統(tǒng)的靈魂、信息化的核心以及互聯(lián)網(wǎng)應(yīng)用的基石?,F(xiàn)代社會(huì)對(duì)信息系統(tǒng)的依賴主要體現(xiàn)為對(duì)軟件的依賴,信息系統(tǒng)缺陷在很大程度上是因?yàn)檐浖栴}產(chǎn)生的。隨著軟件規(guī)模不斷擴(kuò)大,軟件的開發(fā)、集成變得越來越復(fù)雜,新型應(yīng)用軟件數(shù)量急劇增加,導(dǎo)致軟件產(chǎn)品在推出時(shí)總會(huì)存在很多對(duì)系統(tǒng)安全可靠運(yùn)行構(gòu)成嚴(yán)重威脅的軟件漏洞。與此同時(shí),軟件運(yùn)行和開發(fā)環(huán)境從傳統(tǒng)的靜態(tài)封閉狀態(tài)變?yōu)榛ヂ?lián)網(wǎng)環(huán)境下的動(dòng)態(tài)開放狀態(tài),越來越多軟件漏洞被發(fā)現(xiàn)與利用,惡意代碼急劇增加,且傳播速度大大加快。軟件安全面臨著前所未有的嚴(yán)峻挑戰(zhàn),對(duì)我國網(wǎng)絡(luò)空間安全甚至國家安全造成巨大威脅[1]。不論是對(duì)于國家的國防和基礎(chǔ)設(shè)施建設(shè),還是國民經(jīng)濟(jì)、百姓生活各個(gè)方面,都迫切需要具有高度安全意識(shí),精通軟件漏洞挖掘和分析技術(shù),能在開發(fā)全過程中從根本上提高軟件安全性的信息安全應(yīng)用型人才。
在教育部信息安全專業(yè)類教學(xué)指導(dǎo)委員會(huì)于2010年提出的《信息安全類專業(yè)的專業(yè)指導(dǎo)規(guī)范》[2]中,信息安全學(xué)科的研究方向被分為密碼學(xué)、網(wǎng)絡(luò)安全、信息系統(tǒng)安全和信息內(nèi)容安全,軟件安全隸屬于信息系統(tǒng)安全,是信息安全專業(yè)的核心和主干課程之一。目前,國內(nèi)數(shù)所開辦信息安全專業(yè)的高校開設(shè)了軟件安全相關(guān)課程,如武漢大學(xué)、北京郵電大學(xué)、中國地質(zhì)大學(xué)的“軟件安全”,中國科學(xué)技術(shù)大學(xué)的“軟件安全與測(cè)試”,中南大學(xué)的“安全編程技術(shù)”,華中科技大學(xué)研究生課程“漏洞分析與發(fā)現(xiàn)技術(shù)”等,但整體而言,相比于密碼學(xué)和網(wǎng)絡(luò)安全領(lǐng)域較為成熟的信息安全專業(yè)課程,軟件安全類課程尚屬新興課程,對(duì)這類課程教學(xué)內(nèi)容、教學(xué)方式、教學(xué)效果等方面的綜合研究仍處于初級(jí)階段。
南京郵電大學(xué)是江蘇省高校中最早設(shè)置信息安全專業(yè)的學(xué)校,2002年開始招收本科生,2007年被教育部評(píng)定為國家特色專業(yè),在密碼學(xué)、網(wǎng)絡(luò)安全、系統(tǒng)安全等方面具有近10年的課程建設(shè)和授課經(jīng)驗(yàn)。目前,南京郵電大學(xué)在軟件安全領(lǐng)域共開設(shè)了“逆向分析技術(shù)”、“軟件漏洞分析與防范”和“計(jì)算機(jī)病毒防治”3門信息安全本科生專業(yè)課。3門課程各有側(cè)重,相輔相成,根據(jù)學(xué)校本科培養(yǎng)計(jì)劃分別在第四、五、六學(xué)期逐次展開。“軟件漏洞分析與防范”課程始建于2013年,課程圍繞Windows平臺(tái)上軟件漏洞的分析、利用、防范與挖掘等內(nèi)容展開。本文首先介紹課程的教學(xué)目標(biāo)、定位和特點(diǎn),然后結(jié)合多年教學(xué)實(shí)踐經(jīng)驗(yàn),著重從教學(xué)內(nèi)容、教學(xué)模式兩方面對(duì)課程建設(shè)成果進(jìn)行梳理和總結(jié)。
1課程教學(xué)目標(biāo)、定位與特點(diǎn)
“軟件漏洞分析與防范”是信息安全專業(yè)本科生的一門專業(yè)課,共32學(xué)時(shí),含24學(xué)時(shí)理論課和8學(xué)時(shí)實(shí)驗(yàn)課。通過課程學(xué)習(xí),使學(xué)生對(duì)漏洞產(chǎn)生的原因和危害有著深刻認(rèn)識(shí),在編程時(shí)具有高度的安全意識(shí)和扎實(shí)的安全編程技能;充分了解漏洞分析與挖掘技術(shù)在信息與網(wǎng)絡(luò)社會(huì)中的地位和作用,增強(qiáng)信息安全意識(shí)和自覺維護(hù)信息安全的社會(huì)責(zé)任感;在學(xué)習(xí)知識(shí)和技術(shù)的同時(shí),培養(yǎng)學(xué)生思考、分析和解決漏洞問題的能力,滿足社會(huì)對(duì)網(wǎng)絡(luò)空間安全應(yīng)用型人才的需求。課程還可進(jìn)一步拓展為面向全校的任選課,為軟件工程、計(jì)算機(jī)科學(xué)與技術(shù)等相關(guān)專業(yè)有興趣的學(xué)生提供安全編程的基礎(chǔ)課程,使學(xué)生能夠在軟件開發(fā)全過程中,從根本上提高軟件的健壯性和安全性,使其在遭受惡意攻擊時(shí)依然能夠安全可靠地運(yùn)行。
“軟件漏洞分析與防范”課程呈現(xiàn)覆蓋面廣、實(shí)踐性強(qiáng)、技術(shù)更新?lián)Q代快3個(gè)突出特點(diǎn):
(1)涵蓋面廣。課程涵蓋匯編語言、高級(jí)程序設(shè)計(jì)語言、計(jì)算機(jī)組成原理、操作系統(tǒng)、逆向分析等多個(gè)方面,與此同時(shí),不同的軟硬件系統(tǒng)與不同編程語言漏洞的成因、利用和防范機(jī)制也存在較大區(qū)別,決定了教學(xué)內(nèi)容的選取和教學(xué)過程的實(shí)施必須脈絡(luò)分明、有的放矢。
(2)實(shí)踐性強(qiáng)。課程對(duì)調(diào)試技術(shù)、逆向技術(shù)、漏洞利用和挖掘等實(shí)踐能力有較高要求。因此,除理論知識(shí)外,更要注重對(duì)學(xué)生應(yīng)用能力的培養(yǎng),學(xué)用結(jié)合,切實(shí)提高學(xué)生的動(dòng)手實(shí)踐能力。
(3)技術(shù)更新?lián)Q代快。在不斷的博弈中,軟件漏洞的相關(guān)知識(shí)體系和技術(shù)手段更新?lián)Q代較快,對(duì)漏洞問題的研究必須跟蹤當(dāng)前計(jì)算機(jī)系統(tǒng)及其安全問題的最新發(fā)展動(dòng)態(tài)。
2教學(xué)內(nèi)容設(shè)置
2.1教學(xué)內(nèi)容及教材選取
“軟件漏洞分析與防范”課程覆蓋面廣,需要事先掌握較多的計(jì)算機(jī)專業(yè)基礎(chǔ)知識(shí),為此其在本科培養(yǎng)計(jì)劃被列為高年級(jí)的專業(yè)限選課。與此同時(shí),漏洞具有系統(tǒng)相關(guān)性,只能針對(duì)目標(biāo)系統(tǒng)的操作系統(tǒng)版本、其上運(yùn)行的軟件版本以及服務(wù)運(yùn)行設(shè)置等實(shí)際環(huán)境,具體談?wù)撈渲锌赡艽嬖诘穆┒醇翱尚械慕鉀Q辦法,在課堂上難以兼顧不同種類的硬件平臺(tái)、操作系統(tǒng)或編程語言。因此,必須做到目標(biāo)明確、有的放矢。本專業(yè)著重介紹了Windows操作系統(tǒng)的軟件漏洞分析、利用與防范,其原因在于兩點(diǎn):一方面Windows系統(tǒng)普及率高,占有約90%的市場(chǎng)份額;另一方面Windows平臺(tái)具有眾多功能強(qiáng)大的調(diào)試工具和反匯編軟件,方便對(duì)運(yùn)行于其上的軟件進(jìn)行漏洞分析和研究。
軟件漏洞利用與分析的相關(guān)書籍在國內(nèi)并不多見,這些書籍有的側(cè)重于對(duì)軟件安全知識(shí)體系的全面介紹,軟件漏洞僅作為其組成部分[14],有的側(cè)重于從技術(shù)層面對(duì)漏洞進(jìn)行剖析[57],有的側(cè)重于軟件安全開發(fā)[89],雖有收獲,但均無法有效地切合本課程授課內(nèi)容。當(dāng)前,本專業(yè)暫時(shí)選用武漢大學(xué)彭國軍等老師的《軟件安全》作為教材,側(cè)重介紹其中軟件漏洞利用與防護(hù)部分,并選用王清的《0day安全:軟件漏洞分析技術(shù)》作為指定教學(xué)參考書。與此同時(shí),從國家信息安全漏洞共享平臺(tái)等官方漏洞發(fā)布網(wǎng)站,以及看雪、i春秋、紅黑聯(lián)盟等熱點(diǎn)網(wǎng)站獲取本領(lǐng)域的最新發(fā)展動(dòng)態(tài),作為對(duì)課程內(nèi)容的補(bǔ)充。目前,課題組正在籌劃本課程的教材建設(shè),希望通過3~5年的教學(xué)實(shí)踐完成一部相關(guān)教材編寫。
2.2教學(xué)安排
課程教學(xué)內(nèi)容主要包括兩部分:第一部分為第1~3章,主要致力于漏洞分析,著重介紹Windows平臺(tái)下軟件漏洞的成因、原理與利用,使學(xué)生對(duì)軟件漏洞的產(chǎn)生和危害有深刻的認(rèn)識(shí)和理解;第二部分為第4~7章,重點(diǎn)介紹漏洞防范措施,包括微軟的漏洞防護(hù)機(jī)制、軟件安全開發(fā)以及漏洞挖掘等,最后簡(jiǎn)單介紹軟件漏洞的發(fā)展趨勢(shì)。教學(xué)內(nèi)容及課時(shí)分配如表1所示。
各章基本教學(xué)內(nèi)容如下:
第1章:了解漏洞相關(guān)概念與Windows平臺(tái)下二進(jìn)制文件結(jié)構(gòu)和內(nèi)存方面的基礎(chǔ)知識(shí),熟悉漏洞分析中OllyDbg、IDA Pro等常用軟件工具,了解常見的漏洞分析方法。
第2章:掌握棧溢出漏洞、堆溢出漏洞的成因、原理和危害,了解格式化串漏洞、整數(shù)漏洞、雙重釋放漏洞、釋放重引用漏洞的成因和危害。通過實(shí)驗(yàn)1,加深學(xué)生對(duì)緩沖區(qū)溢出漏洞原理及危害的理解。
第3章:了解漏洞利用的具體技術(shù)以及exploit的結(jié)構(gòu),了解Shellcode的編寫語言和關(guān)鍵技術(shù),熟悉Metasploit漏洞利用框架。通過經(jīng)典案例分析進(jìn)一步掌握漏洞利用的原理、方法和危害。
第4章:掌握Windows的棧保護(hù)機(jī)制、數(shù)據(jù)執(zhí)行保護(hù)機(jī)制,以及地址空間布局隨機(jī)化機(jī)制的原理和使用方法。了解Windows對(duì)異常處理過程的保護(hù)機(jī)制結(jié)構(gòu)化異常處理覆蓋保護(hù)(Structured Exception Handler Overwrite Protection, SEHOP)的原理。通過實(shí)驗(yàn)2掌握利用MSF(Metasploit Framework)驗(yàn)證、調(diào)查和利用漏洞的具體過程和方法,分析在具備數(shù)據(jù)執(zhí)行保護(hù) (Data Execution Prevention, DEP )及地址空間布局隨機(jī)化(Address Space Layout Randomization, ASLR)等機(jī)制保護(hù)環(huán)境系統(tǒng)下的漏洞利用情況。
第5章:了解軟件安全開發(fā)生命周期模型的概念,了解微軟SDL ( Security Development Lifecycle)模型的起源和發(fā)展,熟悉SDL模型的7個(gè)階段和其中的主要安全活動(dòng)。了解軟件安全開發(fā)的通則,掌握編程時(shí)防御緩沖區(qū)溢出漏洞的常用方法。
第6章:了解漏洞挖掘技術(shù)的發(fā)展和種類,熟悉靜態(tài)代碼審計(jì)的原理和主要工具軟件,了解軟件的動(dòng)態(tài)挖掘方法。通過實(shí)驗(yàn)3利用靜態(tài)審計(jì)工具對(duì)源代碼進(jìn)行安全性分析和測(cè)試,系統(tǒng)、深入地理解C語言的安全編碼準(zhǔn)則,提出針對(duì)性的改進(jìn)措施;通過實(shí)驗(yàn)4使用fuzz工具對(duì)文件或協(xié)議進(jìn)行模糊測(cè)試,掌握模糊測(cè)試的步驟,對(duì)Peach進(jìn)行深入剖析,了解模糊測(cè)試軟件的實(shí)現(xiàn)原理。
第7章:了解軟件漏洞領(lǐng)域的新挑戰(zhàn),了解移動(dòng)終端、云計(jì)算平臺(tái)以及物聯(lián)網(wǎng)等漏洞的發(fā)展趨勢(shì)。
具體實(shí)驗(yàn)內(nèi)容及要求如表2所示。
3教學(xué)模式探索
大學(xué)教育的目標(biāo)不僅在于知識(shí)的傳授,更在于能力和素質(zhì)的培養(yǎng)[10]。為了提高學(xué)生的學(xué)習(xí)能力、分析能力和知識(shí)綜合運(yùn)用能力,激發(fā)學(xué)生學(xué)習(xí)興趣,挖掘?qū)W生潛力,采用案例式教學(xué)以及引入競(jìng)爭(zhēng)機(jī)制的啟發(fā)式教學(xué)兩種方法,并通過課程考核引導(dǎo)學(xué)生重視理論知識(shí)應(yīng)用能力以及獨(dú)立創(chuàng)新能力的學(xué)習(xí)和鍛煉。
3.1學(xué)用結(jié)合的案例式教學(xué)
“軟件漏洞分析與防范”課程的實(shí)踐性很強(qiáng),除在4次實(shí)驗(yàn)課上引導(dǎo)學(xué)生提升動(dòng)手能力外,在理論課上采用案例式教學(xué)方法,通過對(duì)多個(gè)經(jīng)典CVE( Common Vulnerabilities and Exposures )漏洞案例進(jìn)行分析,以加深對(duì)重點(diǎn)知識(shí)的理解和領(lǐng)會(huì)。例如,通過 CVE-2010-3333 Microsoft RTF剖析棧溢出漏洞、通過CVE-2010-2553 Microsoft Cinepak Codec CVDecompress加深學(xué)生對(duì)堆溢出的理解、通過CVE-2012-0809 Sudo_sudo_debug和 CVE-2011-0065 Firefox mChannel直觀介紹格式化字符串漏洞和釋放重引用漏洞等。
實(shí)踐證明,采用專業(yè)知識(shí)與案例設(shè)計(jì)緊密結(jié)合的方式,可加強(qiáng)學(xué)生對(duì)漏洞相關(guān)知識(shí)的感性認(rèn)識(shí)和興趣,加深學(xué)生對(duì)理論知識(shí)的理解。
3.2引入競(jìng)爭(zhēng)機(jī)制的啟發(fā)式教學(xué)
漏洞攻防知識(shí)體系和技術(shù)手段的更新?lián)Q代較快,在課堂上很難面面俱到,在傳授知識(shí)的同時(shí),更要充分挖掘?qū)W生的潛能和主觀能動(dòng)性。在實(shí)際教學(xué)中,由任課教師根據(jù)課程重點(diǎn)內(nèi)容,結(jié)合現(xiàn)階段國內(nèi)外漏洞攻防博弈的熱點(diǎn)問題設(shè)定不同專題,列出參考資料,指導(dǎo)學(xué)生以組為單位進(jìn)行自主研究。每組設(shè)一個(gè)組長和一個(gè)評(píng)委,在課堂上給予各組展示機(jī)會(huì)。為了保證組內(nèi)每個(gè)學(xué)生都能準(zhǔn)備充分,講解員在講解前從組內(nèi)隨機(jī)抽取。在講解過程中,由任課教師和其它組的學(xué)生評(píng)委從內(nèi)容的深度和廣度、PPT格式的規(guī)范性和美觀性,以及講解過程中的邏輯性和清晰性等3方面進(jìn)行打分。整個(gè)評(píng)比過程公平公開,各組專題成績?cè)谡n后直接公布,每個(gè)小組的分?jǐn)?shù)與個(gè)人成績掛鉤,計(jì)入總評(píng)成績。
多輪教學(xué)實(shí)踐表明,這種引入競(jìng)爭(zhēng)機(jī)制的啟發(fā)式教學(xué)取得了事半功倍的效果,促進(jìn)了學(xué)生、教師和課程的共同進(jìn)步:一方面提高了學(xué)生的研究興趣、研究能力、表達(dá)能力和合作精神,另一方面一些能力出眾的學(xué)生所展示的研究成果可為教學(xué)提供更多素材,進(jìn)一步促進(jìn)了課程自身的發(fā)展。
3.3考核機(jī)制
課程采用的考核方式為大作業(yè),總評(píng)成績由平時(shí)成績、專題討論課成績和大作業(yè)成績組成,平時(shí)成績側(cè)重對(duì)學(xué)生學(xué)習(xí)態(tài)度的考量,專題討論課成績和大作業(yè)成績則著重反映學(xué)生的綜合能力。
(1)平時(shí)成績占總評(píng)成績的30%,從作業(yè)、上課出勤率、實(shí)驗(yàn)等幾方面進(jìn)行考核。
(2)專題討論成績占總評(píng)成績的30%,從PPT內(nèi)容、格式以及講解效果等多方面對(duì)各組進(jìn)行評(píng)比。
(3)大作業(yè)成績占總評(píng)成績的40%,其是根據(jù)教師講授的基本理論、專題報(bào)告積累的素材和實(shí)際操作完成的一份報(bào)告。報(bào)告由每個(gè)學(xué)生獨(dú)立完成,根據(jù)題目難度系數(shù)、功能完成情況、大作業(yè)撰寫情況、驗(yàn)收答辯情況等進(jìn)行綜合打分。任務(wù)包括5類:①逆向分析、軟件破解及其防護(hù);②基于模糊測(cè)試的軟件漏洞挖掘;③針對(duì)Web平臺(tái)的滲透測(cè)試;④移動(dòng)終端APP安全測(cè)試;⑤其它與“軟件漏洞”相關(guān)的實(shí)踐類、設(shè)計(jì)型報(bào)告。
4結(jié)語
“軟件漏洞分析與防范”是一門技術(shù)性要求很高的課程,除打好理論基礎(chǔ)外,更重要的是培養(yǎng)學(xué)生的實(shí)際動(dòng)手能力。此外,在軟件漏洞相關(guān)的教學(xué)和研究中,必須認(rèn)識(shí)到漏洞的系統(tǒng)相關(guān)性和時(shí)間特性:一方面只能針對(duì)目標(biāo)系統(tǒng)的操作系統(tǒng)版本、其上運(yùn)行的軟件版本以及服務(wù)運(yùn)行設(shè)置等實(shí)際環(huán)境具體談?wù)撈渲锌赡艽嬖诘穆┒醇翱尚械慕鉀Q辦法;另一方面隨著時(shí)間推移,舊漏洞會(huì)不斷消失,新漏洞會(huì)不斷出現(xiàn),對(duì)漏洞問題的研究必須跟蹤計(jì)算機(jī)系統(tǒng)及安全問題的最新發(fā)展動(dòng)態(tài)。軟件漏洞的技術(shù)性、系統(tǒng)相關(guān)性、時(shí)間特性等對(duì)課程建設(shè)提出了更高要求,必須加強(qiáng)師資力量和教學(xué)團(tuán)隊(duì)建設(shè),分工明確,溝通及時(shí),協(xié)同發(fā)展。同時(shí),加強(qiáng)學(xué)生能力培養(yǎng)是本科教學(xué)的重點(diǎn),在授課內(nèi)容和授課安排上要留出足夠空間,以培養(yǎng)學(xué)生的動(dòng)手能力、研究能力和創(chuàng)新能力。
參考文獻(xiàn)參考文獻(xiàn):
[1]彭國軍,傅建明,梁玉.軟件安全[M].武漢:武漢大學(xué)出版社,2015.
[2]《信息安全專業(yè)指導(dǎo)性專業(yè)規(guī)范》項(xiàng)目組.信息安全類專業(yè)的專業(yè)指導(dǎo)規(guī)范[EB/OL].http://ishare.iask.sina.com.cn/f/17806091.html.
[3]任偉.軟件安全[M].北京:國防工業(yè)出版社,2010.
[4]劉哲理,李進(jìn),賈春福.漏洞利用及滲透測(cè)試基礎(chǔ)[M].北京:清華大學(xué)出版社,2017.
[5]王清,張東輝,周浩,等.0day安全:軟件漏洞分析技術(shù)[M].第2版.北京:電子工業(yè)出版社,2011.
[6]林椏泉.漏洞戰(zhàn)爭(zhēng):軟件漏洞分析精要[M].北京:電子工業(yè)出版社,2016.
[7]愛甲健二.有趣的二進(jìn)制:軟件安全與逆向分析[M].周自恒,譯.北京:人民郵電出版社,2015.
[8]張劍,丁鋒,周福才,等.軟件安全開發(fā)[M].成都:電子科技大學(xué)出版社,2015.
[9]ROBERT C SEACORD. C安全編碼標(biāo)準(zhǔn) [M].第2版.盧濤,譯.北京:機(jī)械工業(yè)出版社,2015.
[10]高玉蓉,李曉培.博克的大學(xué)教育目標(biāo)及其對(duì)我國高等教育質(zhì)量研究的啟示[J].東莞理工學(xué)院學(xué)報(bào),2012,19(4):103109.
責(zé)任編輯(責(zé)任編輯:黃?。?