美國國防部高等研究計畫署轉向人工智慧協助將C和C++程式碼轉換為Rust
美國國防部先進研究計畫署(DARPA)將在一項新計畫中運用新興的人工智慧能力,以解決將C和C++程式碼改寫為Rust的高成本和耗時挑戰。這項舉措旨在配合聯邦機構和私營組織採用記憶體安全的程式設計語言的推動。
DARPA本月宣布了其「全面翻譯C語言為Rust語言」(TRACTOR)計畫,將利用大型語言模型(LLM)和其他機器學習技術,自動化將超過20年的遺留程式碼大量移植到更安全的Rust語言所需的大部分任務。
白宮國家網路總監辦公室(ONCD)和網路安全與基礎設施安全機構(CISA)數月來一直鼓勵開發人員採用Rust或其他現代語言如Python或C#,透過消除記憶體安全漏洞這一類別的大多數常見漏洞,以更好地保護其軟體。
這些缺陷可能包括緩衝區溢位、使用未初始化的記憶體,以及使用後釋放(use after free),即程式在記憶體位置被釋放或解除配置後,仍繼續使用該記憶體位置。
CISA局長珍.伊斯特利(Jen Easterly)去年底表示,高達三分之二的軟體漏洞都是由於缺乏記憶體安全編碼所致。
程式碼量龐大
然而,DARPA官員表示,雖然軟體工程界普遍認同需要記憶體安全語言,但問題在於公私營機構數十年來一直使用C和C++,因此將大量此類程式碼移植到Rust的工作量龐大,極具挑戰性。
他們指出,C語言創立於1970年代,一直被用於從智慧型手機到太空船的各種應用程式開發。國防部本身「長期依賴像C語言這樣的程式設計語言」,他們在聲明中寫道,並補充說需要一種方式大規模重寫「與問題規模相稱的遺留程式碼」。
這就是人工智慧的用武之地,DARPA的TRACTOR計畫經理丹.瓦拉克(Dan Wallach)表示。
瓦拉克說:「你可以前往任何LLM網站,開始與人工智慧聊天機器人交談,只需說『這是一些C程式碼,請將其翻譯為安全慣用的Rust程式碼』,剪貼複製後就會產生結果,而且通常相當不錯,但並非百分之百正確。研究挑戰在於大幅提升從C語言到Rust語言的自動化翻譯品質,尤其是針對最相關的程式結構。」
徵求開發人員協助
TRACTOR的目標是創建一個程式,能夠產生出與資深Rust程式設計師所開發的品質和風格相當的成果。DARPA正透過舉辦公開競賽,徵求軟體開發人員社群的協助,在此測試由LLM驅動的各種解決方案。
根據瓦拉克的說法,可能的解決方案將包括軟體分析(包括靜態和動態分析)與LLM的新穎組合。
該計畫將於8月26日舉行「建議者日」(Proposers Day)啟動,有興趣的軟體工程師可親自或線上參加。參與者需於8月19日之前註冊,詳細資訊和註冊連結請見SAM.Gov網站。
一個全球性問題
在一份19頁的技術報告中,ONCD寫道,記憶體安全漏洞「對軟體業而言是一個重大問題,因為它們導致製造商不斷發佈安全更新,而客戶也不斷打補丁。儘管軟體製造商歷來投入大量資源嘗試透過各種方法減少這些漏洞的存在和影響,包括分析、修補、發佈新程式碼和投資開發人員培訓計畫,但這些漏洞仍然存在。」
與此同時,客戶也被迫投入大量資源,透過複雜的補丁管理程式和事件應變措施來因應這些缺陷。
DARPA官員寫道,這些漏洞會影響電腦記憶體,因為它們允許程式設計師直接操作記憶體,這雖然更容易編寫程式,但也更容易無意中引入程式錯誤,導致看似例行的操作就能破壞狀態或記憶體。
此外,當程式設計語言表現出所謂「未定義行為」時,也可能產生安全問題。這種情況發生在程式設計語言標準對於一些未明確定義的條件下,程式應如何運作卻未給予任何規範或指引。
一份由CISA和其他美國以及加拿大、英國、澳洲和紐西蘭等國家的網路安全機構共同撰寫的23頁報告發現,大約70%的Microsoft漏洞和Google Chromium專案中的缺陷都是記憶體安全漏洞。此外,Mozilla有32項34項嚴重或高風險漏洞也屬於此類別。