聯網汽車內的計算復雜性越來越高,隨著自動駕駛汽車的出現,制造商如何測試網絡安全保障?聯網汽車的計算復雜度不斷增加,隨著自動駕駛汽車的出現,制造商如何測試網絡安全保證?模糊測試是一種成功的黑盒測試方法,黑客們用它來發現各個領域的安全弱點。因此,SAEJ3061中提到的模糊測試(沒有任何細節)是否應更廣泛地應用于車輛系統開發過程中,以幫助減少漏洞?為了研究這個問題,我們開發了一個自定義模糊器,允許對目標車輛的CAN總線(用作車輛的ecu的數據互連)進行實驗。結果表明,模糊測試是車輛系統在準備進行系列生產之前需要進行的眾多安全測試之一。然而,以前在對汽車進行網絡測試時提出的問題也得到了證實。因此,在將模糊測試加入汽車工程工具箱時,提出了一些需要在未來研究中解決的問題。
I.簡介
所有大規模制造的車輛都需要內部聯網的計算機才能正常運行。車輛上的計算機被稱為電子控制單元(ECUs)。CU運行著從發動機到車內照明的所有設備,通常與低成本的控制器區域網絡(CAN)數據總線互連。在車輛中發現的其他網絡包括FlexRay、面向媒體的系統傳輸(MOST)、本地互連網(LIN)和兩線制以太網(100BASE-T1)。這些車輛系統可能直接或間接地連接到互聯網。這是通過內置的蜂窩通信,或通過司機或乘客的小工具,如智能手機來實現的。這使得我們駕駛的汽車或使用的交通工具成為網絡物理系統(CPS)和物聯網(IoT)設備。這些聯網汽車已被證明患有類似的網絡安全漏洞,就像其他基于計算機的網絡系統,無論是家庭、辦公室還是工業。因此,聯網和自動駕駛汽車(CAV)需要能夠抵御網絡攻擊。所以,網絡安全測試已被添加到制造商的車輛工程流程的任務清單中,或應成為其一部分,正如政府現在所規定的那樣。
由于汽車領域的特殊技術和CPS環境,將既定的網絡安全測試方法應用于汽車工程是具有挑戰性的。模糊測試是一種成熟的軟件動態測試方法,對汽車領域來說是一個有價值的補充嗎?本文的貢獻是通過一個定制的模糊測試程序來研究這個問題,并開始解決將模糊測試引入汽車系統測試的挑戰。
A簡要介紹了模糊測試之后,研究了將其應用于車輛系統的現有工作。本文介紹了測試CPS系統的動機和挑戰。然后介紹了經過模糊測試的車輛技術,即CAN總線。在討論觀察和進一步的工作和結論之前,將介紹運行自定義軟件和結果輸出。在討論觀察結果和進一步的工作以及結論之前,介紹了運行定制軟件和結果輸出。
A. 什么是模糊測試?
模糊測試是一種動態分析測試方法。它是針對正在運行的系統執行的(與對源代碼的靜態分析相反)。模糊器是一個執行模糊測試的程序。向目標系統生成隨機輸入數據是模糊器的主要功能。然而,為了更有效率,從而更有效,模糊測試器可以在了解系統數據格式、通信協議和接口的情況下運行。模糊測試的本質是:
-隨機輸入(fuzz)被發送到系統的接口。
-系統的反應被監測。
-如果系統發生故障,會記錄導致故障的條件并重置系統。
-這個過程要重復大量的次數,以覆蓋一個大的輸入值空間。
-由于執行了大量的測試,模糊測試是自動化的,以提高效率。
能夠使軟件失效是攻擊者用來滲透系統的方法之一。因此,模糊測試現在是一種成熟的、完善的方法,可以發現應用程序和操作系統中的漏洞,并被用來幫助對汽車系統進行逆向工程。然而,它在汽車系統的一般測試中的應用卻很低(圖1)。
圖1汽車行業的測試方法,來自于[7]的數據
II.相關工作
對車輛黑客的研究通常關注的是證明聯網車輛的漏洞。一些研究人員確實在攻擊的同時提供解決方案。盡管早期在破壞控制器區域網絡(CAN)方面進行了實際演示,但直到2010年大眾媒體廣泛宣傳了實際的聯網汽車網絡攻擊,人們才對針對車輛的網絡攻擊產生了興趣。實現媒體廣泛報道的2010年的原始研究指出:
事實上,由于有效的CAN包的范圍相當小,通過簡單的包模糊(即隨機或部分隨機包的迭代測試)可以造成嚴重的損害。事實上,對于尋求無差別破壞的攻擊者來說,模糊化本身就是一種有效的攻擊。
盡管他們對模糊的主要用途是幫助對目標車輛的系統進行反向工程。然而,在網絡服務和一般信息系統中,模糊技術被用來破解軟件。然而,到目前為止,汽車黑客的模糊測試的價值在于幫助發現汽車系統的功能。這是因為車輛內部系統的操作細節是商業機密。通常情況下,確定一個特定的CAN信息的唯一方法是在操作車輛功能時捕獲網絡數據包。在生產前的安全測試中,關于模糊測試的有用性的工作做得很少。在汽車系統的模糊測試方面有哪些可用的方法?
[13]提供了一個用于ECU診斷的統一診斷服務(UDS)模糊器的設計。該報告主要關注模糊器的設計,并在UDS模擬器上進行了測試。它確實發現了模擬器的UDS實現中的弱點,盡管沒有提供深入的結果介紹。
測試諭問題(如何確定系統的正確響應)對cps來說是一個挑戰,特別是在自動化整個安全測試過程方面。在[15]中,提出了一個從一個硬件循環(HIL)和軟件循環(SIL)測試和開發系統到基于Python的開源模糊器的鏈接,稱為booFuzz。他們提出了幾種解決測試諭問題的方法:
-網絡通信監控。
-通過組件調試接口進行監控。通常不用于硬件調試,一旦開始生產,通常就不能使用。
-對模擬器內部可用的系統信號的直接和間接監測。
-使用汽車通用測量和校準協議(XCP),允許遠程訪問ECU的內部。
-用外部傳感器監測系統的物理反應。
然而,沒有考慮到任何額外的監測能力可能被攻擊者利用,他們會尋找任何信息來源來幫助破壞系統。因此,支持XCP可能有助于詳細的ECU診斷,但它提供了另一個可能被利用的渠道。注意到的一個有趣的問題是,汽車ECU有不同的操作模式。在其壽命的大部分時間里,ECU都在提供正常的操作功能。然而,在車輛維修期間,ECU可以被鎖定或解鎖,以便通過UDS進行軟件更新。對于系統測試人員來說,覆蓋ECU的所有狀態是很重要的,因為這些不同的狀態之前已經被利用了。
在[16]中提供了如何配置一個商業模糊器來連接到一個汽車網絡。沒有給出實際應用,只發布關于數據包吞吐量率的結果。在[17]中,另一個商業模糊工具用于測試單個ECU。測試環境定義了一個比較模塊,作為測試參數,在模糊CAN消息時驗證ECU的正確操作。
表一列出了已發表的參考工作中所使用的模糊器,加上Peach模糊器,它被宣傳為支持汽車測試1。大多數是通用的商業產品,booFuzz是開源的,Peach也有一個開源版本。他們都需要對汽車系統的工作進行調整。兩種主要方法是:1)協議,使用CAN數據包的格式(表三),或2)從系統設計中輸入,即對數據包內容有預先的了解(可以從ECU中運行的源代碼中得知)。在下面的章節中,將對汽車模糊測試的需求進行研究。
III.動機
安全是汽車的一個關鍵設計目標。汽車的操作正確性、認證以及與國際和國家標準的一致性都要進行測試。國家間標準化組織(ISO)發布了ISO 26262,用于電氣和電子系統的功能安全。然而,對于聯網汽車來說,網絡攻擊是一種超越正常功能操作的威脅。如何解決這種威脅呢?汽車工程師協會(SAE)J3061出版物為CPS提供了一些最佳實踐指南,作為引入安全意識的過程和設計的起點,另外ISO/SAE AWI 21434(道路車輛,網絡安全工程)正在開發中。然而,對于系統工程師來說,需要適用的方法。
A. 從物理鎖到網絡鎖
從根本上說,安全是一個經濟問題,必須在一個系統中加入足夠的安全性來勸阻對手。安全措施曾經只是物理性的,比如說更強的鎖。現在,網絡鎖需要認證、數據和通信加密以及其他密碼學措施來保護安全屬性,其形式為CIA三要素。
?保密性--防止敏感數據被查看。
?完整性--防止數據值的改變。
?可用性--保護系統運行。
然而,網絡鎖并不能保證系統的安全。計算機代碼的一般問題是它很少沒有錯誤。盡管在一個計算系統中盡了最大努力消除錯誤,但在數十萬行代碼(LOC)中仍會有一個給定的錯誤率。攻擊者的目標是找到可以用來獲取收益的代碼錯誤。尋找弱點所涉及的努力(即成本)越大,攻擊者就越有可能尋找其他地方。然而,制造商面臨著一個困境,在某種程度上,減少系統中的錯誤數量變得指數級困難的,任何項目都有有限的資源。因此,能夠緩解這種緊張關系的方法是有益的。
B. CPS模糊測試的挑戰
如果黑客使用模糊測試來破壞系統,為什么不在生產前的測試中部署同樣的技術來提高網絡安全的復原力。事實上,模糊測試是廣受好評的微軟安全開發生命周期(SDL)的一部分,并被列入了J3061。然而,在J3061中并沒有涵蓋任何幫助制造商的資源,而且在將模糊測試應用于CPS領域的深入研究也很少。讓模糊測試在汽車行業得到更廣泛的應用,有哪些挑戰?
1)車輛的CPS性質:對于現在部署在我們周圍的CPS來說,計算命令和控制的結果是物理上的非計算操作。車輛駕駛員按下開關可以導致數字命令通過數據網絡發送,該動作導致現實世界的輸出,例如,一個燈被打開。因此,對被測系統(SUT)或被測設備(DUT)的監測增加了CPS的復雜性。然而,對于生產前的車輛設計階段,這種CPS監測的復雜性可以借助于硬件在環和軟件在環設備來模擬物理世界而得到緩解。
2)車輛產生的大量數據:隨著更多的計算系統被納入汽車,車輛內部不斷產生的數據量只會增加。數據量問題在傳統的IT安全中并不陌生。此外,在汽車行業中部署了不同的通信協議,另外還有一系列的數據類型和格式需要處理。車輛數據處理是另一個大數據問題。
3)不完整的知識:針對一個組件的已知規格和接口的功能測試是很容易確定的。然而,可能會存在為其他用途而開發的額外功能,如支持其他客戶或用于組件測試。未文檔化的應用編程接口(API)以及未經測試的代碼路徑可能會被利用。汽車工程師需要考慮到這些未知因素。
4)定義可測量度量:CPS的復雜性意味著沒有兩個類似的系統或類似的組件是可以比較的。這意味著測量模糊測試的有效性是困難的。在其他領域,模糊測試是以發現的錯誤數量的最終計數為導向的。然而,這只能是相對于同一系統上的其他運行,另外,由于模糊測試的隨機性,比較只能是近似值。對于攻擊者來說,發現的缺陷總數并不重要。他們所追求的是使他們有能力違反CIA三原則的那一個漏洞。而系統制造商則需要在系統交付前盡可能多地發現這些漏洞。然而,如果沒有發現漏洞,這并不意味著不存在漏洞,這只是意味著測試沒有觸發任何東西。
鑒于上述動機和挑戰,假設模糊測試對于提高車輛中聯網ECU的安全性是有益的。如果是真的,那么在J3061中列出的車輛測試方法中加入模糊測試就是一個有效的論斷。這里,一個定制的模糊測試器被用來對目標車輛進行模糊測試。這里使用一個自定義模糊器將模糊測試應用于目標車輛。通過這樣做,我們可以學會哪些什么來應對這些挑戰呢?模糊器需要如何調整?未來在汽車領域的模糊測試應用需要什么?雖然確實存在將模糊測試應用于汽車系統的經驗性結果,但很少有發表的實驗與可用的經驗教訓。
在這里,模糊測試器是通過CAN總線與車輛對接的,因此對CAN進行了簡要介紹。
IV.汽車CAN總線
CAN總線是在20世紀80年代引入的,對于那些對比特級協議感興趣的人來說,[23]有大量的可用的資源。總線上的每個節點(ECU)都可以啟動數據傳輸,一次只傳輸一個節點。對于一個標準的CAN數據幀來說,11位的仲裁標識符(又稱數據包標識符)允許最高優先級的信息在兩到多個節點同時傳輸的情況下繼續傳輸。一個標準的CAN數據包有多達八個字節(64位)的數據。節點中的CAN收發器芯片自動處理協議,向高層應用提供id、數據長度和數據字節。表二顯示了從目標車輛上捕獲的一些CAN數據包。按照今天的標準,標準CAN的傳輸速度并不高,被設計為支持高達1Mb/s。汽車中常用的傳輸速度是500kb/s。
圖2 用于汽車測試的基于PC的模糊器
CAN的設計沒有考慮到安全問題,因此很容易進入。與CAN接口的設備成本很低。CAN總線通常通過開放的車內診斷(OBD)端口暴露在車輛中,另外,只要車輛的線路可以接觸到,就可以進行線切割。這些因素使得對CAN數據的操縱有了直接的研究。被破壞的ECU或中間人(MITM)攻擊(例如連接到車輛的OBD連接器的售后設備)可以欺騙傳輸的信息,影響正常操作并威脅到車輛和乘客的安全。這種CAN操縱是針對車輛的網絡攻擊成功的一個要素。加強CAN的安全性是一個有用的措施,然而,盡管有幾個方案可以為CAN增加加密,但沒有一個方案符合在批量生產中部署的所有標準。
V.方法
表一中列出的可用的商業和混合許可模糊器是專門定制的,用于汽車系統。這里介紹的定制模糊器(圖2)是為HORIBA MIRA有限公司開發的,是專門為處理CAN格式而編程的。該模糊器的設計很簡單,與[15]相比,它的子組件數量較少,[15]執行時在Python和.NET技術之間跳轉。
1)基于PC的模糊器:模糊測試軟件是在一臺連接到矢量車輛模擬器的計算機上開發的(圖8)。矢量設備在工業上被廣泛用于網絡控制系統的設計、驗證、HIL和SIL測試,包括基于CAN的車輛系統。車輛模擬器的使用簡化了開發周期,因為在開發過程中不需要訪問目標車輛。
用于模糊測試的軟件是用C#計算機編程語言編寫的。使用的集成開發環境(IDE)是Microsoft Visual Studio。軟件模糊測試程序的主要功能項目是用于命令和控制的用戶界面(UI)屏幕、常規CAN數據傳輸的定時線程、模糊CAN消息的隨機字節發生器、通信API處理模塊和CAN總線流量監視器。
2)通過車輛數據總線或ECU接口連接到SUT或DUT:使用一個通用串行總線(USB)到CAN的硬件適配器來連接模糊器軟件到CAN總線,這里使用的是PEAK- System生產的PCAN-USB產品。PCAN-USB設備有一個應用編程接口(API),可以通過C#語言訪問該設備。
圖3 配置CAN模糊器的用戶界面
USB CAN適配器需要9路D型插座,其接線符合CANopen規范(CiA303-1)2。兩根CAN通信線被稱為CAN High和CAN Low,CAN High連接到9針連接器的針腳7,CAN Low連接到針腳2(一個相同的插座用于連接到模擬器硬件)。
模糊器是通過其用戶界面進行配置的,提供對注入到SUT或DUT(通過CAN總線)的數據的控制,圖3。通過用戶界面,模糊器可以被編程,以產生一個單一信息中的一個位,到每個信息中的每個位。由于CAN數據流的組合爆炸問題,這個功能很重要。一個具有11位id和一個字節有效載荷的標準CAN數據包有50萬個數據包組合(219)。在1ms的傳輸頻率下(目前這個模糊器的最小值),傳輸所有的組合需要8分鐘以上。再加上一個數據字節,所有組合的傳輸時間為1.5天。除此之外,進一步增加數據長度是不切實際的,因此需要有針對性地進行模糊處理(例如,通過在CAN總線上監測到的已知消息ID進行模糊處理,或者通過設計來通知)。
一旦配置好,模糊器就會針對SUT或DUT執行,發送隨機的CAN數據。它監視目標系統,記錄對注入的信息的反應并采取行動。
VI.結果與分析
目標車輛使用標準的CAN數據包(11位ID)。可供模糊處理的數據包參數(ID、數據長度、有效載荷字節)見表三。根據模糊器中定義的參數,生成隨機的CAN數據包見表四。
該模糊器分析了CAN數據,以便進行數據完整性檢查。圖4顯示了每個字節位置的平均數據字節值,是從目標車輛的網絡中捕獲的100,000個CAN數據包計算出來的。它顯示了一個非線性分布的八位數值。相比之下,圖5顯示了對由模糊器生成的66144個CAN數據包的相同計算結果。該線性分布,即所有消息中所有字節的總體平均值為127,這證明了模糊器正確地生成了字節值的均勻分布。
來自模糊器的隨機CAN數據包的影響可以在矢量模擬器中進行測量。正常的車輛信號如圖6所示。圖7,在比圖6更短的時間內被捕獲,說明了隨機數據包對信號的影響。
當模糊器運行并注入CAN數據包時,模擬器的反應很不穩定。這是由畸形的CAN數據所引起的信號的快速變化造成的。在圖8中,模擬的車輛顯示了一個負的發動機轉速,這表明車輛模擬處理物理上無效值的方式與處理物理上合理的值相同。
一旦模糊測試軟件投入使用,就可以用來對付物理目標,即車輛和車輛部件。以前的汽車黑客研究表明,對車輛的永久性破壞是可能的,例如,使ECU失效(制動)。因此,在對目標車輛進行測試之前,對目標車輛上使用的現有儀表盤進行了模糊處理。
圖4 從100000條捕獲的車輛CAN報文中每個數據字節位置的平均值
圖5 來自66144個隨機生成的CAN報文的每個數據字節位置的平均值
圖6 模擬車輛信號
圖7 模糊化對信號的影響
圖8 通過模糊處理在車輛模擬器上顯示不適當的值
圖9 因模糊而導致的車輛部件崩潰
對著儀表盤運行模糊器,立即導致故障指示燈(MIL)亮起、警告聲和不穩定的儀表針。此外,一個數字顯示器開始有規律地顯示崩潰這個詞。循環供電給集束器,消除了任何變得亮起的MIL。不幸的是,碰撞信息不會清除。
該組件的損壞要求重新評估對目標車輛使用模糊器的情況,這是一種共享資源,如果被損壞會產生維修費用。因此,該實驗僅限于檢查模糊器是否對目標車輛產生影響。與其在整個CAN消息空間中運行模糊器,不如只對一小部分消息進行模糊處理。這些信息的ID是以前在車輛的CAN總線上觀察到的正常操作,例如,已知的影響儀表盤表針的信息。使用OBD電纜(通過USB到CAN適配器)將模糊器連接到車輛上,模糊信息被送入空轉的目標車輛。目標車輛有兩條CAN總線,模糊器在兩條總線上都進行了測試。該車表現出與集群測試類似的行為, 即各種MIL燈的點亮、儀表區的警告聲、儀表讀數的變化、車輛中央控制臺的錯誤信息以及發動機怠速轉速的不穩定。一旦發現模糊處理有明顯的影響,就會停止,以防止可能的損害,如圖9所示。為了防止對焦油車部件的損害,對模糊器的進一步測試是針對臺式硬件配置進行的。基于工作臺的配置是為了代表互聯汽車越來越普遍的特征,即通過應用程序控制車輛功能,見圖10。
一個CAN總線目標是由帶有CAN接口的Arduino單板計算機(SBC)構建的。每個SBC在網絡上充當一個ECU。CAN總線上的信息是在目標車輛的CAN總線上傳輸的信息的一個小子集。其中一個ECU作為車身控制模塊(BCM),其發光二極管(LED)代表車輛的鎖定狀態(off代表鎖定,on代表解鎖),見圖11。
圖12顯示了復制功能的圖示。外部手機應用程序向車輛信息娛樂系統ECU(又稱車頭裝置)發送解鎖命令。
圖10 通過制造商的智能手機應用程序控制車輛,可從應用程序商店獲得
圖11 連接三個作為ECU的單板計算機的CAN總線
這是一個安全的連接(或應該是)。信息娛樂裝置通過車輛的CAN總線傳輸解鎖命令。模糊器是作為一個惡意的單元連接到車輛網絡(通過OBD端口或一個被破壞的ECU)。當模糊器運行時,它不知道激活鎖的CAN信息。
在這個實驗中,一個PC應用作為智能手機應用,圖13,作為信息娛樂系統ECU的代理發送鎖定和解鎖命令。這導致LED燈的開啟和關閉,表明在鎖定和解鎖車門方面的正常系統操作。用模糊器,見圖3,在隨機產生的CAN數據幾分鐘后,解鎖(或鎖定)功能被激活。為了幫助檢測解鎖狀態,測試平臺被增強以傳送解鎖確認的CAN消息。對于真正的車輛還需要另一種檢測機制,例如門鎖上的傳感器。
圖12 遠程車輛解鎖功能
圖13 PC車輛鎖定/解鎖應用程序
模糊器目前的最大信息傳輸率為每毫秒一條信息。在這個速率下,根據12次運行的小樣本,引起解鎖反應的平均時間是431秒,見表五。解鎖代碼測試的是一個具有特定ID的信息中第一字節位置的特定字節值。當代碼被修改為包括測試數據包的長度時,平均時間增加到1959秒。代碼的這一簡單變化大大增加了模糊器找到正確解鎖信息的時間。如果改變為檢查兩個字節的值,時間的增加會更多。
VII.探討
事實證明,這些實驗已經被證明是有用的,可以從少數現有的工作中收集出幾條信息。
關于在車輛CAN總線上應用模糊測試。實驗結果證實了之前關于車輛模糊測試的聲明,即:
-模糊測試可用于對車輛信息進行反向工程。
-破壞車輛的通信網絡并非難事。
-模糊測試可以作為網絡攻擊的一種形式。
-網絡安全測試車輛及其部件可導致車輛部件損壞。
由于模糊測試對運行中的車輛和模擬器有不利的影響,它表明車輛系統需要額外的邏輯來忽略無意義的CAN消息值,以及這些值的序列。因此,很明顯,CAN總線在互聯汽車中運行時需要額外的工程考慮。因此,保護CAN總線和車輛部件不受外部網絡攻擊,現在已經成為互聯汽車系統設計的一個功能要求。對于這樣的系統,這些實驗的目的是展示可以用來開始將模糊測試納入測試制度的方法。
事實也表明,模糊測試可以用來驗證系統是否符合CIA三原則。模糊測試能夠在不事先了解系統設計的情況下激活安全功能(保密性),能夠改變儀器上顯示的數值(完整性),并破壞組件和車輛的運行(可用性)。這意味著,對于互聯車輛來說,設計功能以正確隔離安全問題必須是一個考慮因素。事實上,在較新的車輛中使用網關ECU表明制造商正在應對這一問題。此外,對設計的簡單修改可以提高安全性。在這里,通過改變CAN信息來激活解鎖,因此,增加了通過隨機模糊測試發現該功能的時間。
所開發的軟件將被用于進一步研究汽車系統的模糊測試,并加以擴展。這是一個有價值的研究領域,因為在汽車系統上運行這種測試的定量數據很少。該工作可以擴展的其他方式包括:
-利用模糊測試來確定保護措施的有效性,例如車輛防火墻和網關,或對ECU軟件的補充,以減輕網絡攻擊。
-研究在位級對模糊CAN協議控制位(數據鏈路層)的數據包的操作。
-將這些技術應用于靈活數據速率(FD)版本的CAN。
-對車輛工程工具(如CAN接口設備)的API進行模糊處理,以確保其彈性。例如,對研究中使用的PEAK USB CAN適配器的API進行模糊處理。
-使用視頻處理軟件,例如OpenCV,來監測被模糊測試的車輛和設備的網絡物理行為。
審核編輯 :李倩
-
CAN
+關注
關注
57文章
2762瀏覽量
464008 -
網絡安全
+關注
關注
10文章
3180瀏覽量
59978 -
模擬器
+關注
關注
2文章
879瀏覽量
43301
原文標題:汽車網絡安全測試方法
文章出處:【微信號:阿寶1990,微信公眾號:阿寶1990】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論