當前位置:
首頁 > 最新 > MIT研究人員發明漏洞修復系統,可自動給代碼打補丁

MIT研究人員發明漏洞修復系統,可自動給代碼打補丁

安妮 編譯自 MIT News

量子位 出品 | 公眾號 QbitAI

點開許久不用的「XX旅行」,你想買張回家的車票。頁面上彈出的升級提示寫著:

本次升級將修復系統XX功能漏洞。

「這些App怎麼天天升級。」你心裡有些不耐煩。

如果有系統能自動修復補丁,可能就沒這麼麻煩了。你別說,還真有。

麻省理工學院(MIT)電子工程和計算機科學教授Martin Rinard就曾開發出一些通用模板,演算法可以通過模板生成並評估一系列備用補丁。

最近,Rinard的學生Fan Long和加州大學聖地亞哥分校的Peter Amidon又研發出一個新系統,通過分析軟體已經打出的補丁,學習生成自己的模板。

在一個手工編碼的補丁生成系統中,可能有5至10個模板,但這個新系統創建了85個,幫助它生成更多樣化的精確補丁。它的模板可適用於特定類型軟體,不會產生很多無用的備用補丁。在測試中,被稱為「Genesis」的新系統修復的漏洞數量是最好的手工編碼模板系統的兩倍。

循環評估

「這是一個權衡的過程,」Long說,「一方面,你想生成足夠多的備用補丁,讓你可以從中挑選出有用的那幾個。另一方面,你又不想讓備用補丁數量過多,多到無法找到它。」

訓練Genesis的數據集中包含兩組代碼塊:原始代碼、漏洞及修復的補丁的代碼。Genesis先構造出幾對訓練實例,這樣數據集中的每一項都能與其他項配對。

之後,Genesis分析每一對實例,並創建一個通用的表示形式,即模板草稿,它將兩個原始版本的兩個補丁合成在一起,也可能合成其他無用的備用補丁。

接下來,Genesis測試了訓練集中所有示例的每個模板。每個模板僅基於兩個示例合成,但也可能適用於其他幾個例子。模板有兩個標準,即漏洞的數量和產生的無用備選模板的數量。

例如,一個模板生成了10個備用補丁,其中4個在訓練數據中出現錯誤,而另一個模板生成了1000個備用補丁,其中只有5個可以用的補丁。相比之下,還是前者更合適。

在這些評分標準的基礎上,Genesis選擇了500個最有能力勝任的模板。對每個模板來說,它都以此用其他示例增強最初兩個示例的訓練集,創建了一個龐大的三例訓練集。每個訓練集都會改變草稿模板,產生更通用的模板,然後執行同樣的評估程序。

巨大潛力

這個過程循環四輪後,500個最好的模板都接受了五個示例的訓練。最後,用稍微有些不同的評估標準進行篩選,確保訓練集中每個錯誤都被糾正了。

在研究人員的實驗中,最終的篩選將模板的數量從500減少到85。在Genesis里用Java編寫的程序中,MIT的研究人員將其性能與表現最好的手工編碼的Java補丁生成器做了對比。

從41個開源編程項目中抽取的49個測試用例中,Genesis正確修補了其中21個漏洞,而手工編碼的系統則修補了11個。

研究人員表示,如果訓練數據更充足、計算能力更強大,評估的備用模板可能結果還能更好。

最後,附研究論文地址:

https://people.csail.mit.edu/rinard/paper/fse17.genesis.pdf

加入社群

量子位AI社群9群開始招募啦,歡迎對AI感興趣的同學,加小助手微信qbitbot3入群;

此外,量子位專業細分群(自動駕駛、CV、NLP、機器學習等)正在招募,面向正在從事相關領域的工程師及研究人員。

進群請加小助手微信號qbitbot3,並務必備註相應群的關鍵詞~通過審核後我們將邀請進群。(專業群審核較嚴,敬請諒解)

誠摯招聘

量子位正在招募編輯/記者,工作地點在北京中關村。期待有才氣、有熱情的同學加入我們!相關細節,請在量子位公眾號(QbitAI)對話界面,回復「招聘」兩個字。

量子位QbitAI

? ? ? 追蹤AI技術和產品新動態


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 量子位 的精彩文章:

英特爾研發神經元AI處理器,模仿大腦功能,無需訓練數據集
一個耗資數百萬的AI數據集,和它背後的90後超人們
AI通過了藝術創作圖靈測試,你根本分不出來作者是不是人
有了這個新框架,任何遊戲都能變身AI訓練場
GeekPwn重金招募人工智慧黑客

TAG:量子位 |