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