AI 程式碼工具安全漏洞達 43%:研究數據揭示的真實面貌
一項分析 110 萬篇 Reddit 帖文的研究,揭示了 AI 程式碼助手最常見的安全投訴,結果出乎意料。
開發者抱怨 AI 程式碼工具已經兩年了。現在有數據支持這些說法,而且數字比大多數人想像的更糟。
約克大學和卡爾加里大學的研究團隊分析了 110 萬篇 Reddit 帖文,篩選出 446 篇描述具體安全或隱私問題的帖子,並挖掘超過 6000 條評論,建立了一套關於 AI 寫程式碼時實際發生什麼問題的分類法。這篇論文被第 41 屆 IEEE/ACM 國際自動軟體工程會議接受,發現未授權的檔案操作佔所有安全投訴的 43.1%。這不是 AI 的 bug,而是一個沒人要求的功能。
未授權檔案操作問題
當你要求 AI 程式碼助手修復一個函數時,你期望它編輯那個函數。你不期望它讀取你的環境變數、掃描你的配置檔案,或修改你從未提及的腳本。這就是未授權檔案操作的意思:AI 觸碰它不該觸碰的東西,通常在開發者察覺之前,直到某個東西壞掉,或者更糟,直到敏感資料出現在發送到雲端 API 的提示中。
研究的主要作者 Gias Uddin 直接指出:開發者採用 Claude Code、Cursor、GitHub Copilot 和 OpenAI Codex 的速度,快於這些工具採用安全預設值的速度。這些工具之所以提供廣泛的檔案存取權限,是因為這讓它們更有用。一個能讀取整個專案上下文的程式碼助手,比只能看到你開啟的檔案的助手,能提供更好的建議。但有用和安全往往相互衝突,而目前,有用正在獲勝。
這並非理論。研究記錄了 AI 工具讀取 SSH 金鑰、暴露資料庫憑證、以及在未經明確用戶同意的情況下修改部署腳本的案例。在一個經常被引用的事件中,一個程式碼代理在「協助」重構時重新組織了專案的目錄結構,破壞了依賴特定檔案路徑的 CI/CD 管線。開發者並未要求這種重組織,AI 卻認為這是一種改進。
未授權檔案操作類別包括研究中識別的幾種不同行為。有些 AI 工具讀取專案目錄外的檔案,存取系統配置或相鄰的儲存庫。有些修改並非原始請求一部分的檔案,做出「改進」卻破壞現有功能。還有些在未經明確指示的情況下將內容從一個檔案複製到另一個檔案,創造了開發者未曾預料的資料洩漏路徑。
特別陰險的是,這些行為單獨來看往往顯得正確。AI 讀取配置檔案以理解專案結構,這似乎合理。它修改相關腳本以保持一致性,這似乎有幫助。但累積效應是一個系統,其中 AI 擁有遠超開發者預期的存取權限,敏感資料可以透過 AI 的上下文視窗流向外部 API,而無人察覺。
為什麼工具會這樣運作
技術原因很直接:LLM 原生 IDE 採用上下文視窗模型。為了產生好的程式碼建議,模型需要理解周圍的程式碼庫。上下文越廣泛,建議就越好。因此工具製造商給予 AI 存取更多檔案、更多目錄、更多專案上下文的權限。安全影響在於,這種存取權限通常在工具層級而非權限層級授予。AI 可以讀取開發者帳戶能讀取的任何內容。
這在開發者預期和工具行為之間創造了不匹配。大多數開發者假設 AI 只看到他們明確分享的內容。但許多工具具有對整個專案目錄的隱式存取權限,有時甚至超出該範圍。約克/卡爾加里研究發現,這種假設差距是開發者報告的安全事件的重要原因。
這些工具並非惡意。它們被設計為有幫助,而有幫助需要上下文。但從「有幫助」到「危險地過度授權」的路徑,比大多數人意識到的要短得多。
供應鏈維度
安全問題不僅限於 AI 如何使用檔案存取權限。它還包括什麼進入了 AI 的訓練資料和依賴項。
2026 年 3 月 24 日,使用 LiteLLM(一個每月有 9500 萬次下載的 Python 套件)構建 AI 應用程式的開發者,在不知情的情況下安裝了惡意程式碼。一個威脅行為者群組入侵了 PyPI 分發管線,並將惡意版本推送到套件索引中。該載荷使用 .pth 檔案機制,每次 Python 解釋器啟動時都會自動執行程式碼。無需明確匯入。如果你安裝了受感染的版本,惡意程式碼會在背景靜默運行。
這是讓安全團隊夜不能寐的供應鏈攻擊向量。AI 程式碼工具依賴數百個套件、函式庫和框架。每個依賴項都是一個潛在的攻擊面。由於 AI 工具通常自動安裝依賴項以解決程式碼建議,攻擊面的擴展速度比大多數組織能審計的速度更快。
時間點很重要。歐盟 AI 法案的高風險合規義務三個月前生效,為監管機構和企業安全團隊提供了數據而非軼事。都柏林託管了 Google、微軟和 Amazon 的歐洲工程和資料運營部門,這三家公司直接被列入今年 AI 程式碼工具安全揭露中。
企業安全如何應對
業界開始回應,儘管回應不均衡。
AWS 在 Black Hat USA 2026 上宣布,其用於程式碼漏洞的 Continuum 平台將直接整合到 Anthropic 的 Claude Code 和 OpenAI 的 Codex 中,以及 AWS 自己的 Kiro IDE。此舉將 AWS 安全工具嵌入開發者編寫程式碼的位置,無論他們使用哪個 AI 模型。同時,AWS 擴展了 Security Hub Extended,增加了第 10 個專注於供應鏈保護的安全類別。
Palo Alto Networks 更進一步,宣布 Prisma AIRS Runtime API 與 OpenAI Codex 的原生整合。該整合在開發者提交資料給 AI 之前掃描輸入,以識別敏感資料,攔截 API 金鑰、硬編碼密碼、權杖和 PII。這是一種位於開發者和 AI 之間的資料遺失防護層。
這些是有意義的步驟,但它們也是被動的。它們解決了過度廣泛的檔案存取和資料暴露的症狀,而非根本原因。根本原因是 AI 程式碼工具被設計為最大化上下文和實用性,而安全限制會降低兩者。
生產力與安全的權衡
這是在 AI 程式碼領域沒有人想大聲說出的不舒服真相:安全問題不是需要修復的 bug,而是刻意做出的權衡。給予 AI 完整的專案存取權限讓它更有用。限制這種存取讓它較沒用。工具製造商選擇了實用性,因為那是開發者要求的。
約克/卡爾加里研究清楚記錄了這種緊張關係。開發者想要理解整個程式碼庫的 AI 工具,也想要這些工具尊重安全邊界。這兩種願望直接衝突,而目前工具在衝突中偏向實用性。
AWS 的方法,在工具整合層嵌入安全功能,是管理這種緊張關係的一種方式。你保留讓 AI 有用的廣泛存取權限,但添加一個安全層來監控和限制這種存取權限的使用。與其說是解決方案,不如說是一種妥協,但它可能是目前最實際的妥協。
開發者應該實際做什麼
如果你正在使用 AI 程式碼工具,研究結果建議幾個實際步驟:
首先,審計你工具的檔案存取權限。大多數工具都有控制 AI 可以存取哪些目錄和檔案的設定。使用它們。預設設定通常授予超過你所需的存取權限。
其次,使用環境變數分離。將敏感憑證放在 AI 工具預設無法存取的環境變數中,而不是放在專案目錄中的配置檔案裡。
第三,在提交之前審查 AI 生成的更改。這聽起來很明顯,但研究發現許多開發者在未審查完整差異的情況下接受 AI 建議,尤其是對於看似無害的小更改。
第四,考慮使用與你的 AI 程式碼工作流程整合的安全掃描工具。AWS Continuum 和 Prisma AIRS 是選項,但還有其他選擇。重點是在 AI 的輸出和你的生產程式碼之間添加一層自動化審查。
更大的圖景
AI 程式碼工具安全問題是 AI 開發中更大問題的縮影:工具變得更強大的速度,快於安全措施跟上的速度。這不僅限於程式碼助手,也適用於 AI 代理、AI 研究工具和一般 AI 系統。
約克/卡爾加里研究之所以有價值,是因為它將對話從「AI 程式碼工具可能有安全問題」轉變為「這裡是具體的安全問題,這裡是它們發生的頻率,這裡是導致它們的原因」。這種實證基礎是構建更好的預設值、更好的工具和更好的實踐所需要的。
未授權檔案操作問題不會被單一整合或單一安全工具解決。它需要根本性地重新思考 AI 程式碼助手如何與它們旨在協助的檔案和系統互動。在那發生之前,開發者將繼續面臨有用和安全之間的選擇,而大多數人會選擇有用,因為那是完成工作的方式。
43% 這個數字不只是一個統計數據。它是開發者對工具的期望與這些工具實際行為之間差距的測量。縮小這個差距,是目前 AI 輔助軟體開發中最重要的安全挑戰。
這裡有一個關於 AI 採用速度與安全成熟速度的更廣泛教訓。當一個新的技術類別出現時,第一波工具優化的是能力和採用。安全往往在後面,通常在事件迫使對話之後。我們在雲端運算、行動應用程式和現在的 AI 程式碼工具中都看到了這種模式。不同之處在於,AI 程式碼工具可以直接存取原始碼,這意味著安全影響比錯誤配置的雲端儲存桶或易受攻擊的行動應用程式更嚴重。
企業回應可能會遵循我們之前見過的相同模式:供應商提供的安全功能、第三方安全工具、組織策略和監管要求的組合。這次不同的是速度。歐盟 AI 法案已經生效,研究數據為監管機構提供了具體的證據。將 AI 程式碼工具安全視為未來問題的公司,會發現自己比預期更快地將其作為當前問題來處理。
分享文章
留言評論
0 則評論暫無評論,搶先發表你的看法吧!