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