DARPA計劃“消滅”C語言代碼
為了加速軟件業向內存安全編程語言的過渡,美國國防高級研究計劃局(DARPA)正在推動一個名為TRACTOR的人工智能代碼轉換工具,可自動將遺留C代碼轉換為Rust,以根治內存安全問題。TRACTOR是TRanslating All C TO Rust的縮寫,即“將所有C語言代碼轉換為Rust語言”。
大型代碼庫的多數嚴重漏洞都屬于內存安全漏洞,例如緩沖區溢出。DARPA希望通過AI模型進行編程語言大規模轉換,提升軟件安全。DARPA的TRACTOR項目經理Dan Wallach在一份聲明中表示,目前使用LLM(大語言模型)可以初步實現從C到Rust的轉換,但自動化程度和準確性還有待提升。
近年來,谷歌和微軟等科技巨頭已開始廣泛宣傳內存安全漏洞問題,并鼓勵使用如Rust等內存安全的編程語言。科技巨頭的行動不僅影響了私營部門,還促使白宮和美國網絡安全和基礎設施安全局(CISA)倡導使用包括Rust、C#、Go、Java、Python和Swift在內的內存安全語言。
盡管C和C++社區有人認為遵循ISO標準和使用檢測工具可以達到類似效果,但DARPA認為僅靠這些工具還不足以解決問題。Rust自2015年首次發布以來,因其內存安全特性和適用于低級別、性能敏感系統編程的特性,逐漸受到青睞。
互聯網研究小組的Prossimo項目也致力于用Rust重寫關鍵庫和代碼,以減少安全風險。例如,Prossimo建議非營利互聯網研究組織用Rust重寫關鍵庫和代碼,包括網絡時間協議(NTP)守護進程(ntpd-rs)。
Prossimo項目的執行董事Josh Aas表示:”當今互聯網基礎設施中運行的大量C代碼使得使用翻譯工具變得有吸引力。我們已經在這方面進行了實驗,例如最近將基于C語言的AV1實現轉換為Rust。“
Aas指出,盡管目前的工具還需要大量手動工作來確保(從C到Rust)代碼轉換結果的正確性和符合習慣,但通過進一步投資,這些工具的效率有望顯著提高。
Code Metal公司CEO Peter Morales認為,內存安全是網絡安全當下的關注焦點,TRACTOR項目的推出恰逢其時,具備充分的可行性,有望在網絡安全領域產生重大影響。然而,他也指出,業界不可能完全放棄C和C++,特別是在內核級別。
對于TRACTOR是否真的適用于“所有C語言代碼”,TRACTOR項目經理Wallach特別提到來開源代碼以及國防軍工使用的所有C語言代碼都是(前期)潛在目標。他明確表示,像Linux內核這樣擁有龐大代碼量和工具鏈的復雜生態系統,Rust可能并不適合,且在底層優化上,C依然擁有優勢,因此被TRACTOR明確排除在外。
不過,Linux內核開發團隊正在嘗試在特定模塊中引入Rust,以利用其安全特性而不破壞整個系統的穩定性和性能。
DARPA將在2024年8月26日舉行TRACTOR項目提案提交活動,感興趣的參與者可以現場或遠程參加。