新智元報道
編輯:KingHZ
【新智元導讀】AI編程夢被撕碎!最新研究用57.6萬個代碼樣本揭示:超20%代碼依賴的是不存在的軟件包。蘋果、微軟都曾中招,而Meta和微軟還在高喊「未來AI寫95%代碼」。AI寫代碼的神話,正在變成安全災難。
最近,扎克伯格表示,Meta正在內(nèi)部開發(fā)專門用于編程和AI研究的智能體——
這些并不是通用型工具,而是為提升 Meta自家AI項目(如 LLaMA)量身定制的專用智能體。
他預測,在未來的12到18個月內(nèi),Meta用于AI開發(fā)的大部分代碼將不再由人類編寫,而是由AI智能體生成。
微軟首席技術官Kevin Scott的預測更長遠,但更大膽。
在最近的一檔播客節(jié)目中,他預估在未來五年,AI生成的代碼將占據(jù)主導地位,表示道:
95%的代碼將由AI生成,人類完全手動編寫的代碼幾乎一行也沒有。
左:微軟首席技術官Kevin Scott;右:播客主持人Harry Stebbings
Scott擁有41年的編程經(jīng)驗,足以讓他見證行業(yè)內(nèi)的多次變革。
20世紀80年代,匯編語言編程開始向高級語言編程轉變,
當時,有些老程序員會說:「如果你不會寫匯編語言,就不算真正的程序員,那是唯一正確的編程方式。」
如今,已經(jīng)沒人再提這些了。
在他看來,AI的崛起與當年的變革并無太大不同。
Scott認為,「最優(yōu)秀的程序員」會迅速適應AI工具:
一開始,開發(fā)者對這些工具持懷疑態(tài)度,但現(xiàn)在他們的態(tài)度變成了「除非我死了,否則別想讓我放棄這些工具」。
AI已經(jīng)成為他們工具箱中不可或缺的一部分。
但軟件工程中,「沒有銀彈」:如果開發(fā)的次要部分少于整個工作的 9/10,那么即使不占用任何時間,也不會給生產(chǎn)率帶來數(shù)量級的提高。
正如Scott所言:「代碼的創(chuàng)造性和核心設計,仍然完全依賴于人類。」
論文鏈接:https://www.cs.unc.edu/techreports/86-020.pdf
擁有超過25年經(jīng)驗的記者Dan Goodin,則報道了AI生成代碼,不僅不能取代人類開發(fā)者,甚至可能對軟件供應鏈造成災難性影響。
AI帶來的災難性影響
在2025年美國計算機安全協(xié)會安全研討會(USENIX Security 2025)上,研究人員計劃發(fā)表一篇論文,報告發(fā)現(xiàn)的 「軟件包幻覺」現(xiàn)象。
USENIX Security 2025在今年8月13日到8月15日舉行
這項研究顯示,AI生成的計算機代碼中充斥著對并不存在的第三方庫的引用,這為供應鏈攻擊創(chuàng)造了絕佳機會。
攻擊者可以利用惡意軟件包毒害合法程序,進而竊取數(shù)據(jù)、植入后門,以及實施其他惡意行為。
論文鏈接:https://arxiv.org/abs/2406.10279v3
該研究使用16種主流大型語言模型(LLM)生成了57.6萬個代碼樣本。
結果發(fā)現(xiàn),這些樣本中包含的軟件包依賴項里,有44萬個是 「幻覺產(chǎn)物」,也就是說它們根本不存在。
開源模型的虛構依賴比例最高,生成的代碼所包含的依賴項中21%并不存在。
新型軟件攻擊:軟件包混淆
這些并不存在的依賴項加劇了所謂的「依賴項混淆攻擊」,對軟件供應鏈構成了威脅。
這類攻擊的原理是讓軟件包訪問錯誤的組件依賴項。
例如,攻擊者發(fā)布一個惡意軟件包,給它起一個與合法軟件包相同的名字,但標注一個更新的版本號。在某些情況下,依賴該軟件包的軟件會選擇惡意版本,而不是合法版本,因為惡意版本看起來更新。
這種攻擊方式,也稱為「軟件包混淆」,在2021年的一次概念驗證中首次展示,成功在蘋果、微軟等巨頭公司的網(wǎng)絡中執(zhí)行了偽造代碼。
這屬于軟件供應鏈攻擊,目的是污染軟件源頭,感染所有下游用戶。
軟件供應鏈攻擊(software supply chain attack)一般步驟
該研究的主要負責人、德克薩斯大學圣安東尼奧分校的博士生Joseph Spracklen,在給媒體的電子郵件中表示:「一旦攻擊者利用虛構軟件包名稱發(fā)布包含惡意代碼的軟件包,并依靠模型向毫無戒心的用戶推薦該名稱,如果用戶沒有仔細驗證就安裝了該軟件包,隱藏在其中的惡意代碼就會在用戶系統(tǒng)上執(zhí)行。」
軟件包幻覺多嚴重?
為了評估軟件包幻覺問題的嚴重性,研究人員測試了16種代碼生成AI模型(包括GPT-4、Claude、CodeLlama、DeepSeek Coder、Mistral等),使用兩個獨特的提示數(shù)據(jù)集,生成了576,000個Python和JavaScript代碼樣本。
結果顯示,推薦的軟件包中有近20%是不存在的。
研究發(fā)現(xiàn),不同LLM和編程語言的虛構軟件包比例差異顯著。
開源模型的平均虛構比例接近22%,而商業(yè)模型僅略超5%。Python代碼的虛構比例平均為16%,低于JavaScript的21%。
這種差異可能與模型復雜性和訓練數(shù)據(jù)有關。
商業(yè)模型(如ChatGPT系列)通常擁有比開源模型多10倍以上的參數(shù),參數(shù)量更大可能減少幻覺。此外,訓練數(shù)據(jù)、微調(diào)和安全優(yōu)化也可能影響虛構比例。
至于JavaScript虛構比例高于Python,研究推測這與JavaScript生態(tài)系統(tǒng)中軟件包數(shù)量(約為Python的10倍)和命名空間復雜性有關。
更大的軟件包生態(tài)和復雜命名增加了模型準確回憶包名的難度,導致虛構比例上升。
不同語言模型在Python和JavaScript代碼中的幻覺率
為了驗證LLM是否會反復幻覺相同的軟件包,研究人員隨機抽取了500個引發(fā)幻覺的提示,并對每個提示重復查詢10次。
結果發(fā)現(xiàn):
43%的幻覺軟件包在10次查詢中均被重復提及;
39%的幻覺軟件包在10次查詢中完全未重復;
58%的幻覺軟件包在10次迭代中被重復提及超過一次。
研究人員指出:「這表明,大多數(shù)幻覺不是隨機錯誤,而是可重復、持續(xù)的現(xiàn)象。這種持久性對惡意攻擊者更有價值,讓幻覺攻擊成為更現(xiàn)實的威脅。」
盡管許多模型在某些情況下能檢測到自己的幻覺,但問題在于,許多開發(fā)者依賴AI生成代碼,并盲目信任AI的輸出。
「幻覺」難以根除
在AI領域,當大語言模型產(chǎn)生的輸出結果在事實上不正確、毫無意義,或者與分配給它的任務完全無關時,就會出現(xiàn) 「幻覺」 現(xiàn)象。
長期以來,「幻覺」 一直困擾著大語言模型,因為它降低了模型的實用性和可信度;而且事實證明,LLM「幻覺」 很難預測和解決。
幻覺軟件包是否可能源于模型預訓練數(shù)據(jù)中已刪除的軟件包?
研究人員調(diào)查結果發(fā)現(xiàn):已刪除軟件包對幻覺的貢獻「微乎其微」。
他們還發(fā)現(xiàn)了「跨語言幻覺」:某個編程語言中的幻覺軟件包名稱與另一種語言中存在的軟件包名稱相同。
而跨語言幻覺在JavaScript中更常見。
此外,大多數(shù)幻覺軟件包的名稱與現(xiàn)有軟件包名稱「實質(zhì)性不同」,但這些名稱往往令人信服,且與上下文高度相關。
對于使用LLM的開發(fā)者,研究人員的建議是:在使用AI推薦的代碼之前,仔細檢查推薦的軟件包是否存在,以避免落入供應鏈攻擊的陷阱。
開發(fā)者提高警惕和驗證,可以有效降低因軟件包幻覺引發(fā)的安全風險,確保代碼安全可靠。
參考資料:
https://arstechnica.com/security/2025/04/ai-generated-code-could-be-a-disaster-for-the-software-supply-chain-heres-why/
https://www.helpnetsecurity.com/2025/04/14/package-hallucination-slopsquatting-malicious-code/
https://x.com/WesRothMoney/status/1917370974032519547
https://www.youtube.com/watch?v=KN7KYzpPfiU
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺“網(wǎng)易號”用戶上傳并發(fā)布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.