麻省理工學(xué)院測(cè)試“軟件移植” 修復(fù)代碼中的漏洞
類似于到垃圾場(chǎng)去找一輛老式車的便宜部件,麻省理工學(xué)院的研究人員找到了一種方法,通過插入來源于其它程序中的工作代碼,修復(fù)軟件漏洞。

研究者們使用一種被稱為CodePahge的系統(tǒng),通過測(cè)試找到七種流行開源軟件中的漏洞,在每個(gè)案例中,函數(shù)都來源于兩到四個(gè)“供體”程序。
修復(fù)這樣的錯(cuò)誤可以使程序更加安全,因?yàn)榫有牟卉壍暮诳徒?jīng)常利用漏洞來獲得系統(tǒng)的訪問權(quán)限。CodePahge能夠識(shí)別并解決常見的程序錯(cuò)誤,如越界訪問、整數(shù)溢出、零作為除數(shù)等。
研究人員在本周一出版的Phys.Org雜志上描述了他們的方法。他們還在上個(gè)月美國計(jì)算機(jī)協(xié)會(huì)(ASSOciation for Computing Machinery)舉行的編程大會(huì)上對(duì)其展開了討論。
在修復(fù)存在漏洞的程序時(shí),CodePhage會(huì)請(qǐng)求兩個(gè)樣本輸入,其中一個(gè)會(huì)導(dǎo)致目標(biāo)程序崩潰,另一個(gè)則不會(huì)。
CodePhage通過另一個(gè)程序加載這些輸入,該程序被稱為供體程序,擁有與目標(biāo)程序相似的功能?;ヂ?lián)網(wǎng)上能夠作為供體的開源程序隨處可見,但供體程序并不一定是開源的。
在觀察供體程序處理不會(huì)導(dǎo)致崩潰的輸入的過程時(shí),CodePhage會(huì)記錄程序的所有行動(dòng),還會(huì)通過符號(hào)邏輯將過程記錄下來。然后,CodePhage會(huì)分析兩種輸入的處理過程有何不同,并使用得到的信息來更正目標(biāo)程序。
在許多情況下,目標(biāo)程序缺乏供體程序所具有的安全檢查功能。一般的軟件中***可能會(huì)有80%的代碼被用于進(jìn)行安全檢查。通過將它們自動(dòng)插入Build進(jìn)程,CodePhage可以減少開發(fā)者用于編寫安全檢查的時(shí)間。
麻省理工大學(xué)并不是在此方向上努力的唯一機(jī)構(gòu)。今年早些時(shí)候,安全公司Qualys發(fā)布了一款軟件,可以對(duì)發(fā)現(xiàn)的漏洞打上虛擬補(bǔ)丁,從而使得人們不需要等待軟件供應(yīng)商發(fā)布更新。