GitLab Duo AI 編程助手曝出提示注入漏洞 凸顯AI助手的潛在風(fēng)險(xiǎn)
漏洞發(fā)現(xiàn):惡意提示可操控AI行為
研究人員發(fā)現(xiàn),通過將隱藏指令植入代碼注釋、提交信息和合并請求描述中,可以誘騙GitLab的AI編程助手Duo向用戶顯示惡意內(nèi)容并泄露私有源代碼。這款A(yù)I助手會解析來自公共代碼庫的注釋、源代碼、合并請求描述和提交信息中的惡意AI提示,導(dǎo)致其向用戶推薦惡意代碼、分享惡意鏈接,并在響應(yīng)中注入惡意HTML代碼,從而悄無聲息地泄露私有項(xiàng)目代碼。

應(yīng)用安全公司Legit Security的研究人員在報(bào)告中指出:"GitLab已經(jīng)修補(bǔ)了HTML注入漏洞,這很好,但更重要的教訓(xùn)很明確:AI工具現(xiàn)在已成為應(yīng)用程序攻擊面的一部分。如果它們從頁面讀取內(nèi)容,這些輸入就需要像其他用戶提供的數(shù)據(jù)一樣對待——不可信、混亂且潛在危險(xiǎn)。"
提示注入(Prompt injection)是一種針對大語言模型(LLM)的攻擊技術(shù),用于操控其向用戶輸出的內(nèi)容。雖然這不是新型攻擊手段,但隨著企業(yè)開發(fā)能夠解析用戶生成數(shù)據(jù)并基于內(nèi)容自主采取行動的AI代理,其重要性將日益凸顯。
開發(fā)助手反成安全威脅
GitLab Duo是為流行DevOps平臺GitLab提供的AI開發(fā)生命周期助手。該工具可通過聊天界面提供代碼建議、排查代碼問題、解釋代碼漏洞并提出修復(fù)方案。在日常運(yùn)行中,Duo會分析GitLab項(xiàng)目中的內(nèi)容,包括源代碼、注釋、描述、已提交問題以及合并請求(代碼貢獻(xiàn))等。
Legit Security的研究人員嘗試在項(xiàng)目中可能由外部用戶控制的各個區(qū)域植入指令,測試GitLab Duo在分析內(nèi)容時是否會將其解釋為系統(tǒng)提示。測試取得了成功——研究人員寫道:"Duo會分析頁面的全部上下文,包括注釋、描述和源代碼,這使得它容易受到隱藏在該上下文中任何位置的注入指令影響。"
在測試前,研究人員還探索了多種隱藏提示的方法,包括Unicode編碼走私、base16編碼有效載荷,以及使用KaTeX數(shù)學(xué)公式渲染引擎將提示以白色文本形式注入(在白色背景下不可見)。
攻擊場景:從代碼建議到憑證泄露
研究人員成功演示了多種攻擊場景:
- 在合并請求描述中植入隱藏提示,誘使Duo在代碼變更建議中注入惡意JavaScript包
- 通過特定提示強(qiáng)制Duo在響應(yīng)中注入指向偽造登錄頁面的網(wǎng)頁鏈接
- 利用隱藏提示欺騙AI助手無條件支持惡意合并請求,誤導(dǎo)審查者認(rèn)為這是合法提交
更嚴(yán)重的是,研究人員發(fā)現(xiàn)Duo基于Markdown語言的HTML聊天界面存在漏洞。由于響應(yīng)是從后端LLM逐步流式傳輸呈現(xiàn)的,攻擊者可注入HTML標(biāo)簽(如)使其被瀏覽器解析執(zhí)行。這為竊取私有代碼創(chuàng)造了條件——攻擊者若獲知私有項(xiàng)目URL,就能利用用戶權(quán)限讀取、編碼敏感源代碼,并將其外泄至控制服務(wù)器。若還能定位存儲API令牌等憑證的文件位置,危害將更為嚴(yán)重。
修復(fù)進(jìn)展與遺留風(fēng)險(xiǎn)
GitLab已通過阻止Duo渲染指向非gitlab.com域名的或等風(fēng)險(xiǎn)標(biāo)簽,修復(fù)了HTML注入問題。但其他不涉及HTML渲染的提示注入場景仍未修補(bǔ),因?yàn)镚itLab認(rèn)為這些情況不會直接導(dǎo)致未授權(quán)訪問或代碼執(zhí)行,不構(gòu)成安全問題。
研究人員強(qiáng)調(diào):"這一安全漏洞表明,當(dāng)GitLab Duo等AI助手盲目信任頁面內(nèi)容時,可能帶來巨大風(fēng)險(xiǎn)。通過植入隱藏提示和原始HTML,我們能在用戶未點(diǎn)擊任何內(nèi)容的情況下,使Duo泄露私有源代碼。"




































