陳立根,劉勝利,肖 達,彭 飛
(數學工程與先進計算國家重點實驗室,鄭州 450001)
隨著互聯網時代的到來和通信技術的發展,利用開放的網絡環境進行通信已經成為時代發展的趨勢。路由器是互聯網絡中的核心交換設備,是網絡互聯的基礎。
目前,Cisco 公司的路由器產品應用范圍非常廣泛,居于市場首位。Cisco 互聯網操作系統(Internet Operating System,IOS)是Cisco 公司開發的,專門用于其路由交換設備的互聯網操作系統。主要考慮到速度的因素,IOS 被設計成比較簡潔、駐留在存儲器且受限于硬件平臺的一種系統,而且并沒有其他許多操作系統具有的安全保護機制[1],如進程間的存儲保護。Cisco 公司沒有對外公開IOS 內部的相關細節,IOS 一般基于PowerPC 或者MIPS 架構,和常見的Intel 架構存在較大的差異,且不支持第三方軟件的運行,但這并不代表IOS 是完全安全的。2003 年,來自Phonoelit 黑客組織的FX 在文獻[2-3]中對Cisco IOS的一些安全問題做了比較完整的分析,并給出了IOS緩沖區溢出漏洞的利用方法。2005 年BlackHat USA大會上,Michael Lynn 闡述了Cisco IOS 的體系結構,論證了在Cisco IOS 上執行任意代碼的可行性,成功執行了shellcode[4]。這些攻擊方法主要是利用IOS相關協議的漏洞,完成對路由器的遠程控制,對網絡安全造成了嚴重的影響。因此,研究Cisco IOS 下的漏洞挖掘方法,全面發現與及時修補IOS 的漏洞,具有重要意義。
在相關領域的典型研究成果中,微軟和斯坦福大學的研究人員,分別獨立提出了混合符號執行的方法,并實現了一系列有代表性的工具,如KLEE[5],EXE[6],DART[7]等。混合符號執行的核心思想是將輸入數據用符號變量表示,模擬程序執行,收集程序路徑約束條件,最后通過約束求解來生成驅動程序執行其他路徑的測試用例,來提高測試用例的代碼覆蓋率。但是這些工具過度依賴于程序源代碼,運行平臺苛刻。之后出現了如SAGE[8],SmartFuzz[9],BitScope[10]等直接面向二進制程序進行符號執行的工具。SmartFuzz 和BitScope 使用在線的符號執行,但是由于符號執行需要占用大量計算資源,在線符號執行會導致目標程序性能嚴重下降,而Cisco IOS主要負責處理網絡數據報文,對時延非常敏感。SAGE 系統采用離線的符號執行,使用iDNA 系統記錄程序軌跡,再對軌跡重放過程中進行符號計算,與在線符號執行相比,對目標程序的性能影響比較小。但是由于Cisco IOS 不開源,且對于系統內部的進程管理等結構也不對外公開,因此在記錄系統執行軌跡時,無法做到區分進程的指令記錄,加上IOS 系統本身比較復雜,記錄的指令數量將非常龐大,給后期處理帶來嚴峻挑戰,因此對IOS 而言該方法顯得并不實用。文獻[11]針對Windows 下的大型軟件提出了基于污點分析的智能模糊測試技術,實現了相應的工具。
與本文中啟發式模糊測試最接近的工作是文獻[12]設計的TaintScope 系統。TaintScope 系統的核心思想是跟蹤監控目標程序處理正常樣本,獲取影響安全敏感操作的輸入數據,繼而進行針對這些數據生成畸形樣本進行測試。但是,TaintScope 與本文研究的關鍵區別在于,它面向x86 下的應用程序,基于Pin 插裝技術實現,不支持Cisco IOS 系統,而且其并沒有對安全敏感操作進行具體刻畫,僅僅針對內存分配和字符串處理等安全敏感函數,也沒有給出具體的判定規則,而本文除安全敏感函數外,還加入了對內存讀寫訪問、函數跳轉等安全敏感操作的處理,并給出了安全敏感操作的判定規則。
相比主流操作系統(如Windows,Linux),針對Cisco IOS 的安全性研究還不成熟,這方面公開的研究成果還比較少。在2011 年BlackHat 歐洲大會上,Muniz 等人論證了對Cisco IOS 進行Fuzz 測試的可行性[13]。2012 年,蘇曉燕等人提出了基于模糊測試技術的Cisco IOS 漏洞挖掘方法[14],實現了IOS 的漏洞挖掘工具CFuzzer。但CFuzzer 在生成測試用例時,并沒有利用程序內部狀態信息,生成策略過于盲目,嚴重制約了模糊測試的效率和能力。
本文針對現有Cisco IOS 下漏洞挖掘方法的不足,并結合IOS 的特點,提出了基于細粒度動態污點分析的啟發式模糊測試方法。本文的主要工作是通過研究細粒度動態污點分析技術,給出了污點傳播規則。通過分析大量已公開漏洞的成因,結合IOS系統自身的特點,歸納總結產生漏洞的本質,給出了基于污點分析的安全敏感操作判定規則,提出了啟發式測試用例生成方法,通過啟發式信息,指導測試用例的生成,提高模糊測試效率,并開發了一套Cisco IOS 漏洞挖掘原型系統CTaintMiner。
作為一項熱門的程序分析技術,動態污點分析(Dynamic Taint Analysis,DTA)已經廣泛應用于信息安全的很多領域,例如惡意代碼分析、軟件漏洞挖掘、協議格式逆向分析等。動態污點分析的基本思想就是通過標定特定數據片段(例如網絡報文、文件等)為不可信的數據(下文稱之為污點),然后跟蹤程序對這些污點數據的處理過程,從而收集目標程序對這些數據的具體使用信息。
動態污點分析主要包括2 個方面:污點數據的標定和污點數據的傳播。污點數據的標定一般通過對系統的特定API 函數(如recv,fread 等)進行劫持來實現。污點數據的傳播則需要定義一套污點的傳播規則,而且通常需要維護一塊影子內存(shadow memory)來存儲污點的狀態信息[9]。
根據污點傳播的精細程度,污點分析又分為粗粒度污點分析和細粒度污點分析。粗粒度污點分析對于每一個數據其污點狀態只有“0”或“1”,“0”表示干凈,數據未被污染;“1”表示數據被污染。而細粒度污點分析指為每個污點數據單元分配唯一的標簽,需要標識其依賴于哪些污點數據,從而能夠跟蹤每個污點字節的傳播過程。
為了便于表述,進行以下定義:
定義1污點數據源是指對目標進程進行污點分析所關注的外部輸入數據的集合,用集合D0={d0,d1,…,dn}表示,其中,di表示按單元劃分的第i個污點數據單元;n為集合D0的基數,表示污點數據源按單元劃分總共有n個污點數據單元。
定義2T映射,為集合V到集合S的映射,記為T:V→S,其中,集合V為寄存器、內存數據以及常量等所有數據的集合;集合S為污點屬性集,S等于集合D0的冪集,對于?v∈V,其污點屬性為T(v)。特殊的,對于?v∈D0,T(v)={v},因為污點數據源D0只是所有數據集合V的子集,而污點數據源當中的元素只依賴于其本身;當v為常量時,T(v)=?,因為常量不依賴于任何數據。
定義3目標進程執行的指令Ins<Type,Operand>,其中,Type表示Ins的指令類型;Operand是Ins的源操作數與目的操作數的集合。如果?op∈Operand且T(op)≠?,則稱Ins為污點操作相關指令。
定義4指令的污點屬性為指令中目的操作數的污點屬性。
當污點數據從一個位置傳遞到另一個位置時,則認為發生了污點傳播。而污點傳播規則定義了寄存器和內存數據的污點屬性通過污點操作相關指令進行傳播的方式。細粒度的污點分析,需要在傳播過程中,傳遞污點數據對污點數據源的依賴關系。
對于涉及到內存訪問的指令,進行污點傳播時,存在內存地址被污染與內存內容被污染2 種情況,而其他指令污點傳播情況相對簡單。因此,為了表述方便,本文將讀訪問內存的指令記為RMIns,寫訪問內存的指令記為WMIns,并將RMIns指令與WMIns統稱為內存訪問指令,記為MEMIns;其他類型指令稱為非內存訪問指令,記為UMEMIns。
污點傳播規則:

其中,R1 適用于RMIns指令,ra表示讀訪問的內存地址;rv表示讀訪問的內存地址ra處存儲的值;R2 適用于WMIns指令,wa表示寫訪問的內存地址;wv表示將寫入內存地址wa處的值;R3 適用于UMEMIns指令,Operandsrc為指令Ins中源操作數的集合;n為集合Operandsrc中元素的個數;op為集合Operandsrc中的元素;T(RMIns)表示對于讀訪問內存指令的污點屬性,等于讀訪問的內存地址ra的污點屬性與讀訪問內存內容rv的污點屬性的并;T(WMIns)表示對于寫訪問內存指令的污點屬性,等于寫訪問的內存地址wa的污點屬性與寫訪問內存內容wv的污點屬性的并。T(UMEMIns)表示對于非內存訪問指令的污點屬性,等于所有源操作數的污點屬性的并。
Cisco IOS 采用PowerPC 或MIPS 架構,根據上述污點傳播規則,表1 以PowerPc 指令集為例,給出了一個細粒度污點分析的示例。

表1 細粒度污點分析示例
第1 條是RMIns指令,指令的功能是從有效地址為(r3 +0)的內存處讀取32 位的數,并加載到寄存器r4。M(r3)表示r3 指向的內存,根據定義2,M(r3)的污點屬性為{0,1,2,3},根據污點傳播規則R1,寄存器r4 的內容直接依賴于M(r3),所以其污點屬性為{0,1,2,3}。
第2 條是RMIns指令,指令的功能從有效地址為(r3+4)的內存處讀取32 位的數,并加載到寄存器r5。類似于第1 條指令,r5 的污點屬性為{4,5,6,7}。
第3 條是WMIns指令,指令的功能是將r4 的32 位內容存儲到有效地址為(r1 +8)的內存中。M(r1 +8)的內容直接依賴于r4,因此被r4 污染,根據污點傳播規則R2,其污點屬性為{0,1,2,3}。
第4 條是RMIns指令,指令的功能是從有效地址為(r4 +0xc)的內存處讀取32 位的數,并加載到寄存器r7。讀訪問內存的地址直接依賴于寄存器r4的值,從而r7 的內容間接依賴于r4,根據污點傳播規則R1,r7 的污點屬性為{0,1,2,3}。
第5 條是UMEMIns指令,指令的功能是將寄存器r5 與r7 內容之和賦給寄存器r8。寄存器r8 的內容直接依賴于寄存器r5 與r7 的內容,根據污點傳播規則R3,r8 的污點屬性為r5 的污點屬性與r7 的污點屬性的并。
測試用例生成是模糊測試技術的關鍵。對于傳統模糊測試而言,主要采用黑盒測試的方式,在生成測試用例時,并沒有結合目標程序的內部狀態信息。對Cisco IOS 而言,外部輸入主要是網絡協議數據報文,因此本文僅針對網絡協議進行漏洞挖掘。本文基于動態污點分析技術,跟蹤Cisco IOS 對協議數據報文的處理過程并反饋運行時信息,指導測試用例的生成,實現啟發式測試用例生成技術,從而提高模糊測試的效率。
對于一個正常的協議數據報文而言,包括協議安全相關字段和協議安全無關字段。協議安全相關字段是指在目標程序處理過程中,可能影響到程序內部的安全敏感操作的協議字段。協議安全無關字段是指在目標程序處理過程中,對內部的安全敏感操作不會構成影響的協議字段。對于安全敏感操作,一般指一些不安全函數(如strcpy,printf 等)和內存分配函數(如malloc、realloc 等)調用。
啟發式測試用例生成技術的核心思想就是首先識別協議數據報文中的協議安全相關字段,然后針對這些字段進行變異,生成測試用例對目標程序指定協議進行測試。一般而言,協議安全相關字段的數目遠少于協議安全無關字段的數目。因此,相對于傳統的模糊測試技術,啟發式模糊測試最大的特點就是避免了對大量安全無關字段的測試,生成的測試用例具有很強的針對性,能夠直接影響程序內部的安全敏感操作,引起程序異常的可能性更大,測試的效率更高。
例如,在一個協議數據報文中,往往數據報文的頭部相關字段可能影響程序的內部安全敏感操作,如長度字段可能會影響目標程序中的內存分配、內存拷貝等操作。而其中的數據部分一般不會產生影響。
在圖1 中,左半部分是一個正常某協議數據報文,右半部分是Cisco IOS 處理該數據報文的執行軌跡。圖中的寄存器r9 依賴于數據報文中的長度字段“00 5c”,然后污染屬性通過指令序列傳遞給了內存分配函數malloc 的入口參數r3 和內存拷貝函數memcpy 的參數r5,其中,r3 表示內存分配的大小;r5表示內存拷貝的長度。因此,數據報文的長度字段影響了內存分配函數和內存拷貝函數的調用,啟發式測試用例生成就是針對這些協議安全相關字段進行變異,生成畸形的測試用例。

圖1 啟發式模糊測試示例
由啟發式測試用例生成的原理可知,安全敏感操作的界定決定了協議安全相關字段的獲取。因此,根據目標程序的特點,對安全敏感操作進行具體地判定非常重要。
通過對大量已公開漏洞的研究發現,大多數漏洞都是因為程序沒有對外部輸入(下文稱為污點)進行嚴格的審查,造成程序內部的函數調用地址、內存訪問地址、安全敏感函數的參數等受到污點數據的影響。本文將以下5 類操作稱為安全敏感操作(假設r3 為污點數據):
(1) 內存讀訪問地址被污染:如lwzr4,0xc(r3),通過變異讀訪問地址依賴的字段,可能造成讀訪問的內存不存在,引發讀訪問異常。如果讀取的內存內容,接下來作為函數調用的地址,可能引發代碼執行或者異常,如以下指令序列:

L1 將(r3 +0xc)指向的32 位內容,加載到寄存器r4,之后L2 將r4 的值賦給寄存器ctr,L3 直接跳轉到ctr 指向的地址處執行。
(2) 內存寫訪問地址被污染:如stwr4,0xc(r3),通過變異寫訪問地址依賴的字段,可能造成寫訪問的內存不存在或者改寫破壞內存,引發寫異常或關鍵數據破壞。
(3) 跳轉、調用目的地址被污染:如mtctrr3;bctrl。第1 條指令將寄存器r3 的值傳遞給ctr 寄存器;第2 條指令意思是跳轉到ctr 寄存器所指向的地址處執行,并設置lr 寄存器為下一條指令的地址,執行完后,返回到lr 指向的地址處執行。通過變異所依賴的字段,可能導致程序執行任意代碼。
(4) 跳轉、調用目的地址處內容被污染:類似于(3),通過變異目的地址處內容所依賴的字段,可能導致程序執行任意代碼。
(5) 安全敏感函數的參數被污染:安全敏感函數主要包括不安全函數(如strcpy,sprintf)、內存分配函數(如malloc,realloc,calloc)以及內存拷貝函數(如memcpy)等,具體函數需要根據目標程序的特點來選取。如malloc 函數的size 參數被污染,通過變異size 所依賴的字段,控制內存分配的大小,可能造成size 整型異常,進而可能引發緩沖區溢出。
上述5 種安全敏感操作中,操作(1),操作(2)本質上是內存訪問的地址依賴于污點數據,操作(3),操作(4)是程序跳轉、調用目的地址或內容依賴于污點數據,操作(5)是安全敏感函數的參數依賴于污點數據。本文通過分析5 種情況的本質,提出了以下3 條基于細粒度動態污點分析的安全敏感操作判定規則:
R4:對于跳轉指令,如果其跳轉的目標地址或者目標地址處指令內容被污染,即:

其中,ba表示跳轉指令的目標地址;bv為ba處的指令內容。
則該操作為安全敏感操作,T(ba)∪T(bv)中的元素即為安全相關字段。
R5:對于內存訪問指令,如果內存訪問的地址被污染,即:

其中ma表示內存訪問的有效地址,則該操作為安全敏感操作,T(ma)中的元素即為安全相關字段。
R6:對于函數調用,如果該函數為安全敏感函數,且該函數的傳入參數被污染,即:

其中,ARGIN為函數傳入參數的集合,且ARGIN={ArgIN1,ArgIN2,…,ArgINn},則該操作為安全敏感操作,T(ARGIN)中的元素即為安全相關字段。
本文將滿足上述安全敏感操作判定規則的行為進行報警,記錄具體行為以及安全相關字段信息。在生成測試用例時,使用如邊界值等異常元素對安全相關字段進行變異,實現啟發式測試用例生成技術。
本文基于細粒度動態污點分析的啟發式模糊測試方法,設計并實現了Cisco IOS 下的漏洞挖掘原型系統CTaintMiner,下面對系統的設計與實現,以及系統的實驗評估進行闡述。
CTaintMiner 是Cisco IOS 下的漏洞挖掘原型系統,主要由目標端和測試端兩部分組成。其中目標端包括基礎平臺模塊、污點引入模塊、污點跟蹤模塊、信息反饋模塊和異常監視模塊;測試端包括測試用例生成模塊、消息收發模塊和網絡同步模塊。CTaintMiner 系統整體結構如圖2 所示。

圖2 CTaintMiner 系統整體結構
其中,基礎平臺模塊,主要基于Cisco 模擬器Dynamips[15]實現,主要負責路由器硬件模擬,并加載運行Cisco IOS;污點引入模塊,負責對外部輸入(這里指網絡數據報文)進行污點標定,確立污點數據源;污點跟蹤模塊,負責在程序運行過程中,跟蹤污點的傳播過程。信息反饋模塊,應用安全敏感操作判定規則對Cisco IOS 系統運行和污點傳播結果進行分析監測,對滿足判定規則的敏感操作進行報警,并將IOS 內部運行時信息反饋給測試端的測試用例生成模塊,從而指導測試用例生成;異常監視模塊,負責監視IOS 的運行狀況,出現異常及時報警。測試用例生成模塊,結合協議腳本與異常元素庫,針對啟發式信息中反饋的協議安全相關字段進行變異,生成測試用例;消息收發模塊,負責測試過程中的消息發送與接收;網絡同步模塊,負責同步測試端與目標端的網絡通信。
實驗測試環境為在Intel Pentium 雙核E5700 3.0 GHz CPU,3 GB 內存,主機操作系統為Windows XP sp3,在操作系統為ubuntu12.04 的虛擬機中運行CTaintMiner。
CTaintMiner 基于細粒度污點分析,通過跟蹤數據報文處理過程,識別協議安全相關字段,指導測試用例生成,以此來提高測試的效率。因此,對于協議安全相關字段的識別能力,直接影響CTaintMiner 系統的功能。本文選擇了路由器常用的2 種協議NHRP 和DHCP,對CTaintMiner 系統的協議安全相關字段識別能力進行了實驗測試。圖3 是CTaintMiner進行測試時,獲取的協議安全相關字段的記錄信息。協議安全相關字段識別實驗結果如表2所示。

圖3 協議安全相關字段的信息

表2 協議安全相關字段識別結果
在圖3 中,可以看到Cisco IOS 在處理某協議數據報文時,系統內部內存分配函數alloc 的長度參數為污點數據,受到輸入數據報文的第52 Byte、第53 Byte(從0 開始編號)的影響,數據報文的標識是“1406”。在記錄信息中,還詳細記錄了污點傳播的情況,第6 行~第10 行,記錄了寄存器r22 污染內存單元0x8218c170 的情況,大括號中的內容為依賴的輸入數據字節,中括號中的內容為輸入數據報文的標識。
在表2 中,第1 列是協議類型,本文主要選取了NHRP 和DHCP 2 種協議作為示例。第2 列是同種協議的不同消息類型數據報文。第3 列給出的是輸入數據報文的大小,該大小沒有計入底層的協議(如IP 層等)。第4 列給出的是數據報文中影響Cisco IOS 內部安全敏感操作的協議安全相關字段的字節數,從表中可以看出協議安全相關字段占整個輸入數據報文的比例相當小,不到整個輸入的3.2%(第4 列中所有值之和除以第3 列中所有值之和)。因此,針對這些字段進行變異生成測試用例,能夠提高測試效率。
為了驗證協議安全相關字段識別的有效性,本文對FTP,TFTP、NHRP,DHCP 等多個協議進行了協議安全相關字段進行獲取,并根據協議規范,通過CTaintMiner 系統中的測試用例生成模塊,利用異常元素庫中的元素針對獲取的協議安全相關字段進行變異,生成畸形的測試用例進行測試。
目前,使用CTaintMiner 系統重現了1 個NHRP緩沖區溢出漏洞[16]、1 個DHCP 拒絕服務攻擊漏洞[17]、1 個TFTP 長文件名漏洞[18]以及2 個FTP 緩沖區溢出漏洞[19]。雖然是已公開漏洞,但Cisco 公司并沒有公開漏洞細節。因此,實驗結果說明了CTaint-Miner 原型系統具有很強的實用性,論證了基于細粒度污點分析的啟發式模糊測試方法的有效性。
本文立足安全性需求,結合Cisco IOS 自身的特點,提出一種基于細粒度污點分析的啟發式模糊測試漏洞挖掘方法,設計并實現了一個漏洞挖掘原型系統CTaintMiner,該系統能夠識別協議數據報文中的協議安全相關字段,繼而針對這些字段進行變異生成測試用例,進行漏洞挖掘。但系統仍存在不足,CTaintMiner 實現的是在線的細粒度污點分析,再植入了細粒度污點分析模塊后,性能上出現明顯下降,如在處理SSH 加密協議登錄過程中的D-H Key Exchange Init 類型數據報文時,時延比較明顯。因此,如何優化系統結構、提高系統性能將是下一步的工作的重點。
[1]Bollapragada V,Murphy C,White R.Inside Cisco IOS Software Architecture[Z].Cisco Company,2000.
[2]Felix Linder.Design and Software Vulnerability in Embedded System[EB/OL].(2013-10-21).https://www.blackhat.com/presentation/bh-usa-03/bh-fed-03-fx.pdf.
[3]Linder F.Cisco Vulnerabilities-yesterday,Today and Tomorrow [ EB/OL].(2013-10-21).http://www.blackhat.com/presentati-on-bh-usa/bh-us-03-fx.pdf.
[4]Lynn M.The Holy Grail:Cisco IOS Shellcode and Exploitation Techniques [ EB/OL].(2005-10-13).http://cryptome.org/ly-nn-cis-co.pdf.
[5]Cadar C,Dunbar D,Engler D R.KLEE:Unassisted and Automatic Generation of High-coverage Tests for Complex Systems Programs[C]//Proceedings of OSDI’08.[S.1.]:IEEE Press,2008:209-224.
[6]Cadar C,Ganesh V,Pawlowski P M,et al.EXE:Automatically Generating Inputs of Death[J].ACM Transactions on Information and System Security,2008,12(2):10-18.
[7]Godefroid P,Klarlund N,Sen K.DART:Directed Automated Random Testing[J].ACM Sigplan Notices,2005,40(6):213-223.
[8]Godefroid P,Levin M Y,Molnar D A.Automated Whitebox Fuzz Testing[C]//Proceedings of NDSS’08.[S.1.]:IEEE Press,2008:151-166.
[9]Molnar D,Li X C,Wagner D A.Dynamic Test Generation to Find Integer Bugs in x86 Binary Linux Programs[C]//Proceedings of the 18th Conference on USENIX Security Symposium.[S.1.]:USENIX Association Press,2009:67-82.
[10]Brumley D,Hartwig C,Kang M G,et al.Bitscope:Automatically Dissecting Malicious Binaries[R].School of Computer Science,Carnegie Mellon University,Technical Report:CMU-CS-07-133,2007.
[11]Bekrar S,Bekrar C,Groz R,et al.A Taint Based Approach for Smart Fuzzing[C]//Proceedings of the 5th IEEE International Conference on Software Testing,Verification and Validation.[S.1.]:IEEE Press,2012:818-825.
[12]王鐵磊.面向二進制程序的安全漏洞挖掘關鍵技術研究[D].北京:北京大學,2010.
[13]Mu?iz S,Ortega A.Fuzzing and Debugging Cisco IOS [EB/OL].(2011-10-10).https://media.blackhat.com/bh-eu-11/Sebastian_Muniz/BlackHat _EU _2011 _MunizOrtega_Cisco_iOS-WP.pdf.
[14]蘇曉艷,武東英,劉 龍,等.基于Fuzzing 的Cisco IOS 漏洞挖掘方法[J].計算機工程,2012,38(16):117-120.
[15]Anuzellil G.Dynamips/DynagenTutorial [ EB/OL ].(2011-10-12).http://materias.fi.uba.ar/7543/2010-02/ download/DynamipsTutorial.doc.
[16]Cisco IOS Next Hop Resolution Protocol Vulnerability[EB/OL].(2007-10-12).http://tools.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-20070808-nhrp.
[17]Cisco IOS Software DHCP Denial of Service Vulnerability[EB/OL].(2012-10-12).http://tools.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-20 120926-dhcp.
[18]TFTP Long Filename Vulnerability[EB/OL].(2012-10-12).http://tools.cisco.com/security/center/ content/CiscoSecurityAdvisory/cisco-sa-20020730-ioc-tftp-lfn.
[19]Multiple Vulnerabilities in the IOS FTP Server[EB/OL].(2007-10-12).http://tools.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-20070509-iosftp.