2026 年 6 月 18 日,Snowflake 公共仓库 snowflakedb/snowflake connector net 的一次变更,将 Issue 标题直接插入 GitHub Actions 的 Shell 命令。 漏洞影响的是仓库的 CI/CD 自动化,而不是已发布的 .NET 连接器。Wiz 取回的令牌可用于验证对 Snowflake 内部 Jira 敏感项目的读取访问;Snowflake 的审计则未发现未经授权的第三方访问。
研究答案

Create a landscape editorial hero image for this Studio Global article: How did GitHub’s Copilot Autofix AI introduce a shell-injection vulnerability into Snowflake’s public .NET connector repository, how did Wiz. Article summary: The incident was a GitHub Actions workflow injection in Snowflake’s public `snowflake-connector-net` repository, not a flaw in the .NET connector’s shipped runtime code. A June 18, 2026 change in PR #1218 made an issue t. Topic tags: general, general web, user generated. Style: premium digital editorial illustration, source-backed research mood, clean composition, high detail, modern web publication hero. Use reference image context only for broad subject, composition, and topical grounding; do not copy the exact image. Avoid: logos, brand marks, copyrighted characters, real person likenesses, fake screenshots, UI text, readable text, watermarks, charts with fa
这起事件的核心并不是 Snowflake .NET 连接器本身存在漏洞,而是其公开 GitHub 仓库中的一条 GitHub Actions 工作流存在注入缺陷。2026 年 6 月 18 日合并的一项变更,把攻击者可控的 GitHub Issue 标题放进了 Shell 命令;5 天后,Wiz 的自主“红队智能体”(Red Agent)在一次获授权的 HackerOne 安全测试中发现并利用了这一问题,提取出 Snowflake 内部 Jira 的访问凭据。
问题位于 .github/workflows/jira_issue.yml。这条工作流会在公开仓库创建 Issue 时,由 issues: opened
PR #1218 的标题是“SNOW-2069227: Update Jira workflows”。它用直接插值的方式替换了原本更安全的处理逻辑:此前,Issue 标题会先通过环境变量传递,再使用 jq 构造 JSON;变更后,代码把 ${{ github.event.issue.title }}run: Shell 代码块。
这一区别非常关键。GitHub 会在 Shell 执行命令前,先展开该表达式。如果恶意 Issue 标题包含单引号,就可能结束原本的字符串,并追加攻击者自定义的 Shell 命令。后续再用 sed 清理内容,并不能撤销此前已经发生的 Shell 解析。
issues: opened
提交记录将“Copilot Autofix powered by AI”列为共同作者,其 AI 辅助审查也没有标记出这个问题。不过,现有证据并不能证明 Copilot 是直接生成了这段不安全代码,还是参与了由人工编写的变更并未发现注入风险。因此,更准确的说法是:Copilot 与这次变更有关联,但未能识别出其中的命令注入问题,而不能断言该模型已被证实是漏洞代码的作者。
Wiz 的 Red Agent 会扫描 Snowflake 的公开 GitHub 组织,寻找高风险的 CI/CD 配置模式。它识别出这条 Jira 工作流将不可信的 Issue 数据放入了 Shell 的 run: 代码块,并推断出:只要创建一个经过构造的公开 Issue,就可能在 GitHub 托管的 Actions 运行器上执行任意命令。
6 月 23 日,也就是漏洞变更合并 5 天后,Red Agent 通过 Snowflake 的 HackerOne 漏洞披露计划创建了一个特制 Issue。该 Issue 标题跳出了原有的 Shell 字符串,并让工作流将 Jira 凭据发送到用于本次授权概念验证的带外回调地址。
这不是一次未经授权的入侵,而是经批准的安全测试。不过,测试所揭示的安全事实仍然成立:一个公开 Issue 的标题可以触达处理内部凭据的工作流步骤,并将普通的 Issue 创建行为升级为命令执行。
被利用的工作流可以读取 Snowflake 内部 Jira 的相关配置,包括 Jira 地址、用户邮箱和 API 令牌。Wiz 取回的令牌与 qa@snowflake.net 账户关联,并使用该令牌登录内部 Jira 门户,以评估潜在影响范围。
相关报道显示,该访问涉及工程、安全合规和漏洞赏金等 Jira 项目的读取权限。但现有证据没有完整说明令牌的全部权限,也没有列出所有可能访问的记录。因此,最稳妥的结论是:该令牌足以访问包含敏感内部内容的 Jira,而不是可以据此断言攻击者获得了对 Snowflake 系统的无限制访问。
受影响的资产是公开仓库中的 CI/CD 自动化,而不是连接器的运行时代码。由于缺陷存在于 GitHub Actions 工作流中,没有已发布的 Snowflake Connector for .NET 版本被报告为受影响。
Wiz 于 6 月 23 日报告了该问题。Snowflake 在当天修复了工作流,并于次日轮换暴露的 Jira 凭据。
随后,Snowflake 审查了审计日志,认定在暴露窗口内只有 Wiz 进行了相关操作。Wiz 也表示,已经安全删除其访问的概念验证数据。
目前没有报告未经授权的第三方访问,也没有报告分配 CVE 编号或存在受影响的连接器发行版。这些信息界定了已确认的影响范围,但并不意味着原先的工作流设计是安全的:处理内部凭据的工作流,不应让公开 Issue 标题直接成为 Shell 命令的一部分。
这起事件的教训并不局限于 Snowflake 或 Copilot。只要 GitHub 表达式中的 Issue 标题、拉取请求标题、分支名称或评论内容会进入 Shell 命令,就必须把它们视为潜在的恶意输入。
更安全的工作流设计包括:
run: 脚本。jq 等结构化工具构造 JSON,避免手工拼接 Shell 字符串。这起事件也展现了一个正在形成的安全现实:一个 AI 辅助编码系统可能漏掉危险的 CI/CD 变更,而另一个自主攻击智能体则能在数天内发现并验证它。自动化既能加快修复,也能加快利用;但它无法替代独立的安全审查。
Studio Global AI
此页面包含一个有来源支持的答案,您可以在 Studio Global 内继续。
2026 年 6 月 18 日,Snowflake 公共仓库 snowflakedb/snowflake connector net 的一次变更,将 Issue 标题直接插入 GitHub Actions 的 Shell 命令。
2026 年 6 月 18 日,Snowflake 公共仓库 snowflakedb/snowflake connector net 的一次变更,将 Issue 标题直接插入 GitHub Actions 的 Shell 命令。 漏洞影响的是仓库的 CI/CD 自动化,而不是已发布的 .NET 连接器。Wiz 取回的令牌可用于验证对 Snowflake 内部 Jira 敏感项目的读取访问;Snowflake 的审计则未发现未经授权的第三方访问。
提交记录将“Copilot Autofix powered by AI”列为共同作者,但现有证据无法确定 Copilot 是生成了不安全变更,还是仅参与审查并未发现注入风险。