即便是最先進的汽車和其他車輛都隱藏著一大批電子設備,其中有成百上千個處理器和數百萬行代碼,但是雖然它們都是被單獨設計的,卻必須在發動機罩下一起工作數年。
圖片來源:密歇根大學
據外媒報道,美國密歇根大學(University of Michigan)的研究人員Baris Kasikci表示,要讓這么一堆系統保持更新,同時又沒有安全漏洞是極其困難的。而安全漏洞威脅的不只是車輛,對宇宙飛船、無人機和其他正在得到廣泛應用的交通工具構成了更大的威脅。
計算機科學與工程系教授Kasikci表示:“這有點混亂。一般來說,可以在源代碼中修復錯誤,重建軟件并重新部署就可以。但是此類移動交通工具的環境對此種模式非常不利,因為會有很多不同的軟件以及不同種類的計算機。”
圖片來源:密歇根大學
Kasikci正在領導一個研究團隊,并研究了一個名為Ironpatch的系統以解決上述問題。該項目為期4年,旨在研發一個獨立的補丁系統,以解決汽車和大型交通工具(如卡車和航天器)日益嚴重的安全漏洞問題。
Ironpatch與計算機系統上常見的軟件補丁完全不同,后者通過生成一個計算機系統的副本,然后對其源代碼進行更改而生成。接下來,需要對補丁進行測試,以確保其不會干擾軟件的功能。之后,再采用一種稱為編譯器的工具重建程序,將源代碼編譯成計算機可以理解的1和0。最后,將其加載到計算機上。
這個過程在計算機上運行得很好,但是對于車輛系統而言就幾乎沒用了。為進行測試,生成系統的準確副本是不可能的,而編輯和重新編譯可能會以無法預測到的方式攪亂復雜的代碼網絡。
Kasikci表示:“會有成百上千個處理器運行著不同類型的軟件,不同版本的軟件,由不同的人以不同的語言編寫。隨著時間的推移,這個系統可能會發生變化,如航天器增加了一個新組件,以監測一個行星上的地面事件等。以正確的方式復制所有的系統確實是一項無法完成的任務。”
Ironpatch則采用了不同的方法,繞過了源代碼,直接對運行軟件的二進制核心進行稱為micropatches(微補丁)的微小修改,消除了重新編譯軟件的需要。此外,由于所做出的更改非常微小,因此也可以在不引起其他問題的情況將問題修復。
Ironpatch是一個獨立的系統,一旦識別到漏洞,該系統會自動生成、驗證并應用一個微補丁以消除漏洞,這也消除了向遠程軟件上傳軟件補丁的需求。當該系統位于數百萬英里外的航天器上時,這就是一個特別方便的功能。
研究人員表示:“我們經常假設軟件開發人員能夠訪問源代碼和復雜的車輛模擬環境。不過,有些情況會讓這種想法變得不具可行性。我們看到越來越多的人需要一種技術,可以在沒有完整模擬堆棧或原始源代碼的情況下,為易受攻擊的軟件部署補丁。”
為了避免創建一個車輛系統副本用于測試,Ironpatch將把原始軟件和補丁版本轉換成兩個復雜的數學方程。然后,Ironpatch會解決這兩個方程,從數學上證明,除了想要做出的修改,這兩個程序的功能完全相同。
研究人員表示:“由于我們沒有系統副本來測試補丁,因此需要用另一種方式證明這個微補丁不會改變系統的基本功能。所以,我們采用數學證明法,來分析二進制代碼,結果顯示打補丁的版本與原始版本的功能相同。”
該項目的目標是讓成熟的系統能夠在發現安全漏洞時自動生成和部署補丁,從而使即使最復雜的系統都不會發生故障。雖然該系統的首個版本是為卡車和航天器設計的,但研究人員預測,類似的系統最終可應用于更廣泛使用的系統,如汽車系統。未來,技術人員還可以在不訪問源代碼的情況下診斷和修復計算機軟件。
研究人員表示:“該項研究造成的更廣泛的影響是可以直接在二進制代碼中給軟件打補丁,而不需要進行編譯等中間步驟,也不需要訪問源代碼。因此,該系統可以用于提高汽車的安全性,甚至可以用于智能家居組件或傳統系統等其他類型的計算機,可能還會進行審核工作,以確保軟件的安全,而且可以按照軟件的要求去完成工作。”