摘要
本文介紹軟件定義車聯(lián)網(wǎng)的體系和漏洞挖掘相關(guān)技術(shù)。分別就傳統(tǒng)車聯(lián)網(wǎng)體系、SDN 基本原理、軟件定義車聯(lián)網(wǎng)架構(gòu)三個(gè)方面闡述軟件定義車聯(lián)網(wǎng),就一般漏洞挖掘方法分類和模糊測試兩個(gè)方面闡述漏洞挖掘技術(shù)。
1 車聯(lián)網(wǎng)組網(wǎng)技術(shù)概述
1.1 傳統(tǒng)車聯(lián)網(wǎng)技術(shù)
隨著汽車數(shù)量的不斷增長,世界上許多國家都面臨隨著嚴(yán)重的交通堵塞和環(huán) 境污染問題。為了解決這種問題,各國先后在推廣車輛限行、擴(kuò)大公共交通、發(fā)展新能源汽車等方面進(jìn)行了諸多嘗試,但結(jié)果均差強(qiáng)人意。近年來,隨著5G、人工智能、邊緣計(jì)算等技術(shù)的不斷發(fā)展進(jìn)步,智慧交通逐漸成為研究的熱點(diǎn)。車聯(lián)網(wǎng)作為智慧交通建設(shè)的重要基礎(chǔ),具備道路感知、車輛感知、行人感知等特性,在提升道路安全和提升通行效率方面具有天然的優(yōu)勢。車聯(lián)網(wǎng)的發(fā)展主要經(jīng)歷了早期的VANET技術(shù)和如今的V2X技術(shù)兩個(gè)階段。
VANET的概念起源于移動自組織網(wǎng)絡(luò)(Mobile Ad-hoc Network,MANET) , 繼承了其動態(tài)拓?fù)洹⒆詣咏M網(wǎng)和位置分散的特點(diǎn)。VANET的基本架構(gòu)中主要包含兩種類型的車輛通信:車輛到車輛(Vehicle-to-Vehicle,V2V)通信,車輛到基礎(chǔ)設(shè)施(Vehicle to Infrastructure,V2I)通信。通過V2V通信,車輛可以實(shí)時(shí)監(jiān)控附近道路上其他車輛的信息,為駕駛提供高科技解決方案,實(shí)現(xiàn)車輛安全和智能駕駛。通過V2T通信,車輛可以獲知有關(guān)周圍各種設(shè)施的信息,實(shí)現(xiàn)數(shù)據(jù)網(wǎng)絡(luò)訪問和服務(wù)信息獲取。VANET的通信系統(tǒng)通常由路邊單元(Road Side Unit,RSU),車載單元(On-board Unit,OBU)和專用的短距離無線通信協(xié)議組成,確保了車輛能夠在移動環(huán)境下能夠獲得網(wǎng)絡(luò)接入。
V2X思想的出現(xiàn)得益于物聯(lián)網(wǎng)的高速發(fā)展,5G的出現(xiàn)帶來的高吞吐與低時(shí)延特性使得車輛與萬物互聯(lián)成為可能。V2X通信分為五種主要類型,除了上述的V2V和V2I以外,還包括車輛到行人(Vehicle-to-Pedestrian,V2P) 通信、車輛到設(shè)備通信(Vehicle-to-Device,V2D)以及車輛到網(wǎng)絡(luò)(Vehicle-to-Network,V2N)通信。V2P旨在在車輛與用戶隨身攜帶的設(shè)備之間建立通信,可以實(shí)現(xiàn)人對車輛的非接觸控制,比如遠(yuǎn)程開關(guān)車門。可以滿足用戶對車輛信息的獲取,比如基于定位的距離提醒和對車輛自身屬性的感知等等。V2P雖然是通過與人攜帶的設(shè)備通信,但其核心在于以人為本的通信服務(wù),而V2D指的是車輛與自身搭載的所有電子設(shè)備之間進(jìn)行信息交換,比如紅外傳感器、車載藍(lán)牙設(shè)備、智能攝像頭等。V2N旨在將車輛與云端車聯(lián)網(wǎng)平臺連接到一起,通過云平臺的統(tǒng)一管理實(shí)現(xiàn)路徑規(guī)劃、精準(zhǔn)定位、信息娛樂等功能。如圖1是一個(gè)典型的車聯(lián)網(wǎng)架構(gòu)。
圖1 車聯(lián)網(wǎng)基本架構(gòu)圖
國際上主流的車聯(lián)網(wǎng)中無線通信技術(shù)主要有兩種,一種是基于802.11P的專用短程通信(Dedicated Short-Range Communications,DSRC)技術(shù),另一種是基于蜂窩移動網(wǎng)絡(luò)(Cellular V2X,C-V2X)的通信技術(shù)。歐美等汽車發(fā)達(dá)國家起步較早,已經(jīng)對DSRC技術(shù)有了較為成熟的研究和應(yīng)用,但隨著頻譜劃分越來越細(xì)和標(biāo)準(zhǔn)制定的困難,DSRC發(fā)展增速放緩。近幾年中國大力發(fā)展4G和5G,在C-V2X的研究道路上屬于后起之秀。C-V2X能夠復(fù)用舊式蜂窩網(wǎng)絡(luò),信號覆蓋范圍廣,運(yùn)營模式經(jīng)歷了多年實(shí)踐日益精進(jìn),是當(dāng)前首選的V2X通信技術(shù)。
總體來看,車聯(lián)網(wǎng)具有如下特性:
(1) 天然的高速移動性。車輛的自身使命就是移動,由此帶來了高變化的動態(tài)拓?fù)洹⑼ㄐ沛溌肪S持時(shí)間短等弊端,但也為移動邊緣計(jì)算、邊緣存儲等新興技術(shù)提供了孵化場景,有利也有弊。
(2) 需要持續(xù)、可靠、穩(wěn)定通信連接,對實(shí)時(shí)性要求極高。自動駕駛、交通安全等應(yīng)用場景下必須保證極低的時(shí)延和穩(wěn)定的連接,否則便有可能引起安全事故。而車輛的連接容易受到復(fù)雜環(huán)境因素的干擾,因此必須解決通信服務(wù)質(zhì)量才有可能提供安全穩(wěn)定的車聯(lián)網(wǎng)服務(wù)。
(3) 統(tǒng)一管理難度逐步加大。多種無線通信技術(shù)、異構(gòu)網(wǎng)絡(luò)、新型網(wǎng)絡(luò)設(shè)備 的加入,使得對車聯(lián)網(wǎng)的統(tǒng)一管理難度加大,網(wǎng)絡(luò)拓?fù)潆y以在短時(shí)間內(nèi)快速獲取,基于云端的車聯(lián)網(wǎng)管理平臺又存在一定延遲,網(wǎng)絡(luò)的管理成本逐步增加。
1.2 軟件定義網(wǎng)絡(luò)基礎(chǔ)
SDN的概念最早由美國斯坦福大學(xué)的McKeown教授及其團(tuán)隊(duì)提出,主要目的是用于解決傳統(tǒng)因特網(wǎng)封閉式網(wǎng)絡(luò)架構(gòu)設(shè)計(jì)帶來的難以進(jìn)化發(fā)展的問題。從網(wǎng)絡(luò)發(fā)展歷史來看,SDN的誕生具有其客觀必然性。傳統(tǒng)網(wǎng)絡(luò)經(jīng)歷了幾十多年的發(fā)展早已變得臃腫不堪,期間產(chǎn)生了為數(shù)眾多的的通信協(xié)議和網(wǎng)絡(luò)設(shè)備,每一次新型協(xié)議部署和設(shè)備升級都耗時(shí)耗力,越發(fā)困難重重。SDN憑借其數(shù)據(jù)轉(zhuǎn)發(fā)和控制分離的新穎思想快速獲得了來自學(xué)術(shù)界和工業(yè)界一致的青睞。時(shí)至今日,全世界已經(jīng)有諸如谷歌、Facebook等大廠將SDN技術(shù)應(yīng)用于其商業(yè)化的數(shù)據(jù)中心。SDN的早期發(fā)展歷史如表1所示。
表1 SDN早期發(fā)展歷史
1.2.1 SDN 網(wǎng)絡(luò)架構(gòu)
SDN采用分層思想設(shè)計(jì),將傳統(tǒng)網(wǎng)絡(luò)功能中的數(shù)據(jù)轉(zhuǎn)發(fā)和控制進(jìn)行解耦分離,形成了自上而下的“應(yīng)用層—控制層—數(shù)據(jù)層”的三層網(wǎng)絡(luò)架構(gòu)模型。每一層的功能與其各自的名稱高度對應(yīng)。應(yīng)用層主要負(fù)責(zé)實(shí)現(xiàn)基于底層網(wǎng)絡(luò)資源實(shí)現(xiàn)的各種功能型應(yīng)用以滿足不同用戶對于網(wǎng)絡(luò)功能的不同需求,主要包括負(fù)載均衡、路由、服務(wù)質(zhì)量、防火墻等功能,這些應(yīng)用由專業(yè)人員根據(jù)需求進(jìn)行定制化開發(fā),實(shí)現(xiàn)了網(wǎng)絡(luò)的可編程能力。控制層是應(yīng)用層和數(shù)據(jù)層交互的媒介,用于控制整個(gè)網(wǎng)絡(luò)中的數(shù)據(jù)轉(zhuǎn)發(fā)規(guī)則。控制層通過基于軟件實(shí)現(xiàn)的SDN控制器實(shí)時(shí)收集來自數(shù)據(jù)層的整個(gè)網(wǎng)絡(luò)中的信息和狀態(tài),通過北向接口(North Bound Interface,NBI)向上提供給應(yīng)用層,并具備將來自應(yīng)用層的規(guī)則轉(zhuǎn)譯為底層硬件設(shè)備能夠執(zhí)行的硬件級指令能力,將其通過南向接口(South Bound Interface,SBI)下發(fā)到數(shù)據(jù)層以執(zhí)行來自上層的命令。這一過程與高級編程語言經(jīng)過編譯器編譯后轉(zhuǎn)換成機(jī)器可以執(zhí)行的機(jī)器碼過程極為類似,這也是SDN設(shè)計(jì)理念借鑒了計(jì)算機(jī)設(shè)計(jì)原理的精華而具備可行性的原因所在。在實(shí)際應(yīng)用中,SDN控制器可以根據(jù)需求以分布式的形式而存在,物理分散而邏輯集中,滿足實(shí)際網(wǎng)絡(luò)應(yīng)用中豐富的需求類型。數(shù)據(jù)層位于三層架構(gòu)的最底層,由SDN交換機(jī)及其他各種網(wǎng)絡(luò)設(shè)備組成,主要負(fù)責(zé)整個(gè)網(wǎng)絡(luò)中的數(shù)據(jù)轉(zhuǎn)發(fā)功能。SDN交換機(jī)通過控制器統(tǒng)一下發(fā)的流表來匹配每一項(xiàng)數(shù)據(jù)流的執(zhí)行動作,整個(gè)數(shù)據(jù)層資源被抽象成統(tǒng)一的硬件模型,所有網(wǎng)絡(luò)協(xié)議通過控制器和流表來實(shí)現(xiàn),從而提升了網(wǎng)絡(luò)的靈活性和可擴(kuò)展性。
圖2 SDN基本架構(gòu)圖
由于SDN采用了分層架構(gòu)設(shè)計(jì),因此從北到南各層之間的通信通過南/北向接口來實(shí)現(xiàn)。SBI提供了控制器對數(shù)據(jù)層抽象硬件資源的編程能力,而NBI提供了應(yīng)用層對控制器的編程能力。在SDN發(fā)展歷程中,OpenFlow協(xié)議是最早采用的也是ONF官方提出的SBI標(biāo)準(zhǔn)協(xié)議,因此主流的SDN控制器都采用OpenFlow協(xié)議作為SBI,而NBI目前還在統(tǒng)一標(biāo)準(zhǔn)化的道路上不斷探索前進(jìn),因此不同的 控制器擁有不同的NBI。另外,有學(xué)者提出了SDN東西向接口(EastWest Bound Interface,E/WBI)的概念,用于實(shí)現(xiàn)多個(gè)SDN 集群之間進(jìn)行控制器間的跨域通信,這將進(jìn)一步拓寬SDN網(wǎng)絡(luò)之間和傳統(tǒng)網(wǎng)絡(luò)的對接能力。主流的SDN架構(gòu)圖如圖2所示。
SDN的本質(zhì)在于控制和轉(zhuǎn)發(fā)的分離,具體體現(xiàn)在網(wǎng)絡(luò)設(shè)備的軟硬件解耦、控制層與數(shù)據(jù)層解耦。基于統(tǒng)一的全局網(wǎng)絡(luò)資源視圖和對網(wǎng)絡(luò)資源進(jìn)行抽象的南北向接口,提供了整體網(wǎng)絡(luò)可編程性,從而使得SDN拓寬了很多領(lǐng)域的問題解決方案。有效實(shí)現(xiàn)了網(wǎng)絡(luò)資源的抽象隔離,解決了網(wǎng)絡(luò)資源沖突,提高了網(wǎng)絡(luò)資源分配效率。
1.2.2 OpenFlow協(xié)議
OpenFlow協(xié)議屬于數(shù)據(jù)鏈路層通信協(xié)議,最早由斯坦福大學(xué)提出并應(yīng)用于SDN中作為統(tǒng)一控制數(shù)據(jù)層資源的通信協(xié)議,使得SDN控制器能夠與硬件之間進(jìn)行直接交互。經(jīng)歷了十多年的發(fā)展和ONF的大力支持,OpenFlow已經(jīng)成為全世界使用最廣泛的 SDN南向接口協(xié)議。OpenFlow體系由支持OpenFlow的控制器和交換機(jī)以及不斷更新完善的OpenFlow協(xié)議共同組成,它將數(shù)據(jù)層抽像出來并構(gòu)成一個(gè)多級流表轉(zhuǎn)發(fā)模型。OpenFlow協(xié)議允許軟件應(yīng)用程序?qū)Σ煌粨Q機(jī)的流表進(jìn)行編程。OpenFlow交換機(jī)使用流表轉(zhuǎn)發(fā)數(shù)據(jù)包。流表是流條目的列表集合,每個(gè)條目都有匹配字段、計(jì)數(shù)器和指令三個(gè)流表項(xiàng)。傳入交換機(jī)的數(shù)據(jù)包將與每個(gè)條目的匹配字段進(jìn)行比較,如果存在匹配,則根據(jù)該條目包含的操作對數(shù)據(jù)包進(jìn)行處理。計(jì)數(shù)器用于保持有關(guān)數(shù)據(jù)包的統(tǒng)計(jì)信息。指令代表交換機(jī)對該數(shù)據(jù)包執(zhí)行的動作。如圖3是一個(gè)基本的OpenFlow流結(jié)構(gòu)。
圖3 SDN流結(jié)構(gòu)
OpenFlow協(xié)議在ONF組織的不斷推進(jìn)下,經(jīng)歷了多個(gè)版本的變遷。Open- Flow 1.0是一個(gè)推出用于商業(yè)用途的版本,僅支持單個(gè)流表和IPv4網(wǎng)絡(luò);OpenFlow 1.1版本加入了對多級流表和組表的支持;隨著SDN架構(gòu)的完善和演進(jìn),在Open- Flow1.2版本中加入了對多控制器的支持,同時(shí)還支持了IPv6網(wǎng)絡(luò);之后OpenFlow的更迭速度不斷加快,但并非所有的網(wǎng)絡(luò)設(shè)備都支持最新協(xié)議,因此在OpenFlow 1.3版本中加入了對使用協(xié)議版本的協(xié)商功能,控制器和交換機(jī)之間可以經(jīng)過協(xié)商統(tǒng)一后自由選擇使用的OpenFlow協(xié)議版本。隨后的OpenFlow 1.4和1.5版本繼續(xù)在流表功能和使用機(jī)制方面持續(xù)改進(jìn)和完善,目前,部署率最高且穩(wěn)定性最好的是OpenFlow 1.3版本。然而,萬變不離其宗,OpenFlow中的消息類型按照消息發(fā)起對象的不同可分為3種,分別為異步(Asynchronous)消息、控制器到交換機(jī)(Controler-to-Switch)消息和對稱(Symmetric)消息。
(1) 異步消息
異步消息的主動發(fā)起方為OpenFlow交換機(jī),由交換機(jī)單向傳遞給控制器。旨在主動告知控制器當(dāng)前交換機(jī)的狀態(tài),用于通知控制器有新類型的數(shù)據(jù)包到達(dá)、網(wǎng)絡(luò)錯(cuò)誤或交換機(jī)發(fā)生故障等。常見的消息頭有:Port-Status用于通知刷新交換機(jī)端口狀態(tài);Packer-in用于通知未與流表匹配的數(shù)據(jù)包到達(dá),請求控制器給予下一步的指示、Flou-Removed用于通知流表被刪除以及Error用于通知交換機(jī)自身故障。
(2) 控制器到交換機(jī)消息
控制器到交換機(jī)消息顧名思義發(fā)起方為控制器,由控制器單項(xiàng)傳遞給Open- Flow交換機(jī)。旨在主動獲得交換機(jī)狀態(tài)和對交換機(jī)進(jìn)行查詢配置。常見的消息頭有:Features用于查詢特定交換機(jī)的特性,比如支持的版本協(xié)議;Modify-State用于對交換機(jī)進(jìn)行配置,最常見的場景就是安裝和更改流表;Configuration用于查詢交換機(jī)硬件性能配置參數(shù);Read-State用于查詢交換機(jī)上與流表相關(guān)的統(tǒng)計(jì)信息;Send-Packet用于通過指定端口發(fā)送數(shù)據(jù)包;Barrier用于阻塞消息直到確認(rèn)收到操作完成通知。
(3) 對稱消息
對稱消息的發(fā)起方可以是控制器和交換機(jī)中的任意一方,主要用于雙方之間進(jìn)行消息交互。對稱消息與上述兩種消息類型的最大區(qū)別在于消息的傳遞遵循時(shí)間先后順序關(guān)系。常見的消息頭有:Hello用于在建立連接時(shí)雙方握手;Echo消息用于確認(rèn)雙方之間連接狀態(tài)情況;Vendor消息用于實(shí)現(xiàn)一些廠商自定義的功能。
OpenFlow交換機(jī)是OpenFlow協(xié)議中流表的主要載體和具體實(shí)施對象。每當(dāng) 一個(gè)數(shù)據(jù)包通過端口到達(dá)交換機(jī)時(shí),交換機(jī)會自動尋找流表中與之匹配的流表項(xiàng)。如果匹配成功,那么便執(zhí)行流表項(xiàng)中動作字段定義的行為。一旦遇到匹配失敗的情況,交換機(jī)便向控制器發(fā)送異步Packer-in消息請求控制器下發(fā)新的流表規(guī)則來應(yīng)對該類型的數(shù)據(jù)包。控制器通過Modify-State消息安裝新的流表規(guī)則到交 換機(jī)即可實(shí)現(xiàn)對先前未知數(shù)據(jù)包的匹配。需要注意的是,這種機(jī)制雖然簡單明了但存在被拒絕服務(wù)攻擊的風(fēng)險(xiǎn)。一旦攻擊者惡意制造大量的未知數(shù)據(jù)包便可造成交換機(jī)到控制器的通信帶寬資源被耗盡,從而導(dǎo)致正常的數(shù)據(jù)包無法得到新的流表規(guī)則匹配而大量阻塞,影響了正常的網(wǎng)絡(luò)通信。
目前世界上主流的SDN控制器均支持OpenFlow協(xié)議,部分還支持其他類型 的南向接口協(xié)議,因此一般對OpenFlow控制器和SDN控制器兩個(gè)概念不加以明確區(qū)分。目前已經(jīng)出現(xiàn)了許多種類的開源SDN控制器,每種各有其優(yōu)勢和特點(diǎn)。基于Python模塊化開發(fā)的Ryu以及軟件商與設(shè)備商主導(dǎo)的OpenDaylight是最著名的兩大SDN控制器。主流的SDN控制器對比如表2所示。
表2 主流開源SDN控制器對比
1.3 軟件定義車聯(lián)網(wǎng)
傳統(tǒng)車聯(lián)網(wǎng)由于其分布式特性,無法獲取整體網(wǎng)絡(luò)的全局視圖而導(dǎo)致其路由算法容易陷入局部最優(yōu),從而進(jìn)一步導(dǎo)致了資源分配不均和網(wǎng)絡(luò)利用率不高。車聯(lián)網(wǎng)與5G網(wǎng)絡(luò)、無線傳感器網(wǎng)絡(luò)等多種異構(gòu)網(wǎng)絡(luò)的融合,使得車聯(lián)網(wǎng)管理難度加大,部署新協(xié)議和新應(yīng)用的成本加大,可擴(kuò)展性不高。軟件定義車聯(lián)網(wǎng)架構(gòu)的提出為車聯(lián)網(wǎng)引入了SDN的思想,使得網(wǎng)絡(luò)編程成為可能,滿足了車聯(lián)網(wǎng)場景下日益豐富的用戶需求。同時(shí),SDN的高擴(kuò)展性和靈活性使得車聯(lián)網(wǎng)中新協(xié)議的部署和升級得以快速實(shí)現(xiàn),基于全局資源視圖的靈活管控方式使得車聯(lián)網(wǎng)走出了局部優(yōu)化的困境,迎來了全新的面貌。
圖4 軟件定義車聯(lián)網(wǎng)架構(gòu)圖
與SDN類似,軟件定義車聯(lián)網(wǎng)架構(gòu)分為應(yīng)用層、控制層和數(shù)據(jù)層,如圖4所示。從邏輯上講,它們是一種自上而下的結(jié)構(gòu),用于抽象車聯(lián)網(wǎng)資源并集成了多種技術(shù),例如云計(jì)算、霧計(jì)算和移動邊緣計(jì)算。應(yīng)用層可以滿足用戶和車輛的不同要求。通常,應(yīng)用層和控制層之間的NBI可以為網(wǎng)絡(luò)開發(fā)工程師提供編程接口以根據(jù)需求開發(fā)應(yīng)用程序,得到的車聯(lián)網(wǎng)應(yīng)用程序生成數(shù)據(jù)轉(zhuǎn)發(fā)規(guī)則和配置策略并將其發(fā)送給控制器進(jìn)行底層控制。控制層可以由一個(gè)或多個(gè)控制器組成,為車輛分配資源,向RSU、基站(Base Station,BS)等基礎(chǔ)設(shè)施下發(fā)配置數(shù)據(jù),提高數(shù)據(jù)傳輸效率.通過數(shù)據(jù)層的狀態(tài),SDN控制器可以觀察到全局網(wǎng)絡(luò)拓?fù)洌瑥亩梢詫?shí)現(xiàn)車聯(lián)網(wǎng)智能管控方案。數(shù)據(jù)層包含了所有的車聯(lián)網(wǎng)接入設(shè)施,如SDN交換機(jī)、車輛、RSU、BS等。主要承擔(dān)數(shù)據(jù)轉(zhuǎn)發(fā)功能和部分?jǐn)?shù)據(jù)存儲功能。車輛可以通過V2V與其他車輛通信,也可以通過V2I與RSU和BS等基礎(chǔ)設(shè)施通信。RSU可以在資源有限的情況下為周圍的車輛提供無線訪問,然后BS會向車輛傳輸無線信號。此外,RSU配備了由各種傳感器組成的信息收集模塊,因此可以提供周圍環(huán)境的狀態(tài)。
軟件定義車聯(lián)網(wǎng)作為一種異構(gòu)網(wǎng)絡(luò)架構(gòu),提供了多種無線通信的接入方式。控制器一般位于車聯(lián)網(wǎng)云端數(shù)據(jù)中心,通過光纖傳輸方式與基礎(chǔ)設(shè)施進(jìn)行通信。在控制與轉(zhuǎn)發(fā)分離的核心思想下,RSU和BS只保留提供網(wǎng)絡(luò)連接和轉(zhuǎn)發(fā)流表的功能,其對網(wǎng)絡(luò)數(shù)據(jù)的路由控制功能從原有設(shè)備中被解耦出來。SDN控制器對全局?jǐn)?shù)據(jù)層設(shè)備進(jìn)行集中控制和虛擬化,通過SBI接口向下發(fā)送數(shù)據(jù)規(guī)則包、收集數(shù) 據(jù)層狀態(tài)信息,之間采用的通信協(xié)議為OpenFlow協(xié)議。根據(jù)SDN控制器掌握的全局網(wǎng)絡(luò)信息,通過NBI接口進(jìn)行應(yīng)用層編程,實(shí)現(xiàn)了智能管理控制車聯(lián)網(wǎng)中的所有數(shù)據(jù),完成執(zhí)行規(guī)定的行為和功能。
2 漏洞挖掘技術(shù)概述
2.1 漏洞挖掘常用方法
漏洞挖掘是軟件和系統(tǒng)安全領(lǐng)域十分重要的一項(xiàng)技術(shù),能夠有效的提前預(yù)知系統(tǒng)中潛在的缺陷,提前發(fā)現(xiàn)威脅從而規(guī)避風(fēng)險(xiǎn)。早期的漏洞挖掘通常以人工干預(yù)為主,富有經(jīng)驗(yàn)的漏洞挖掘人員憑借自身實(shí)力對軟件和系統(tǒng)中存在的漏洞進(jìn)行挖掘,屬于經(jīng)驗(yàn)型方法。但隨著計(jì)算機(jī)規(guī)模的擴(kuò)大和互聯(lián)網(wǎng)產(chǎn)業(yè)的興起,純?nèi)斯ば问降穆┒赐诰蚍椒ú辉龠m合于日益激增的軟件應(yīng)用規(guī)模數(shù)量,此時(shí)出現(xiàn)了輔助漏洞挖掘的軟件,可以實(shí)現(xiàn)半自動化的批量分析,完成一些對分析對象的基本操作。再往后發(fā)展,隨著大數(shù)據(jù)、人工智能等技術(shù)的興起,開始出現(xiàn)一些具有針對性的全自動化漏洞挖掘系統(tǒng),例如對安卓APK的一鍵分析、對JAVA源代碼的靜態(tài)全自動掃描等,這些系統(tǒng)通常使用靜態(tài)化的漏洞挖掘方法,結(jié)果的可行度高,但存在一定的誤報(bào)率。
總的來說,從漏洞挖掘的過程來看可分為靜態(tài)挖掘和動態(tài)挖掘兩種。靜態(tài)挖掘即基于源程序的二進(jìn)制文件、源代碼,不對軟件系統(tǒng)啟動運(yùn)行,而是令其以靜態(tài)文件的形式存在,從文件格式、代碼關(guān)系上尋找出可能存在的漏洞。動態(tài)挖掘即將分析對象運(yùn)行起來,觀察其運(yùn)行期間的程序行為、讀寫操作、調(diào)用函數(shù)方面尋求突破。從漏洞挖掘的技術(shù)手段來看主要分為白盒測試、黑盒測試和灰盒測試三種。白盒測試是在對分析對象的內(nèi)部結(jié)構(gòu)、執(zhí)行流程、源代碼完全已知的情況下進(jìn)行的,常用的是基本路徑測試法用于自動化代碼審計(jì),市面上已經(jīng)有很多成熟的商業(yè)軟件可以使用,效果優(yōu)秀但價(jià)格昂貴;黑盒測試與白盒測試完全相對,漏洞挖掘人員對程序內(nèi)部的實(shí)現(xiàn)原理一無所知,僅能通過程序的輸入輸出對來判斷程序的行為是否異常,其中最著名的當(dāng)屬模糊測試技術(shù),其通過構(gòu)造大量的畸形數(shù)據(jù)集輸入給程序來使得程序發(fā)生崩潰或異常;灰盒測試介于白盒和黑盒二者之間,既對程序的執(zhí)行流程有一定的了解但又不完全知曉,著名的逆向工程方法便屬于這個(gè)范疇。漏洞挖掘人員通過逆向工程可以獲得程序的匯編代碼或反編譯偽代碼,從而可以推測出程序大致的運(yùn)行邏輯進(jìn)而發(fā)掘出存在的漏洞。
2.2 模糊測試漏洞挖掘技術(shù)
模糊測試是自動化漏洞挖掘領(lǐng)域最重要的方法之一,英文術(shù)語為“Fuzzing”。它通過構(gòu)造非預(yù)期的程序輸入以達(dá)到破壞程序正常運(yùn)行邏輯觸發(fā)崩潰的方式來挖掘漏洞。在這個(gè)過程中,目標(biāo)程序?qū)⒎磸?fù)被執(zhí)行給定的輸入并處理輸入數(shù)據(jù),模糊測試器(Fuzzer)通過捕獲程序的輸出和監(jiān)視程序的運(yùn)行狀態(tài)來判斷其是否異常。具體分為如下五個(gè)步驟:
(1) 目標(biāo)程序信息收集。對目標(biāo)程序的基本信息和詳細(xì)功能進(jìn)行分析,在這個(gè)過程中探究清楚程序的標(biāo)準(zhǔn)輸入輸出格式應(yīng)該是什么樣的:如果程序接受的輸入是文件,那么支持的文件格式類型有哪些;如果程序接受的輸入是字符流,那么字符流應(yīng)當(dāng)滿足什么樣的格式;對于正常輸入程序?qū)?yīng)的正常輸出應(yīng)當(dāng)是以何種形式呈現(xiàn)。
(2) 構(gòu)造模糊測試數(shù)據(jù)集。模糊測試數(shù)據(jù)集的好壞直接影響了模糊測試的效果。構(gòu)造數(shù)據(jù)集時(shí)要考慮到如何在已有數(shù)據(jù)上進(jìn)行變異或者如何動態(tài)生成新的數(shù)據(jù),并且這個(gè)過程需要通過算法完全自動化實(shí)現(xiàn)。
(3) 執(zhí)行模糊測試。模糊測試器自動將構(gòu)造的數(shù)據(jù)集作為輸入提供給程序,根據(jù)測試對象的不同可能是發(fā)包、打開文件或調(diào)起進(jìn)程,該過程也需要完全自動化實(shí)現(xiàn)。
(4) 監(jiān)視程序運(yùn)行狀態(tài)。為了詳細(xì)記錄程序發(fā)生異常時(shí)是由哪個(gè)數(shù)據(jù)包引起的、當(dāng)前程序處于什么狀態(tài)、系統(tǒng)異常信息等,模糊測試器在執(zhí)行模糊測試的過程中應(yīng)當(dāng)實(shí)時(shí)檢測程序,監(jiān)視過程與執(zhí)行過程應(yīng)當(dāng)是并行的。
(5) 記錄異常信息并分析。一旦監(jiān)視程序報(bào)告程序缺陷產(chǎn)生,模糊測試器應(yīng)當(dāng)詳細(xì)記錄引起異常的現(xiàn)場情況以便日后進(jìn)一步分析時(shí)的復(fù)現(xiàn)。在條件允許的情況下,還可以對程序缺陷加以一定的自動化分析,比如基于系統(tǒng)內(nèi)核調(diào)試器的可利用性分析等。
模糊測試的最大優(yōu)勢在于自動化進(jìn)行,代替了大量的人工操作,并且能夠發(fā)現(xiàn)一些正常情況下不會被發(fā)現(xiàn)的漏洞,比如著名的“臟牛”、“心臟出血”漏洞等就是通過模糊測試挖掘出來的。但模糊測試也存在一些弊端。首先,模糊測試對于非基于文件或數(shù)據(jù)流輸入的程序來說無法進(jìn)行。模糊測試的核心思想就是輸入和輸出,沒有輸入也就無法完成完整的上述五個(gè)步驟;其次,模糊測試的方向是盲目的,容易陷入局部困境或遇到路徑爆炸的難題,在現(xiàn)有計(jì)算機(jī)算力下,對于大型程序來說很難窮盡所有可能的程序執(zhí)行路徑,因此模糊測試與人工智能結(jié)合是一個(gè)很有價(jià)值的研究方向;還有,模糊測試雖然可以引起目標(biāo)程序發(fā)生異常,但無法自動化判斷這個(gè)異常是否是可利用的漏洞,自動化漏洞利用(Automatic Exploit Generation)是另一個(gè)復(fù)雜研究領(lǐng)域,通常使用符號執(zhí)行等方法,不在模糊測試技術(shù)的考慮范圍之內(nèi)。
3 總結(jié)
本文主要對軟件定義車聯(lián)網(wǎng)的組網(wǎng)技術(shù)和漏洞挖掘的常用方法進(jìn)行了概述。第一部分介紹了傳統(tǒng)車聯(lián)網(wǎng)技術(shù)和SDN的基本架構(gòu),以及二者結(jié)合形成的軟件定義車聯(lián)網(wǎng)基本功能和原理。第二部分詳細(xì)闡述了常用的漏洞挖掘方法,其中白盒測試存在自動化程度低、耗時(shí)長、誤報(bào)率高等缺點(diǎn),且對于不同的SDN控制器需要分別設(shè)計(jì),可移植性較差;黑盒測試方法雖然具備較高的自動化程度和一定的通用性,但現(xiàn)有的的模糊測試樣本生成算法無法滿足新型網(wǎng)絡(luò)架構(gòu)下的應(yīng)用需求,需要重新設(shè)計(jì)新的漏洞挖掘模型和算法以適用于軟件定義車聯(lián)網(wǎng)架構(gòu)。
審核編輯 :李倩
-
物聯(lián)網(wǎng)
+關(guān)注
關(guān)注
2930文章
46221瀏覽量
392251 -
車聯(lián)網(wǎng)
+關(guān)注
關(guān)注
76文章
2656瀏覽量
92711 -
漏洞
+關(guān)注
關(guān)注
0文章
205瀏覽量
15692
原文標(biāo)題:軟件定義車聯(lián)網(wǎng)的體系和漏洞挖掘相關(guān)技術(shù)概述
文章出處:【微信號:哆啦安全,微信公眾號:哆啦安全】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
物聯(lián)網(wǎng)技術(shù)促進(jìn)能量收集創(chuàng)新應(yīng)用落地

物聯(lián)網(wǎng)的應(yīng)用范圍有哪些?
物聯(lián)網(wǎng)技術(shù)與智慧公廁系統(tǒng)解決方案

物聯(lián)網(wǎng)技術(shù)如何影響可持續(xù)發(fā)展
藍(lán)牙Mesh與WiFi Mesh組網(wǎng)的對比
恒訊科技分析:自組網(wǎng)技術(shù)在移動設(shè)備上的應(yīng)用有哪些優(yōu)勢?
物聯(lián)網(wǎng)就業(yè)有哪些高薪崗位?
恒訊科技分析:SD-WAN組網(wǎng)技術(shù)對傳統(tǒng)網(wǎng)絡(luò)有何改變?
物聯(lián)網(wǎng)系統(tǒng)的安全漏洞分析
物聯(lián)網(wǎng)技術(shù)的挑戰(zhàn)與機(jī)遇
物聯(lián)網(wǎng)技術(shù)的未來發(fā)展
基于CC1310的6LOWPAN組網(wǎng)技術(shù)的應(yīng)用

評論