公務(wù)員期刊網(wǎng) 論文中心 正文

談軟件漏洞分析課程建設(shè)

前言:想要寫(xiě)出一篇引人入勝的文章?我們特意為您整理了談軟件漏洞分析課程建設(shè)范文,希望能給你帶來(lái)靈感和參考,敬請(qǐng)閱讀。

談軟件漏洞分析課程建設(shè)

摘要:本文從《軟件漏洞分析》課程的建設(shè)目標(biāo)、設(shè)計(jì)思路、內(nèi)容設(shè)置、實(shí)驗(yàn)環(huán)境建設(shè)和教學(xué)模式等多方面對(duì)課程建設(shè)進(jìn)行了探索,重點(diǎn)培養(yǎng)學(xué)生軟件漏洞分析、漏洞利用和漏洞挖掘的能力。

關(guān)鍵詞:軟件安全;漏洞分析;漏洞利用;課程建設(shè)

1引言

軟件漏洞是指存在于操作系統(tǒng)或應(yīng)用程序中,可導(dǎo)致攻擊者在未授權(quán)情況下獲取或破壞系統(tǒng)數(shù)據(jù)的安全缺陷[1]。隨著軟件規(guī)模不斷擴(kuò)大,軟件的開(kāi)發(fā)、集成變得越來(lái)越復(fù)雜,新型應(yīng)用軟件數(shù)量急劇增加,導(dǎo)致軟件產(chǎn)品在推出時(shí)總會(huì)存在很多對(duì)系統(tǒng)安全可靠運(yùn)行構(gòu)成嚴(yán)重威脅的軟件漏洞[2];軟件運(yùn)行與開(kāi)發(fā)環(huán)境已從傳統(tǒng)的靜態(tài)封閉狀態(tài)轉(zhuǎn)變?yōu)榛ヂ?lián)網(wǎng)環(huán)境下的動(dòng)態(tài)開(kāi)放狀態(tài),因此越來(lái)越多的軟件漏洞和缺陷被發(fā)現(xiàn)[3]。如何發(fā)現(xiàn)和減少產(chǎn)品中的漏洞,提高軟件產(chǎn)品的安全性,改善軟件產(chǎn)品的質(zhì)量是當(dāng)前的重要課題?!盾浖┒捶治觥氛n程正是為了解決這一問(wèn)題,培養(yǎng)軟件安全人才而開(kāi)設(shè)。通過(guò)《軟件漏洞分析》課程建設(shè),組建理論基礎(chǔ)扎實(shí)、科研能力強(qiáng)和工程實(shí)踐水平高的師資團(tuán)隊(duì),構(gòu)建培養(yǎng)學(xué)生軟件漏洞分析、挖掘和利用基本能力的教學(xué)體系。本文從課程建設(shè)的目標(biāo)、設(shè)計(jì)思路、內(nèi)容設(shè)置、實(shí)驗(yàn)環(huán)境建設(shè)和教學(xué)模式與評(píng)價(jià)方法等方面開(kāi)展了研究和探索。

2軟件漏洞分析課程體系設(shè)置

2.1課程建設(shè)目標(biāo)

依照教育部網(wǎng)絡(luò)空間安全專業(yè)的人才培養(yǎng)目標(biāo),參考其他相關(guān)高校軟件漏洞相關(guān)課程,建立了本課程的建設(shè)目標(biāo):(1)掌握常見(jiàn)軟件漏洞產(chǎn)生的成因和基本原理,能夠?qū)ΤR?jiàn)軟件漏洞進(jìn)行分析。(2)掌握常見(jiàn)緩沖區(qū)溢出漏洞的利用方法,能夠利用經(jīng)典的緩沖區(qū)溢出漏洞。(3)掌握操作系統(tǒng)對(duì)軟件漏洞的防范機(jī)制及對(duì)應(yīng)的破解機(jī)制和方法。(4)掌握基本的漏洞挖掘機(jī)制和方法,能夠運(yùn)用不同的方法對(duì)多個(gè)漏洞軟件進(jìn)行漏洞挖掘。(5)理解軟件漏洞發(fā)展的趨勢(shì),了解軟件漏洞的前沿領(lǐng)域。(6)培養(yǎng)學(xué)生腳踏實(shí)地、認(rèn)真嚴(yán)謹(jǐn)?shù)墓ぷ黠L(fēng)格;引導(dǎo)學(xué)生建立軟件安全研究的正確價(jià)值觀和職業(yè)道德倫理,同時(shí)增強(qiáng)學(xué)生遵紀(jì)守法的法律意識(shí)。

2.2課程設(shè)計(jì)思路

在高校的教學(xué)中,學(xué)生具備扎實(shí)計(jì)算機(jī)相關(guān)的理論基礎(chǔ),理解密碼學(xué)、身份認(rèn)證體系和PKI體系結(jié)構(gòu),同時(shí)具有一定的網(wǎng)絡(luò)攻防能力,但對(duì)于具體的如何分析二進(jìn)制文件中的漏洞,如何使用各種方法來(lái)利用程序中的漏洞了解得不多;學(xué)生比較熟悉使用各種現(xiàn)成的工具進(jìn)行網(wǎng)絡(luò)攻擊和漏洞利用,但對(duì)于背后的原理及更深一個(gè)層次的理解和實(shí)踐比較缺乏。因此需要系統(tǒng)學(xué)習(xí)軟件漏洞的原理、監(jiān)測(cè)、分析和利用等方面的知識(shí),來(lái)掌握軟件漏洞的相關(guān)知識(shí)體系;同時(shí)為了避免大偏的枯燥理論灌輸,在《軟件漏洞分析》的教學(xué)中需要引入大量的實(shí)踐環(huán)節(jié),開(kāi)展多種教學(xué)形式,調(diào)動(dòng)學(xué)生的積極性和探索主動(dòng)性,實(shí)現(xiàn)理論與實(shí)踐的結(jié)合,能夠?qū)浖┒从幸粋€(gè)比較深入的認(rèn)識(shí)。(1)強(qiáng)化“理論”基礎(chǔ),同時(shí)做到有的放矢。軟件漏洞分析涉及匯編語(yǔ)言、操作系統(tǒng)、逆向分析、計(jì)算機(jī)組成原理、計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)等多方面的內(nèi)容,同時(shí)包含不同的系統(tǒng)平臺(tái)以及多種不同的軟件漏洞類(lèi)型,因此在選擇內(nèi)容時(shí)候需要做到有的放矢,有所取舍。本課程主要以Windows平臺(tái)的軟件漏洞為研究對(duì)象,重點(diǎn)學(xué)習(xí)Windows平臺(tái)下棧溢出漏洞、堆溢出漏洞、整數(shù)溢出漏洞、格式化字符串漏洞的原理、分析和利用,Windows系統(tǒng)的漏洞防護(hù)機(jī)制的原理及對(duì)應(yīng)破解方法;同時(shí)講解Windows平臺(tái)下的雙重釋放漏洞、數(shù)組越界訪問(wèn)漏洞和內(nèi)核漏洞的原理;在對(duì)不同類(lèi)型的漏洞進(jìn)行分析時(shí),突出對(duì)應(yīng)各類(lèi)軟件漏洞產(chǎn)生原理的理解。(2)突出“實(shí)踐”導(dǎo)向,培養(yǎng)學(xué)生的實(shí)踐動(dòng)手能力。在軟件漏洞的學(xué)習(xí)上,注重對(duì)學(xué)生實(shí)踐能力的培養(yǎng)。對(duì)每一種漏洞的理論,本課程都通過(guò)生靈活現(xiàn)的經(jīng)典案例來(lái)加強(qiáng)理論的消化;從實(shí)際例子出發(fā),通過(guò)動(dòng)手分析、利用每一個(gè)漏洞樣本程序來(lái)掌握理論知識(shí)。對(duì)于不同的漏洞類(lèi)型,分別采用字符串定位、?;厮?、污點(diǎn)追蹤、條件斷點(diǎn)分析、函數(shù)定位、源碼對(duì)比等方法來(lái)快速定位和分析漏洞,分析不同的漏洞成因,制定檢測(cè)、利用和防御方案。(3)緊貼前沿領(lǐng)域,建立學(xué)生對(duì)新興領(lǐng)域漏洞的自主學(xué)習(xí)基礎(chǔ)能力。結(jié)合當(dāng)前的技術(shù)發(fā)展趨勢(shì),課程對(duì)移動(dòng)終端、云計(jì)算和物聯(lián)網(wǎng)的漏洞軟件進(jìn)行介紹,同時(shí)結(jié)合具體的漏洞案例進(jìn)行簡(jiǎn)要分析,幫助學(xué)生對(duì)最新的軟件漏洞領(lǐng)域建立一個(gè)初步的理解和認(rèn)識(shí),為進(jìn)一步學(xué)習(xí)對(duì)應(yīng)知識(shí)打下基礎(chǔ)。

2.3課程內(nèi)容設(shè)置

按照軟件漏洞學(xué)習(xí)實(shí)踐能力的規(guī)律,按照層次遞進(jìn)的原則,將課程內(nèi)容劃分為9個(gè)大的模塊。各模塊主要知識(shí)點(diǎn)和課時(shí)安排如表1所示,課時(shí)安排為48個(gè)學(xué)時(shí)。每個(gè)模塊中,每個(gè)知識(shí)點(diǎn)的內(nèi)容具體如下:軟件漏洞基礎(chǔ)知識(shí)模塊:軟件漏洞基本概念主要講解什么是軟件漏洞、軟件漏洞產(chǎn)生的原因、軟件漏洞分析和利用的基本概念;PE文件格式主要講解PE文件的各個(gè)組成部分以及各種內(nèi)存地址之間的轉(zhuǎn)換;必備分析工具講解PEView、Ollydbg、immunityDebugger、Windbg、IDAPro和VMware等靜態(tài)和動(dòng)態(tài)分析工具軟件;最后以一個(gè)具體的例子來(lái)演示這些軟件的應(yīng)用。棧溢出漏洞原理與利用模塊:函數(shù)調(diào)用原理講解函數(shù)調(diào)用過(guò)程中系統(tǒng)棧的變化和相關(guān)寄存器的作用;棧溢出機(jī)制講解為何存在棧溢出,以及其系統(tǒng)棧的變化;棧溢出利用講解當(dāng)存在棧溢出漏洞時(shí),如何編寫(xiě)代碼控制程序的流程。堆溢出漏洞原理和利用模塊:先講解Windows堆管理的數(shù)據(jù)結(jié)構(gòu)和策略,以及堆的分配、釋放、合并等操作;然后學(xué)習(xí)堆鏈表拆卸中可能出現(xiàn)的問(wèn)題,以具體例子調(diào)試和體會(huì)堆溢出的利用和攻擊。ShellCode模塊:Shellcode概念部分解釋其處于軟件漏洞中的哪一個(gè)環(huán)節(jié),以及其要解決的問(wèn)題;Shellcode開(kāi)發(fā)講解如何開(kāi)發(fā)基本的shellcode程序,如何利用跳板開(kāi)發(fā)shellcode,以及如何開(kāi)發(fā)通用平臺(tái)的shellcode;Shellcode優(yōu)化講解如何對(duì)shellcode進(jìn)行編碼和解碼,如何盡量開(kāi)發(fā)占用小空間的shellcode;基于MetaSploit的Shellcode講解通用測(cè)試平臺(tái)下shellcode的開(kāi)發(fā)、和使用。其他內(nèi)存攻擊技術(shù)模塊:基于結(jié)構(gòu)化異常處理的攻擊講解Windows的異常處理機(jī)制,以及如何在棧和堆溢出漏洞下利用異常處理機(jī)制進(jìn)行攻擊;基于虛函數(shù)的攻擊講解如何利用軟件類(lèi)中的虛函數(shù)實(shí)現(xiàn)漏洞攻擊;Heapspray技術(shù)講解如何利用堆噴射技術(shù)實(shí)現(xiàn)系統(tǒng)攻擊,同時(shí)會(huì)結(jié)合棧和堆溢出漏洞利用技術(shù)。其他類(lèi)型軟件漏洞模塊:基于條件記錄斷點(diǎn)的漏洞分析方法學(xué)習(xí)整數(shù)溢出漏洞的原理和利用;基于輸出消息定位漏洞的方法學(xué)習(xí)格式化字符串漏洞的原理和利用;基于?;厮莺脱a(bǔ)丁比較的方法學(xué)習(xí)雙重釋放漏洞的原理和利用;基于源代碼對(duì)比與跟蹤的方法學(xué)習(xí)數(shù)組越界漏洞。根據(jù)不同漏洞的特點(diǎn),介紹多種不同的漏洞分析方法和利用方法[4-5]。Windows安全機(jī)制模塊:講解Windows采用的各種安全機(jī)制的實(shí)現(xiàn)原理,包括GS、SafeSEH、DEP、ASLR和SEHOP機(jī)制;針對(duì)每一種安全機(jī)制,介紹多種突破限制的方法,及如何利用這些漏洞。漏洞挖掘模塊:基于存在漏洞的FTP、SMTP服務(wù)器,介紹fuzz技術(shù)如何挖掘在這些服務(wù)器中的漏洞;同時(shí)基于已有的漏洞多媒體播放軟件,學(xué)習(xí)fuzz方式下如何挖掘文件類(lèi)型漏洞。在挖掘漏洞的基礎(chǔ)上,掌握如何快速定位、分析和利用漏洞。

2.4漏洞分析實(shí)驗(yàn)環(huán)境建設(shè)

漏洞分析實(shí)驗(yàn)環(huán)境是整個(gè)教學(xué)中重要的部分。由于市面上沒(méi)有合適的Windows平臺(tái)下漏洞分析實(shí)驗(yàn)平臺(tái),因此根據(jù)課程的教學(xué)內(nèi)容,基于VMwareWorkstationPlayer虛擬機(jī)搭建了課程的實(shí)驗(yàn)平臺(tái)。在虛擬機(jī)中根據(jù)實(shí)驗(yàn)環(huán)境需要,動(dòng)態(tài)地導(dǎo)入對(duì)應(yīng)的Windows操作系統(tǒng),構(gòu)建相應(yīng)的模擬仿真實(shí)驗(yàn)環(huán)境。

2.5教學(xué)模式探討

(1)案例教學(xué)法,激發(fā)學(xué)生學(xué)習(xí)興趣。該課程理論性和實(shí)踐性都很強(qiáng),如果只是單純的理論講解,很容易陷入一知半解的境地,需要實(shí)踐才能對(duì)講授的理論有清晰和深刻的理解和體會(huì)。因此在教學(xué)過(guò)程中,每一章的每一個(gè)知識(shí)點(diǎn)的學(xué)習(xí)都通過(guò)案例進(jìn)行演示來(lái)加深對(duì)知識(shí)的掌握程度。知識(shí)點(diǎn)的學(xué)習(xí)分為四個(gè)階段:理論講解、實(shí)踐演示、學(xué)生實(shí)踐操作和課后作業(yè),階段之間是層級(jí)遞進(jìn)的關(guān)系。首先教師講解知識(shí)點(diǎn)的理論,以及涉及到的工具軟件;然后教師通過(guò)具體的例子,一步一步地演示理論內(nèi)容;接著通過(guò)實(shí)驗(yàn),讓學(xué)生自己動(dòng)手操作實(shí)現(xiàn)一遍對(duì)應(yīng)的例子來(lái)體會(huì)知識(shí)點(diǎn);最后布置對(duì)應(yīng)的課后作業(yè),要求學(xué)生對(duì)不同的例子進(jìn)行分析,通過(guò)舉一反三,加深對(duì)知識(shí)點(diǎn)的理解和掌握。(2)翻轉(zhuǎn)教學(xué)法,培養(yǎng)學(xué)生探索精神。在教學(xué)中,講解完某一種類(lèi)型的漏洞知識(shí)點(diǎn)后,教師提供一個(gè)具體類(lèi)型的CVE編號(hào),讓學(xué)生自己組隊(duì),從網(wǎng)上收集資料,分析該漏洞的成因、機(jī)理、利用方式和修復(fù)機(jī)制;在下一次課堂上,挑選兩個(gè)隊(duì)上臺(tái)講解作業(yè)結(jié)果,分享他們的心得,其他學(xué)生在臺(tái)下提問(wèn)及交流。通過(guò)這種翻轉(zhuǎn)教學(xué)法,調(diào)用學(xué)生的學(xué)習(xí)積極主動(dòng)性,培養(yǎng)自由探索和鉆研的精神。(3)靈活的考核方式,培養(yǎng)學(xué)生的創(chuàng)新能力??己酥饕綍r(shí)成績(jī)和期末大作業(yè)成績(jī),其中平時(shí)成績(jī)60%,期末成績(jī)40%。平時(shí)成績(jī)主要由平時(shí)出勤、課堂表現(xiàn)、課后作業(yè)完成情況、分組案例講解等四部分構(gòu)成。其中平時(shí)出勤占10%,課堂表現(xiàn)占10%,主要考核上課學(xué)習(xí)態(tài)度和課堂回答問(wèn)題的情況;課后作業(yè)完成情況占20%,分組案例講解占20%,這兩部分主要考核學(xué)生對(duì)于知識(shí)點(diǎn)的掌握程度,以及課后的參與度。期末考試成績(jī)以大作業(yè)的形式開(kāi)展,要求學(xué)生完成一份有一定難度的大作業(yè),題目自選,可以是對(duì)已知漏洞的分析、利用和修復(fù)報(bào)告,也可以是對(duì)Web和二進(jìn)制軟件的漏洞挖掘?qū)嵺`,根據(jù)完成報(bào)告的難度給定分?jǐn)?shù)。同時(shí)對(duì)于參加網(wǎng)絡(luò)信息安全競(jìng)賽的同學(xué),比賽的獲獎(jiǎng)成績(jī)也可以作為期末大作業(yè)來(lái)提交。

3總結(jié)

本文構(gòu)建了軟件漏洞分析課程體系,在講解漏洞相關(guān)基本理論的基礎(chǔ)上,緊緊圍繞實(shí)踐進(jìn)行教學(xué)組織。通過(guò)案例教學(xué)、翻轉(zhuǎn)課堂和靈活的考核方式來(lái)培養(yǎng)學(xué)生的軟件漏洞分析實(shí)踐創(chuàng)新能力。

參考文獻(xiàn)

[1]黃燁烽,王嘉捷,楊軼.有限資源條件下的軟件漏洞自動(dòng)挖掘與利用.計(jì)算機(jī)研究與發(fā)展,2019,56(11):2299-2314

[2]曹曉梅,朱楓,沙樂(lè)天.“軟件漏洞分析與防范”課程建設(shè).軟件導(dǎo)刊,2018,3(17):217-220

[3]傅建明,彭國(guó)軍,嚴(yán)飛.軟件安全課程教學(xué)方法探究.軟件導(dǎo)刊,2020,19(2):226-229

[4]王清,張東輝,周浩,等.0day安全:軟件漏洞分析技術(shù).第2版.北京:電子工業(yè)出版社,2011

[5]林椏泉.漏洞戰(zhàn)爭(zhēng).北京:電子工業(yè)出版社,2016

作者:彭碧濤 王常吉 羅海蛟 單位:廣東外語(yǔ)外貿(mào)大學(xué)網(wǎng)絡(luò)空間安全學(xué)院