美國國防部大刀闊斧,啟動AI項目:將老舊C代碼全部轉(zhuǎn)換為Rust 原創(chuàng)
整理丨諾亞
出品 | 51CTO技術(shù)棧(微信號:blog51cto)
為了加快向內(nèi)存安全編程語言的遷移步伐,美國國防部高級研究計劃局(DARPA)正積極推動一項名為“TRACTOR”的創(chuàng)新項目。TRACTOR,即“TRanslating All C TO Rust”,是一個旨在利用先進的機器學(xué)習(xí)技術(shù)自動將老舊的C代碼轉(zhuǎn)換為Rust語言的工具。
內(nèi)存安全問題一直是軟件開發(fā)中的老大難,比如常見的緩沖區(qū)溢出漏洞,這些隱患常常潛伏在龐大的代碼庫中,成為安全威脅的主要來源。DARPA希望通過TRACTOR這樣的工具,借助AI的力量來簡化這一轉(zhuǎn)化過程,從而使軟件變得更加堅固可靠。
TRACTOR項目負(fù)責(zé)人Dan Wallach在一次聲明中描述了這個愿景:“想象一下,你只需訪問任何一家大型語言模型網(wǎng)站,與那里的AI聊天機器人對話,簡單地說一句‘我這兒有些C代碼,能幫我轉(zhuǎn)換成既安全又符合Rust風(fēng)格的代碼嗎?’然后復(fù)制粘貼代碼給它,通常情況下你就會得到滿意的結(jié)果——當(dāng)然,不能保證百分之百的成功率?!?/p>
不過,Wallach也指出了這項工作的核心挑戰(zhàn):“我們需要大幅提高從C語言到Rust的自動化轉(zhuǎn)換質(zhì)量,尤其是對于那些最關(guān)鍵和復(fù)雜的程序結(jié)構(gòu)?!?/p>
1.僅僅依靠漏洞檢測工具遠(yuǎn)遠(yuǎn)不夠
在過去幾年里,科技巨頭如谷歌和微軟一直公開強調(diào)內(nèi)存安全漏洞帶來的問題,并積極推廣使用除C和C++之外的其他不需要手動管理內(nèi)存的語言。這種倡導(dǎo)不僅在私營部門產(chǎn)生了影響,也引起了公共部門的關(guān)注,后者擁有大量的遺留代碼。
白宮和美國網(wǎng)絡(luò)安全與基礎(chǔ)設(shè)施安全局(CISA)因此鼓勵采用內(nèi)存安全的編程語言,主要提倡的是Rust,同時也包括C#、Go、Java、Python和Swift等語言。
盡管如此,C和C++的維護者們提出了異議,他們認(rèn)為只要嚴(yán)格遵循ISO標(biāo)準(zhǔn),并充分利用現(xiàn)有的測試工具,就能達(dá)到與Rust相似的安全水平,而不必徹底重寫所有代碼。
然而,DARPA對此的看法似乎表明了對C和C++的態(tài)度已經(jīng)轉(zhuǎn)變。
“經(jīng)過了二十多年的內(nèi)存安全問題后,軟件工程界普遍認(rèn)識到,”DARPA的研究機構(gòu)指出,并引用了國家網(wǎng)絡(luò)安全總監(jiān)辦公室的呼吁,“僅僅依靠漏洞檢測工具是遠(yuǎn)遠(yuǎn)不夠的。”這表明了轉(zhuǎn)向更安全的編程實踐的重要性。
2.目前的翻譯工具仍然需要大量的人工干預(yù)
Rust語言在2015年首次穩(wěn)定發(fā)布,比C語言出現(xiàn)晚了四十多年,它內(nèi)置了內(nèi)存安全性,并且也適合用于低級、性能敏感的系統(tǒng)編程。
Rust語言自2015年首次穩(wěn)定發(fā)布以來,雖然比C語言晚了四十多年,但它內(nèi)置了內(nèi)存安全性,并且非常適合用于低級別的、性能敏感的系統(tǒng)編程任務(wù)。
Rust語言的特性及其日益增長的受歡迎程度催生了諸如Prossimo這樣的倡議。這是一個由非營利組織Internet Security Research Group發(fā)起的項目,旨在通過用Rust重寫關(guān)鍵庫和代碼來減少安全風(fēng)險,其中包括網(wǎng)絡(luò)時間協(xié)議(NTP)守護進程(ntpd-rs)。
Prossimo項目的執(zhí)行董事Josh Aas表示:“鑒于互聯(lián)網(wǎng)基礎(chǔ)設(shè)施中運行著大量C代碼,使用翻譯工具變得極具吸引力?!?/p>
Aas還提到:“我們已經(jīng)在這一領(lǐng)域進行了實驗,例如最近我們將基于C的AV1實現(xiàn)翻譯為Rust。目前的翻譯工具仍然需要大量的人工干預(yù)以確保翻譯結(jié)果的正確性和符合Rust的習(xí)慣性編程風(fēng)格,但我們希望隨著進一步的投資,這些工具將變得更加高效?!?/p>
Code Metal公司的首席執(zhí)行官Peter Morales則認(rèn)為DARPA的TRACTOR項目既具有前景又恰逢其時。Code Metal是一家專注于為邊緣硬件轉(zhuǎn)譯代碼的公司,最近剛籌集了1650萬美元。
“我認(rèn)為TRACTOR項目在實現(xiàn)上非常可行,我相信它將在網(wǎng)絡(luò)安全領(lǐng)域產(chǎn)生重大影響,因為內(nèi)存安全已成為該領(lǐng)域的重要議題之一?!盡orales說道。
當(dāng)被問及是否同意DARPA所說的軟件社區(qū)已經(jīng)就解決內(nèi)存安全問題達(dá)成共識時,Morales并未完全否定C和C++的價值。
“我認(rèn)為選擇任何一種語言都涉及權(quán)衡,但在內(nèi)核級別,將一部分代碼遷移到Rust是有意義的?!彼a充道。
3.自動代碼轉(zhuǎn)換仍需直面挑戰(zhàn)
談及自動代碼轉(zhuǎn)換的挑戰(zhàn),Morales表示:“這確實是一個DARPA級別的難題?!痹趪L試為不同語言之間的語句轉(zhuǎn)換制定規(guī)則時,面臨的各種特殊情況數(shù)量之多令人望而卻步。
TRACTOR項目的負(fù)責(zé)人Wallach強調(diào),他們的目標(biāo)是實現(xiàn)高度自動化,但這需要克服一系列復(fù)雜的技術(shù)挑戰(zhàn)。
“例如,大型語言模型在被要求翻譯代碼時有時能給出驚人的答案,但有時也會產(chǎn)生錯誤的答案,”他解釋道。“另一個挑戰(zhàn)在于,C語言允許代碼對指針執(zhí)行操作,包括算術(shù)運算,而Rust則禁止這類操作。要跨越這個差距,需要的遠(yuǎn)不止是簡單的逐字翻譯?!?/p>
當(dāng)被問及DARPA是否有特定的代碼庫打算進行轉(zhuǎn)換時,Wallach回答說:“我們的目標(biāo)是對整個龐大的開源代碼世界,以及國防工業(yè)基礎(chǔ)中使用的代碼進行轉(zhuǎn)換。雖然我沒有具體的計劃,但像Linux內(nèi)核這樣的項目由于存在技術(shù)上的限制,目前不適合使用Rust。”
DARPA將于2024年8月26日舉辦一場活動,針對計劃為TRACTOR項目提交提案的人士。參與者可以選擇現(xiàn)場參加或遠(yuǎn)程參與。有意參加的人士必須在2024年8月19日前完成注冊。
4.來自開發(fā)者的聲音
盡管TRACTOR項目獲得了官方的支持,但在相關(guān)的新聞討論中,來自民間的聲音似乎并不像上層那樣信心滿滿。
Reddit技術(shù)論壇上,有開發(fā)者直言他對此事的感受“十分復(fù)雜”。
“一方面,我看到了在關(guān)鍵系統(tǒng)中確保內(nèi)存安全的必要性。另一方面……依靠GPT生成的代碼來進行轉(zhuǎn)換?真的嗎?那些出于安全原因應(yīng)該轉(zhuǎn)向Rust的系統(tǒng),似乎是不應(yīng)該使用任何AI生成代碼的那種系統(tǒng)。”
不少人對此有同感。他們認(rèn)可在關(guān)鍵系統(tǒng)中確保內(nèi)存安全的重要性,也不否認(rèn)這的確是Rust的主要賣點。但是,他們對于依賴AI(如GPT)生成的代碼來實現(xiàn)這種轉(zhuǎn)換持保留意見。畢竟AI生成的代碼可能存在不確定性,總是讓人難以完全信任,在這一前提下讓其滿足關(guān)鍵系統(tǒng)的安全性要求是非常矛盾的。
還有人給出了更為辛辣戲謔的評論:“當(dāng)一切都變得一團糟時,就是Rust開發(fā)者們大賺特賺的時候?!碑?dāng)那些本不適合被轉(zhuǎn)換到新語言(如 Rust)的舊代碼或系統(tǒng)被強行要求轉(zhuǎn)換時,當(dāng)盲目地使用AI來轉(zhuǎn)轉(zhuǎn)換舊代碼時,可能會產(chǎn)生更多的問題而不是解決問題。
這些來自民間的聲音也印證了Stack Overflow不久前發(fā)布的2024年開發(fā)者調(diào)查數(shù)據(jù)。盡管美國政府不斷呼吁減少對C和C++的依賴,但編程語言的受歡迎程度幾乎沒有變化。調(diào)查結(jié)果顯示,Rust的使用率從13.5%下降到了12.6%,而C和C++的使用率略有增長。目前沒有跡象表明會有大規(guī)模從C或C++向其他語言的遷移。
圖片
參考鏈接:
??https://www.theregister.com/2024/08/03/darpa_c_to_rust/??
本文轉(zhuǎn)載自??51CTO技術(shù)棧??,作者:諾亞
