作者 | J小編 | 吃不飽模糊測(cè)試是網(wǎng)絡(luò)安全測(cè)試領(lǐng)域必然會(huì)被提及的一類測(cè)試方法。它有著極其鮮明的特點(diǎn),包括極低的需求依賴性、可逆向的測(cè)試?yán)砟畹龋c常規(guī)測(cè)試方法顯得是那么的“風(fēng)格迥異”。但同時(shí),這種測(cè)試方法又常常能發(fā)現(xiàn)一些核心、嚴(yán)重的BUG,因此其在整個(gè)測(cè)試體系中有著重要的地位,且這種測(cè)試方法也已“潤物細(xì)無聲”地融入到我們的測(cè)試活動(dòng)中了。本次就為大家介紹如何在車載通信領(lǐng)域運(yùn)用模糊測(cè)試。
1
什么是模糊測(cè)試
模糊測(cè)試的整體測(cè)試思路非常簡(jiǎn)單,給待測(cè)系統(tǒng)輸入“隨機(jī)值”,然后監(jiān)測(cè)是否出現(xiàn)異常。
圖1 模糊測(cè)試示意圖這個(gè)過程中有這樣幾個(gè)特點(diǎn):
1
/ 隨機(jī)值
隨機(jī)值可以是正常的數(shù)據(jù),也可以是非預(yù)期的數(shù)據(jù),通??梢酝ㄟ^變異(篡改原有數(shù)據(jù))和生成(通過規(guī)則偽造數(shù)據(jù))來獲得。且整個(gè)測(cè)試不是找?guī)讉€(gè)隨機(jī)值來做測(cè)試,而是不斷地輸入大量的隨機(jī)值(可以理解為無窮盡)來做長(zhǎng)時(shí)間的持續(xù)測(cè)試。
圖2 功能性測(cè)試與模糊測(cè)試對(duì)比
2
/ 監(jiān)測(cè)異常
正是由于待測(cè)系統(tǒng)可能接收處理非預(yù)期數(shù)據(jù),因此其會(huì)有各種各樣的表現(xiàn)。而異常表現(xiàn)可以是服務(wù)停止、程序崩潰,也可以是資源過載、數(shù)據(jù)丟失。
3
/ 自動(dòng)化
每個(gè)測(cè)試輪次都是給定輸入然后監(jiān)測(cè)異常,而對(duì)于模糊測(cè)試來說,這樣的輪次需要執(zhí)行非常多的次數(shù),甚至可以永無止境,所以自動(dòng)化是基本必須要實(shí)現(xiàn)的內(nèi)容。
2
模糊測(cè)試運(yùn)用到車載通信
雖然模糊測(cè)試在車載通信測(cè)試中很少被單獨(dú)拿出來,但實(shí)則我們?cè)诤芏嗟臏y(cè)試中使用了這種方法。比如:
CAN通信測(cè)試中的高負(fù)載測(cè)試
對(duì)CAN通信注入特定的報(bào)文,形成期望的負(fù)載條件,然后監(jiān)測(cè)是否有異常。這個(gè)測(cè)試中的隨機(jī)值變量為負(fù)載率和產(chǎn)生負(fù)載的報(bào)文ID,異常的判斷可能包括錯(cuò)誤幀、通信恢復(fù)等,這就形成了一個(gè)高負(fù)載模糊測(cè)試。
網(wǎng)絡(luò)管理中的休眠喚醒測(cè)試
在控制器休眠的各個(gè)時(shí)刻觸發(fā)喚醒事件,然后監(jiān)測(cè)是否正常喚醒。這個(gè)測(cè)試中隨機(jī)值變量是時(shí)序,即喚醒事件的觸發(fā)是在什么時(shí)刻,異常的判斷是喚醒行為,這就形成了一個(gè)休眠喚醒時(shí)序模糊測(cè)試。
這里舉的2個(gè)例子比較特別,想要說明的是我們提及的隨機(jī)值并不僅僅是協(xié)議字段或者信號(hào)數(shù)值這種很容易聯(lián)想到的數(shù)據(jù),還包括各種狀態(tài)值(如負(fù)載率、吞吐量、頻率等)、時(shí)序(如休眠喚醒過程、TCP連接的三次握手、診斷服務(wù)的解鎖交互等)等數(shù)據(jù)。尤其是時(shí)序,通常是有一連串的步驟,這一過程中不僅可以將每一步的間隔時(shí)間用作隨機(jī)值,還可以在各個(gè)步驟本身“大做文章”,比如每一步再耦合隨機(jī)信號(hào)值。
概括起來就是萬物皆可數(shù)據(jù)化,數(shù)據(jù)皆可隨機(jī)化,這或許是模糊測(cè)試的核心思想。而結(jié)合車載通信本身的特點(diǎn),我們可以得到一些典型的模糊測(cè)試內(nèi)容:
針對(duì)協(xié)議中數(shù)據(jù)格式的模糊測(cè)試
如CAN總線中接收到不同ID、DLC時(shí),是否出現(xiàn)錯(cuò)誤幀。這種測(cè)試可能更針對(duì)CANFD節(jié)點(diǎn)或者OBD節(jié)點(diǎn),甚至還包括擴(kuò)展幀、遠(yuǎn)程幀等特殊數(shù)據(jù)。又比如以太網(wǎng)中接收到不同的源MAC、目標(biāo)MAC、源IP、目標(biāo)IP、源端口、目標(biāo)端口時(shí),是否出現(xiàn)異常。這里的異常又會(huì)根據(jù)防火墻策略變得不盡相同,比如無響應(yīng)、重啟、發(fā)出不可達(dá)的錯(cuò)誤報(bào)文等。
圖3 針對(duì)協(xié)議中數(shù)據(jù)格式的模糊測(cè)試示例-CAN ID模糊測(cè)試
針對(duì)信號(hào)值的模糊測(cè)試
如CAN總線中接收到不同的信號(hào)值(包括非法值、無效值等),是否出現(xiàn)重啟、死機(jī)等情況。又比如SOME/IP中接收到各種請(qǐng)求、響應(yīng)、訂閱等數(shù)據(jù)(包括非預(yù)期的數(shù)據(jù)類型、編碼、字節(jié)順序等),是否出現(xiàn)服務(wù)暫停、服務(wù)崩潰、死機(jī)等情況。
圖4 針對(duì)信號(hào)值的模糊測(cè)試示例-CAN信號(hào)模糊測(cè)試
針對(duì)時(shí)序的模糊測(cè)試
如上文提及的網(wǎng)絡(luò)管理休眠喚醒測(cè)試。又比如SecOC或者時(shí)間同步機(jī)制中,需要周期性地對(duì)特定基準(zhǔn)進(jìn)行同步處理,又有其他數(shù)據(jù)會(huì)使用同步后的基準(zhǔn),而在同步時(shí)序中出現(xiàn)各種偏移(包括基準(zhǔn)本身的偏移、應(yīng)用數(shù)據(jù)使用的基準(zhǔn)與基準(zhǔn)更新時(shí)刻的偏移等),判斷同步機(jī)制是否崩潰。
圖5 針對(duì)時(shí)序的模糊測(cè)試示例-休眠喚醒模糊測(cè)試
針對(duì)流量的模糊測(cè)試
如上文提及的高負(fù)載測(cè)試。又比如網(wǎng)關(guān)節(jié)點(diǎn)的性能測(cè)試中,在各端口并行接收不同的數(shù)據(jù)流以構(gòu)成不同的吞吐量,判斷路由機(jī)制是否崩潰。
圖6 針對(duì)流量的模糊測(cè)試示例-吞吐量模糊測(cè)試
3
模糊測(cè)試中需要注意的問題
雖然有大量的測(cè)試可以使用模糊測(cè)試方法,但同樣的,模糊測(cè)試也有著其局限性或者說不足,如何盡可能地發(fā)揮其優(yōu)點(diǎn)、規(guī)避其不足可能需要考慮以下內(nèi)容:
異常
對(duì)于異常的判斷是一個(gè)十分困難但又非常重要的點(diǎn)。困難是在于異常的情況比較復(fù)雜且能夠監(jiān)測(cè)的手段很多時(shí)候是有限的,尤其是需要實(shí)現(xiàn)異常情況的自動(dòng)化監(jiān)測(cè)。在車載網(wǎng)絡(luò)中可以用來判斷異常的包括特定信號(hào)值、周期報(bào)文的周期波動(dòng)、控制器的電流值、DTC等。對(duì)于每一種不同的模糊測(cè)試,應(yīng)該需要根據(jù)測(cè)試內(nèi)容選擇合適的異常判斷方式。另一個(gè)有效的方法是進(jìn)行“插樁”,用來突破控制器本身的局限性,突破常規(guī)“黑盒測(cè)試”的局限性。
圖7 插樁示意圖
平衡
由于模糊測(cè)試是一種趨近于無窮測(cè)試的方式,帶來的必然影響就是時(shí)間成本的增加。但是我們實(shí)際的產(chǎn)出并不會(huì)隨時(shí)間增加而呈現(xiàn)線性的增加,因此測(cè)試效率會(huì)變得越來越低。為了提高測(cè)試效率,我們必然會(huì)使用一些規(guī)則做隨機(jī)值的篩選,但這又必然導(dǎo)致隨機(jī)性的降低。正如很多測(cè)試?yán)碚撍枋?,“測(cè)試可以證明存在缺陷,但不能證明不存在缺陷”。我們很多的測(cè)試都是在投入和產(chǎn)出中尋求平衡,模糊測(cè)試由于其特點(diǎn)顯得更加明顯,以至于我們要界定測(cè)試是否完成會(huì)存在一些爭(zhēng)議和博弈,要處理這樣的平衡,難度會(huì)可能大于測(cè)試本身。
定位及修復(fù)
測(cè)試會(huì)發(fā)現(xiàn)問題,這帶來的另一個(gè)問題就是如何定位。而模糊測(cè)試的特點(diǎn)又會(huì)導(dǎo)致問題的定位(包括問題復(fù)現(xiàn))會(huì)有很大的難度和不確定性,尤其是當(dāng)模糊測(cè)試中隨機(jī)值是更多維度的情況下,事情就會(huì)變得更加復(fù)雜。另一個(gè)需要考慮的點(diǎn)就是問題修復(fù)后的復(fù)測(cè)工作,這可能比做一次完整的模糊測(cè)試還要麻煩,此時(shí)需要解決的點(diǎn)是如何快速驗(yàn)證問題已被修復(fù)和如何驗(yàn)證修復(fù)方案是否會(huì)產(chǎn)生新的問題。雖然這兩個(gè)點(diǎn)在所有測(cè)試中都存在,但是由于模糊測(cè)試的隨機(jī)性,這兩個(gè)問題顯得更加困難。綜合上述幾點(diǎn)考量,個(gè)人認(rèn)為對(duì)于當(dāng)前的車載通信來說,在開發(fā)前中期采用模糊測(cè)試時(shí)需要有規(guī)則性和針對(duì)性的,雖然我們降低了發(fā)現(xiàn)問題的范圍,但得到的是測(cè)試效率、問題修復(fù)效率、資源利用率的有效提升。而隨著軟件的逐步成熟,可以逐步放開原有規(guī)則,增加隨機(jī)性。這一過程中也需要結(jié)合自身的情況來做調(diào)整,總之,關(guān)鍵點(diǎn)其實(shí)就兩個(gè)字:平衡。
4
總結(jié)
模糊測(cè)試是一個(gè)相當(dāng)有效的測(cè)試方法,其隨機(jī)性的思想可以讓我們發(fā)現(xiàn)通過邏輯很難想到的問題,這擴(kuò)大了我們發(fā)現(xiàn)問題的范圍和手段,能有效提高測(cè)試經(jīng)驗(yàn),這與場(chǎng)景測(cè)試有著異曲同工之妙。但同時(shí),其投入多、修復(fù)難的問題也是不可忽視的內(nèi)容。如何達(dá)到平衡是我們必須要考慮的點(diǎn),總的來說,這是個(gè)以時(shí)間換經(jīng)驗(yàn)還是以經(jīng)驗(yàn)換時(shí)間的選擇題。另外,本文的車載通信測(cè)試是廣義概念,也包括了以車載通信技術(shù)作為載體的安全通信、安全診斷、安全刷寫等測(cè)試。北匯信息專注于汽車電子測(cè)試,與國內(nèi)外眾多OEM和Tier1合作,在車載通信、診斷刷寫、OTA、車內(nèi)網(wǎng)絡(luò)安全、域控制器功能測(cè)試等領(lǐng)域積累了豐富的實(shí)踐經(jīng)驗(yàn),歡迎大家交流、探討。
-
測(cè)試
+關(guān)注
關(guān)注
8文章
5316瀏覽量
126722
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論