昨天剛夸了 AI 對開源社區(qū)的貢獻(xiàn),尤其是在漏洞掃描方面的表現(xiàn)超神。當(dāng)然凡事都有兩面性,這不 AI 又闖禍了。
Fedora QA 體系總負(fù)責(zé)人 Adam Williamson 在開發(fā)郵件列表發(fā)了一封郵件,直接掛了一個名為 Nathan Giovannini 的老賬號。該賬號 2016 年開始活躍,2018 年參與過 Fedora 討論,有社區(qū)信譽(yù),有提交記錄,算是一個非常正經(jīng)的開源貢獻(xiàn)者。
但是從 4 月 7 日開始,這個賬號被一個 AI 智能體完全托管。
Williamson 指出了這個賬號近期干的幾件壞事,它先是在 Bugzilla 里把別人的 Bug 大量重新分配給不相關(guān)的人,又把 Bug 的嚴(yán)重級別和優(yōu)先級瞎改一通,它還寫了一些看著挺通順、但細(xì)想跟問題本身沒啥關(guān)系的回復(fù),最后它甚至還在 GitHub 上給上游項目提交了不少 PR。
你沒猜錯,最嚴(yán)重的就是這最后一件事,它胡亂生成的一個 PR 被合并進(jìn)了 Anaconda,F(xiàn)edora 的系統(tǒng)安裝器,操作系統(tǒng)的第一道門。
這個補(bǔ)丁在 Anaconda 45.5 里待了將近兩個月,直到 6 月 2 日的 45.6 版本才緊急回滾。
兩個月以來沒有任何人發(fā)現(xiàn)它有問題。
![]()
“看著都對”
先說這個 AI 的攻擊手段,它不搞技術(shù)漏洞那一套,而是假扮原主騙過了所有人。
Bugzilla 里有人提了個安裝崩潰的問題,它跑過去回復(fù)一段話,語氣正常、用詞得體、邏輯似乎也通。維護(hù)者掃一眼,oi~覺得這人挺熱心,回了。它又回。繼續(xù)回。每一條都講道理,每一條都用LLM生成了一堆看著合理的解釋。
但事后一細(xì)想就發(fā)現(xiàn)不對了,它的回復(fù)跟 Bug 的具體技術(shù)細(xì)節(jié)對不上,它不是真的在解決問題,它在生成一個個「看起來像在解決問題」的回復(fù)。
Williamson 用了四個字形容這種狀態(tài),“看著都對”。
這四個字的含金量懂的都懂,這正是我們?nèi)粘J褂?AI 最擔(dān)心的地方。俗話說“九真一假,天下無敵”,在開源項目代碼審核這一塊,惡意攻擊者的代碼一眼就能看出問題,但 AI 生成的回復(fù),可能有 90% 是對的,10% 是歪的,你得花不少時間才能把那 10% 挑出來,它還會用講道理的方式反駁你的質(zhì)疑。
Anaconda 團(tuán)隊的維護(hù)者M(jìn)artin Kolman說得更直接:“就算這玩意完全沒有惡意,維護(hù)者也已經(jīng)輸了。因為它可以一直說、一直改、一直提交PR,你只能用晚上和周末的碎片時間逐行審查。你是一個人,它是一根網(wǎng)線加一個API key。”
這是一場不對稱消耗。
對方不需要寫出多好的代碼,它只需要用數(shù)量優(yōu)勢把人壓垮,然后賭一兩個漏網(wǎng)之魚。
Anaconda 45.5 里的那個被成功合并的補(bǔ)丁,就是那個漏網(wǎng)之魚。
XZ 攻擊的前奏
Kolman 在討論里還提到了兩年前發(fā)生的「XZ 后門」事件。
2024 年那場差點(diǎn)讓整個 Linux 生態(tài)崩塌的供應(yīng)鏈攻擊,始作俑者 JiaTan(化名)花了三年時間布局。先提交無害補(bǔ)丁,幫維護(hù)者修bug,建立信任。然后逐步擴(kuò)展權(quán)限,一點(diǎn)一點(diǎn)接近核心模塊。最后把一個經(jīng)過層層混淆的后門塞進(jìn)了 xz 5.6.0。
Kolman 的原話大意是,這次 AI 代理的操作模式,跟 XZ 的“潛伏”階段極其相似。先從非敏感操作開始,重新分配Bug、修改優(yōu)先級,看起來是無害的「日常維護(hù)」。然后提交看似合理的補(bǔ)丁,用 LLM 生成的解釋來說服審查者。最后目標(biāo)指向最核心的組件。
被這個 AI 代理碰過的項目清單上,有Anaconda,操作系統(tǒng)的安裝器;lxqt-policykit,Linux上的權(quán)限提升工具;openSUSE osc,構(gòu)建系統(tǒng)命令行工具。
全是供應(yīng)鏈上的咽喉位置。
雖然目前還沒有任何證據(jù)表明這次有人植入了惡意代碼,Anaconda 45.5 被污染的那個補(bǔ)丁,看起來更像是 AI 亂寫一通,不是精心設(shè)計的后門。但 Kolman 的話還是讓所有人后脊梁發(fā)涼,如果這次只是一場「試跑」,一場失控預(yù)演呢?
把這次事件當(dāng)作一次壓力測試,開源社區(qū)的信任模型還能不能兜住?
它沒有黑掉服務(wù)器,它黑掉的是信任
賬號的主人 Giovannini 后來私下聯(lián)系了 Williamson,說自己的賬號憑據(jù)被泄露了,他不是背后控制 AI 的人。
你信嗎?反正 Williamson 不太信。他發(fā)現(xiàn) Giovannini 給出的新 GitHub 賬號剛創(chuàng)建一個小時,說話的語氣也跟在社區(qū)里交流多年時不一樣。
但真相是什么已經(jīng)不重要了,重要的是系統(tǒng)被鉆了空子。
一直以來很多傳統(tǒng)開源社區(qū)的信任模型建立在幾個輕量憑證上,包括賬號歷史、過往互動、社區(qū)聲譽(yù)等,一個 2016 年就開始活躍的賬號天然獲得了信任加成。維護(hù)者看到它提交 PR,腦子里不會立刻拉響警報,這是人之常情。
問題是 AI 代理恰好能在這些維度上完美偽裝,它可以繼承賬號的歷史信譽(yù),它可以生成符合社區(qū)語氣的回復(fù),它可以用 LLM 的講道理能力來反駁質(zhì)疑。它不需要「黑進(jìn)去」,它本身就混進(jìn)了人群。
Fedora 目前已經(jīng)移除了 Giovannini 的 Bugzilla 權(quán)限,Anaconda 45.6 回滾了問題補(bǔ)丁。GitHub 上那個提交 PR 的賬號變成了 ghost。
但更大的問題還沒解決。
你怎么區(qū)分一個勤奮的 AI 助手和一個失控的 AI 代理?當(dāng)一個老賬號突然變得異常活躍,連續(xù)提交大量 PR,系統(tǒng)能不能在合并之前攔住它?舊賬號復(fù)活是否需要再驗證?敏感操作是否有速率限制?AI生成的提交是否需要標(biāo)記?
這些問題至少在目前,絕大部分開源社區(qū)仍沒有制定出一套標(biāo)準(zhǔn)的解決方案,也包括 Fedora。
參考來源
Fedora開發(fā)郵件列表(Adam Williamson,2026年5月27日)-https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/
Anaconda 45.6 Changelog-https://github.com/rhinstaller/anaconda/releases/tag/anaconda-45.6-1
6.27,OSC源創(chuàng)會,上海見。
一起去碼頭整“意思”!
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺“網(wǎng)易號”用戶上傳并發(fā)布,本平臺僅提供信息存儲服務(wù)。
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.