AI-Generated GitHub Copilot Autofix Leads to Snowflake Jira Compromise

GitHub Copilot 生成的 AI「Autofix」在 Snowflake 的公開儲存庫中引入了指令碼注入漏洞,隨後被一個自主 AI 安全代理程式發現並利用。此事件凸顯了 AI 生成程式碼回歸(regressions)的關鍵風險,即 AI 助手為了簡化程式碼而移除安全的編碼模式,卻在無意中製造了安全漏洞。

The Vulnerability: AI-Driven Regression

在 2026 年 6 月,一個由 Copilot Autofix powered by AI (PR #1218) 共同撰寫的提交(commit)被合併到 snowflakedb/snowflake-connector-net 儲存庫中。該 AI 助手將原本安全的模式——使用 env: 變數和 jq 進行結構化數據解析——替換成了將問題標題直接進行字串插值(string interpolation)到 GitHub Actions 工作流 (jira_issue.yml) 的 Shell 指令碼中。

此變更將原本經過清理(sanitized)的輸入模式轉變為直接的指令碼注入向量。GitHub issue 標題中的單引號可能會導致跳出 echo '...' 區塊,並在 GitHub Actions 執行器(runner)上執行任意指令。

Exploitation and Autonomous Discovery

Wiz Research 的「Red Agent」,一個自主的 AI 驅動安全工具,在漏洞程式碼引入後的五天內就識別出了該漏洞並成功利用了它。

The Attack Vector

該漏洞是由 issues: opened 事件觸發的。由於工作流中存在一個有缺陷的 if: 條件(檢查 null 值:github.event.pull_request.user.login != 'whitesource-for-github-com[bot]'),導致安全閘門失效,允許任何未經身份驗證的使用者觸發該工作流。

Autonomous Payload Adjustment

在利用過程中,Red Agent 展示了先進的自主能力。當它最初嘗試使用標準註解字元 (#) 進行數據外洩時,因 Bash 語法錯誤 (EOF) 而失敗,該代理程式自主分析了錯誤並調整了其有效載荷(payload),改用 ; echo ' 來正確關閉 Shell 區塊。此調整讓代理程式成功外洩了 Base64 編碼的憑證。

Impact and Remediation

被外洩的 Token 具有 qa@snowflake.net 的身份,賦予了攻擊者讀取 Snowflake 內部 Jira 門戶網站的權限,包括工程、安全合規以及漏洞獎勵(bug bounty)追蹤專案。

Remediation Steps

Snowflake 在 2026 年 6 月 23 日對此披露做出回應,並採取了以下行動:

  • Immediate Patching: 漏洞工作流已修復(commit 1dc7766, PR #1402),以恢復安全的 env: + jq --arg 解析模式。
  • Credential Rotation: 被盜用的 Jira Token 已被撤銷並進行輪換。
  • Forensic Verification: 稽核日誌確認在漏洞暴露期間,沒有外部第三方存取了該端點;僅偵測到 Wiz 的測試 IP。

Technical Takeaways and Industry Insights

AI Code Generation and Review

AI 編碼工具是基於機率模式運作的,且通常缺乏為何選擇安全模式的歷史背景。此事件凸顯了 AI 生成的 PR 必須接受與人工撰寫程式碼同樣——甚至更嚴格——的安全審查。

"The bigger issue is that AI makes it much cheaper to introduce changes, while the cost of reviewing those changes hasn't gone down nearly as much. The bottleneck is moving from code generation to code verification."

The Danger of "LGTM" Culture

社群討論強調,危險不僅在於 AI,更在於人工審查的失敗。AI 加劇了「Looks Good To Me」(LGTM) 這種隨意核准 PR 的文化,因為大量低價值的技術債修復——這些是人工以前可能會忽略的——現在正被合併到程式碼庫中。

Guardrails for AI Agents

為了防止 AI 安全回歸,組織應實規實施防護措施,特別是阻擋 AI 代理程式將結構化數據解析器(如 jq)替換為 Shell 指令碼中的直接字串插值。此外,在 CI/CD 流水線中使用靜態分析工具(例如用於 GitHub Actions 的 zizmor)可以檢測出模板注入漏洞,並在合併前攔截它們。

Sources

相關