在上月計算機協會程式語言設計與實現會議上(association for computing machinery's programming language design and implementation),mit研究人員展示了乙個新的系統,能夠通過匯入其他更為安全的應用程式功能,自動修復危險的軟體漏洞。
漏洞自動修復系統:codephage
該系統稱為codephage,它在自動「借用」其他程式的功能時並不需要獲取源**。因此,被匯入程式(即donor捐獻者,後文簡稱d)的開發語言並不重要。一旦用於修復的**匯入至有漏洞的應用程式(即recipient接收者,簡稱r)中,codephage可以提供乙個更深層的分析,以確保漏洞被修復。
mit 電腦科學與人工智慧實驗室(csail)codephage開發負責人stelios sidiroglou-douskos表示,
「在開源庫中,我們有大量的源**可供使用,這些數以百萬計的專案以及大量規範相似的專案實現。隨著時間的推移,你需要完成的就是從這些專案中獲取最好的元件來構建codephage——這一混合系統。」
開始分析時,codephage需要兩個樣本值輸入:乙個會造成 r 崩潰,另乙個則不會。乙個稱為diode的漏洞定位程式可自動生成引起崩潰(crash-inducing)輸入。但使用者僅僅認為是開啟了乙個特定檔案而引發的崩潰事故。
系統執行過程
首先,codephage為 d 提供了乙個不會引起崩潰的「安全」輸入。然後跟蹤 d 的執行操縱序列並使用符號表示式記錄下它們,這裡的符號表示式(symbolic expression,簡稱se)是一串描述作業系統施加的邏輯約束符號。
在某些情況下,比如可能會檢測 d 的輸入是否小於某個閾值。如果結果是小於的,codephage將新增乙個 se 術語來表示該情況低於閾值。這裡並不記錄檔案的實際大小,僅僅是通過檢測施加限制約束。
接下來,codephage為 d 提供乙個引起崩潰的輸入。它再一次構建了乙個se來代表 d 執行的操作程式。但是當新的se從舊的當中分離出時,codephage會中斷其過程。這一偏差(divergence)就是了安全輸入會遇到的約束而引起崩潰的輸入不會遇見。因此,這可能是r安全檢測所缺失的部分。
然後codephage分析 r 程式以尋找大多數 se 所限制輸入的位置,但不是全部。r能以不同的順序執行不同的操作,而非完全按照施者所做的,同時可以儲存不同形式資料。在這個過程之後,se 描述了資料的狀態,而非過程本身。
在每個標識的位置,codephage能夠不受大部分 se 的約束——同樣適用 r。從第乙個位置開始,codephage將仍然留在 r 程式語言中的少量約束轉化成新**,並將其插入源**中。然後再次執行引起崩潰輸入。
如果程式可以執行,則新**解決了這個問題。如果沒有,codephage會移動到r的下乙個候選位置。如果專案依舊崩潰,即使在codephage已經嘗試修復了所有候選位置之後,它仍會重返 d 程式,並繼續建立 se,直至找到下乙個偏差。
自動化的未來
研究人員在發現漏洞的diode七個常見開源專案中測試了codephage,每個從 d 匯入了兩個到四個數量不等的漏洞修復。在所有情況下,codephage均能夠修復漏洞**,並且每個修復只需要二到十分鐘時間。
安全檢測佔據了現代商業軟體80%甚至更多的**。研究者希望未來codephage的版本中可以實現自動檢查並插入系統,從而大大減少軟體開發者花費在繁重工作中的時間,解放程式設計師。
開發者之語
mit電腦科學與工程教授martin rinard說,
「未來的願景是,你再也不需要寫一段別人曾寫過的**。這個系統能夠發現**,並無論是何種**都能自動把它們連在一起,讓你的程式執行起來。
借用另乙個具有相似功能程式**的技巧,並且用來修復乙個基本上已經壞掉的程式,這是非常酷的過程。說實話,我很驚訝它竟然能夠執行。」
berger解釋說,
「施者程式並不是相同的人寫的。他們有不同的編碼標準;對變數的命名也不同;使用完全不同的變數;這些變數可以是本地的;或者是更高的堆疊。codephage能夠識別這些鏈結,並判斷『這些變數與這些變數有關聯』。與器官捐贈相似,通過遺傳密碼的轉移讓個體更完美。它的工作原理及最終成果真的很令人驚訝,這非常酷。」
麻省理工學院智慧型探索計畫,旨在探索人類智力基礎
麻省理工學院近日宣布推出麻省理工智慧型探索 mit intelligence quest 以下簡稱mit iq 計畫,這個倡議旨在探索人類智力基礎,並推動可以對社會各個方面產生積極影響的技術工具的發展。這一宣告是在麻省理工學院校長拉斐爾 萊夫 l.rafael reif 寫給協會的一封信中首次發表的...
麻省理工學院 人工智慧公開課總結02
這節課一開始給出了乙個積分式子 5 4 1 x 2 2.5 dx 然後告訴我們機器是如何像人一樣一步步求解這個積分的 首先,將變化公式分為安全變化公式和啟發式公式,安全變化公式包括以下基本的四種 提出負號。提出常數。和之積分等於積分之和。分數積分等於其商之積分。這個時候模型就有基本思路了 應用所有公...
麻省理工學院 人工智慧公開課總結03
這一講首先介紹了乙個移動方塊的人工智慧程式,並以此詳細講解了目標樹的概念,這一程式不僅能夠能夠實現目標,還能解釋自己在過程中的一些行為。目標樹 又叫與或樹 的具體概念是怎樣的呢?目標樹是按照樹形結構對目標或者設計標準進行組織的方法,它把不同的目標均歸類到更高階的目標之下。通過視覺化的方式和分支層次來...