Skip to content

Security Reports disagree4 publishers 3 min read Published Updated

A Copilot Autofix Wrote the Bug, and an Autonomous Agent Cashed It for Snowflake's Jira

Wiz says its Red Agent found and exploited a GitHub Actions injection that an AI "autofix" commit introduced five days earlier, reaching Snowflake's internal Jira with no human in the loop.

The Watch · Security desk

Send a correction

What happened

  • Wiz Red Agent, an autonomous AI-powered security research tool, independently discovered and exploited a GitHub Actions vulnerability in a Snowflake public repository, validated access to sensitive data in Snowflake's internal Jira, and assessed the blast radius without human intervention.
  • The research was conducted through Snowflake's HackerOne vulnerability disclosure program; Wiz Red Agent identified a script injection vulnerability in snowflakedb/snowflake-connector-net that allowed an unauthenticated user to execute arbitrary commands in a GitHub Actions runner by opening a GitHub issue with a specially crafted title.
  • The vulnerability was introduced on June 18, 2026, five days before discovery, via commit 4a1b8ce in PR #1218, titled "SNOW-2069227: Update jira workflows".
  • The introducing commit was co-authored by "Copilot Autofix powered by AI".
  • The commit removed the repository's existing safe pattern, which passed the issue title through an env: variable and built the JSON payload with jq, and replaced it with direct ${{ github.event.issue.title }} interpolation.

Why it matters

Wiz says its autonomous "Red Agent" found and exploited a script injection vulnerability in the public repository snowflakedb/snowflake-connector-net, used it to steal a Jira credential from a GitHub Actions runner, and confirmed read access to Snowflake's internal Jira, all without human intervention [16][4][8]. The vulnerability had been introduced five days earlier, on June 18, 2026, by commit 4a1b8ce in PR #1218, co-authored by "Copilot Autofix powered by AI" [5][7].

The detail that matters is what the autofix did. According to Wiz, the commit removed the repository's existing safe pattern, which passed the issue title through an `env:` variable and built the JSON payload with jq, and replaced it with direct interpolation of `${{ github.event.issue.title }}` into a shell script [15]. The replacement looked defensive: it piped the title through two `sed` calls to escape quotes [1]. But GitHub expands the template before the shell ever runs, so the escaping happens too late, and a single quote in an issue title breaks out of `echo '...'` [2].

The workflow triggered on `issues: opened`, meaning any GitHub user could fire it by filing an issue [3]. There was an `if:` condition that read like a guard, but on the issues event `github.event.pull_request` is null, so the check reduced to `(null != 'whitesource-for-github-com[bot]')` and was always true [6]. Two independent controls, both cosmetic.

The exploitation account is worth reading for what it says about agent persistence. Red Agent's first payload used `#` to comment out the rest of the line, which produced a bash syntax error because the comment also consumed the closing parenthesis of `TITLE=$(...)` [17]. Rather than fail, Wiz says the agent analysed the error, switched to `; echo '` to close the shell block cleanly, and got its callback [18]. The listener received base64-encoded credentials from a GitHub Actions runner at Azure IP 20.106.182.197 within seconds [9]. The token authenticated as qa@snowflake.net to snowflakecomputing.atlassian.net with read access across Snowflake's engineering, security compliance, and bug bounty tracking projects [10].

The research was done under Snowflake's HackerOne program [4]. Wiz disclosed on June 23, 2026; Snowflake patched the same day in commit 1dc7766, PR #1402, restoring the `env:` variable and `jq --arg` pattern the autofix had deleted [8][11]. The Jira token was revoked and rotated, audit log analysis confirmed Wiz was the sole actor during the exposure window, and Wiz says the data it touched was deleted [8][12][13].

Read the sequence again: a machine-written remediation created the injection, and a machine-driven attacker monetised it inside a working week [14]. Most organisations route AI-generated features through code review and treat AI-generated fixes as janitorial. That asymmetry is the finding. The second lesson is cheaper to act on: a workflow that runs on `issues: opened` is a workflow that unauthenticated strangers can invoke, and whatever secrets it can read define the blast radius [3][10]. A long-lived Jira token that spans engineering, compliance, and bug bounty tracking has no business sitting in a runner reachable from an issue title.

What to watch: whether Copilot Autofix suggestions get flagged as security-relevant diffs requiring human sign-off, and whether teams start auditing which secrets are exposed to workflows with public triggers rather than only auditing the code those workflows build.

Clarity's read

What the record supports and how the coverage leans. The claims behind it follow.

Reality

Evidence58
Adoption
Not scored
Hype gap+35
Incentives70
Confidence62

Perspective Coverage

4 publishers
Builder
Builder 43%
Operator
Operator 42%
Investor
Investor 15%
Why these scores

Claim ledger

Ranked by verification strength, evidence, and original report placement.

  1. [1]

    The vulnerable workflow step was: run: | TITLE=$(echo '${{ github.event.issue.title }}' | sed 's/"/\\"/g' | sed "s/'/\\\\'/g")

    Reported SupportedView cited source
  2. [2]

    The sed escaping runs after GitHub's template expansion, so a single quote in the issue title breaks out of echo '...' and allows arbitrary command execution.

    Reported SupportedView cited source
  3. [3]

    The workflow triggered on issues: opened, meaning any GitHub user could fire it by opening an issue.

    Reported SupportedView cited source
  4. [4]

    The research was conducted through Snowflake's HackerOne vulnerability disclosure program; Wiz Red Agent identified a script injection vulnerability in snowflakedb/snowflake-connector-net that allowed an unauthenticated user to execute arbitrary commands in a GitHub Actions runner by opening a GitHub issue with a specially crafted title.

    Reported SupportedView cited source
  5. [5]

    The vulnerability was introduced on June 18, 2026, five days before discovery, via commit 4a1b8ce in PR #1218, titled "SNOW-2069227: Update jira workflows".

    Reported SupportedView cited source
  6. [6]

    The workflow had an if: condition that appeared protective, but on the issues event github.event.pull_request is null, so the condition reduced to (null != 'whitesource-for-github-com[bot]'), always true, and every GitHub user passed the gate.

    Reported SupportedView cited source
  7. [7]

    The introducing commit was co-authored by "Copilot Autofix powered by AI".

    Reported SupportedView cited source
  8. [8]

    Wiz disclosed responsibly on June 23, 2026; Snowflake remediated the vulnerability the same day, rotated the affected credential, and verified via detailed audit logs that Wiz was the sole actor during the exposure window.

    Reported SupportedView cited source
  9. [9]

    Within seconds, Wiz's listener received a callback from a GitHub Actions runner at Azure IP 20.106.182.197 containing base64-encoded credentials.

    Reported SupportedView cited source
  10. [10]

    The exfiltrated token authenticated as qa@snowflake.net to snowflakecomputing.atlassian.net, granting read access across Snowflake's engineering, security compliance, and bug bounty tracking projects.

    Reported SupportedView cited source
  11. [11]

    Snowflake patched the workflow on June 23, 2026 in commit 1dc7766 (PR #1402), fully restoring the safe env: variable and jq --arg parsing pattern.

    Reported SupportedView cited source
  12. [12]

    The Jira token in question was revoked and rotated.

    Reported SupportedView cited source
  13. [13]

    Wiz confirmed that all data accessed during proof-of-concept testing was securely deleted.

    Reported SupportedView cited source
  14. [14]

    The injectable pattern existed for five days, from its introduction on June 18, 2026 to remediation on June 23, 2026.

    Derived Supported
  15. [15]

    The commit removed the repository's existing safe pattern, which passed the issue title through an env: variable and built the JSON payload with jq, and replaced it with direct ${{ github.event.issue.title }} interpolation.

    Reported ContestedView cited source
  16. [16]

    Wiz Red Agent, an autonomous AI-powered security research tool, independently discovered and exploited a GitHub Actions vulnerability in a Snowflake public repository, validated access to sensitive data in Snowflake's internal Jira, and assessed the blast radius without human intervention.

    Reported Insufficient Source: WizView cited source
  17. [17]

    Red Agent's first exfiltration attempt used the comment character # and produced a bash unexpected EOF syntax error because the comment consumed the closing parenthesis of TITLE=$(...).

    Reported InsufficientView cited source
  18. [18]

    Rather than stopping or failing, Red Agent autonomously analysed the syntax execution error, adjusted its payload to use ; echo ' to properly close the shell block, and successfully received the out-of-band callback.

    Reported Insufficient Source: WizView cited source

Sources

4 independent publishers whose own reporting we read for this story.

  1. infosecurity-magazine.com

    1 article · August 18, 2026

    Wiz AI Agent Finds Critical Snowflake GitHub Repo Flaw Advanced Security Missed
  2. scworld.com

    1 article · August 18, 2026

    Wiz agent finds Snowflake repo flaw in code co-authored by GitHub Copilot Autofix
  3. thehackernews.com

    2 articles · August 18, 2026

    Snowflake GitHub Actions Flaw Lets Crafted Issues Trigger Command Injection
  4. wiz.io

    1 article · August 17, 2026

    Wiz Red Agent Finds Its Way Into Snowflake’s Internal Jira Due to an AI-Generated GitHub Copilot “Autofix”

Topics and entities

Topics

Entities