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