AI幻覺(jué)代碼依賴成為新型軟件供應(yīng)鏈威脅
隨著生成式AI編程工具的普及,以及AI模型容易"幻覺(jué)"出不存在軟件包的特性,一種名為"垃圾包搶注"(slopsquatting)的新型供應(yīng)鏈攻擊正在浮現(xiàn)。
安全研究員Seth Larson創(chuàng)造了這個(gè)術(shù)語(yǔ),它衍生于"拼寫(xiě)錯(cuò)誤搶注"(typosquatting)攻擊手法——通過(guò)注冊(cè)與熱門(mén)庫(kù)名稱相似的惡意軟件包來(lái)誘騙開(kāi)發(fā)者安裝。
幻覺(jué)包名的攻擊原理
與拼寫(xiě)錯(cuò)誤搶注不同,垃圾包搶注不依賴拼寫(xiě)錯(cuò)誤。攻擊者會(huì)在PyPI和npm等軟件倉(cāng)庫(kù)中,注冊(cè)那些AI模型在代碼示例中經(jīng)常虛構(gòu)的包名。
2025年3月發(fā)布的研究論文顯示,在分析的57.6萬(wàn)個(gè)Python和JavaScript代碼樣本中,約20%案例推薦的依賴包并不存在。開(kāi)源大模型如CodeLlama、DeepSeek、WizardCoder和Mistral的情況更嚴(yán)重,而ChatGPT-4等商業(yè)工具的幻覺(jué)率仍達(dá)5%。
各大型語(yǔ)言模型的幻覺(jué)率來(lái)源:arxiv.org
幻覺(jué)包名的可預(yù)測(cè)性
研究發(fā)現(xiàn),雖然記錄的獨(dú)特幻覺(jué)包名超過(guò)20萬(wàn)個(gè),但其中43%會(huì)在相似提示詞下重復(fù)出現(xiàn),58%在十次運(yùn)行中至少重復(fù)一次。這些包名中,38%受真實(shí)包名啟發(fā),13%源于拼寫(xiě)錯(cuò)誤,51%則完全虛構(gòu)。
盡管尚未發(fā)現(xiàn)攻擊者利用此漏洞的實(shí)際案例,但網(wǎng)絡(luò)安全公司Socket的研究人員警告稱,這些幻覺(jué)包名具有常見(jiàn)性、可重復(fù)性和語(yǔ)義合理性,形成了可預(yù)測(cè)的攻擊面。
"58%的幻覺(jué)包會(huì)重復(fù)出現(xiàn),說(shuō)明它們不是隨機(jī)噪聲,而是模型對(duì)特定提示的可重復(fù)反應(yīng)。"Socket團(tuán)隊(duì)解釋道,"這種可重復(fù)性提升了攻擊價(jià)值,觀察少量模型輸出就能鎖定有效攻擊目標(biāo)。"
供應(yīng)鏈風(fēng)險(xiǎn)概覽來(lái)源:arxiv.org
風(fēng)險(xiǎn)緩解措施
目前唯一有效的防范方法是人工驗(yàn)證每個(gè)包名,切勿假設(shè)AI生成的代碼片段中提到的依賴包真實(shí)存在或安全可靠。其他防護(hù)措施包括:
- 使用依賴掃描工具
- 鎖定文件(lockfiles)管理
- 哈希驗(yàn)證確保使用可信版本
研究還表明,降低AI的"溫度"參數(shù)(減少隨機(jī)性)能有效減少幻覺(jué)。若采用AI輔助編程,這成為重要考量因素。最根本的防護(hù)措施是:所有AI生成的代碼都應(yīng)在隔離的安全環(huán)境中測(cè)試,再部署到生產(chǎn)環(huán)境。