Cybersikkerhet
Copilot Autofix åpnet en skallinjeksjon i Snowflake CI/CD-pipeline

En sikkerhetsfiksering skrevet av GitHubs Copilot Autofix og flettet inn i et Snowflake‑repo den 18. juni 2026 fjernet et sanitisert inndatamønster og etterlot selskapets CI/CD‑pipeline åpen for kommandoinjeksjon, og fem dager senere fant en autonom AI‑forskningsagent hullet, utnyttet det og hentet fungerende Jira‑påloggingsinformasjon fra en GitHub Actions‑runner, Wiz Research avslørte 17. august 2026.
Sårbarheten lå i jira_issue.yml, et GitHub Actions‑arbeidsflyt i snowflakedb/snowflake-connector-net, det offentlige repositoriet for Snowflakes .NET‑datakobling. Arbeidsflyten ble utløst hver gang noen opprettet et GitHub‑problem og interpolerte problemets tittel (tekst som fullt ut kontrolleres av den som oppretter) direkte inn i et skallskript. Siden utløsningen var issues: opened, kunne enhver GitHub‑konto på internett nå den uten autentisering.
Wiz sin «Red Agent», et autonomt sikkerhetsforskningsverktøy som opererer gjennom Snowflakes HackerOne‑bug‑bounty‑program, flagget arbeidsflyten, bygde et fungerende utnyttelsesprogram og eksfiltrerte en Jira‑API‑token fra runnerens miljø. Snowflake patchet arbeidsflyten samme dag den mottok rapporten, 23. juni 2026, roterte legitimasjonen dagen etter, og fortalte Wiz at revisjonsloggene viste at ingen andre aktører berørte de eksponerte systemene i løpet av fem‑dagersvinduet.
«Autofix» fjernet sanitizeren
Commit‑en som introduserte det injiserbare mønsteret landet gjennom PR #1218, “SNOW-2069227: Update jira workflows”, flettet 18. juni 2026. Pull‑request‑historikken viser en menneskelig forfatter som har jobbet med Jira‑automatiseringen siden august 2025 — og, halvveis, et commit med medforfatter Copilot Autofix powered by AI, GitHub Advanced Security‑boten som genererer foreslåtte rettelser for kode‑skanningsvarsler.
AI‑forslaget endret hvordan arbeidsflyten håndterte problem‑tittelen. Den eksisterende koden sendte tittelen gjennom en env:-variabel og bygde JSON‑payloaden med jq --arg, et mønster som holder upålitelig tekst ute av skallet. Den foreslåtte erstatningen droppet dette til fordel for direkte strengutvidelse:
“ run: | TITLE=$(echo '${{ github.event.issue.title }}' | sed 's/"/\"/g' | sed "s/'/\'/g") “
Sed‑escaping‑en kjøres etter at GitHubs mal‑motor allerede har erstattet tittelen i skriptet. Et enkelt anførselstegn i tittelen bryter ut av echo '...'-innpakningen, og alt etter det kjøres som skall. GitHubs egen dokumentasjon for Copilot Autofix beskriver funksjonen som å generere «en enkelt foreslått rettelse for et varsel, som du selv gjennomgår og anvender» — gjennomgangsstegnet er hvor denne kom gjennom.
Arbeidsflyten hadde også en vakthensyn som så ut til å begrense hvem som kunne utløse den:
“ if: (github.event_name == 'issues' && github.event.pull_request.user.login != 'whitesource-for-github-com[bot]') “
Ved issue‑hendelser er github.event.pull_request alltid null, så sammenligningen evalueres alltid som sann. Alle GitHub‑brukere kom gjennom porten.
En agent på hver side av utnyttelsen
Red Agents første eksfiltrasjonsforsøk mislyktes. Payloaden brukte et #‑kommentar‑tegn for å svelge resten av den injiserte linjen, men kommentaren konsumert også den avsluttende parentesen i TITLE=$(...), og runneren returnerte en Bash‑syntaksfeil i stedet for å kjøre. Ifølge Wiz sin rapport analyserte agenten feilen, omskrev payloaden for å lukke skallblokken med ; echo ', og prøvde igjen.
Den fungerende payloaden, levert som en issue‑tittel, base64‑kodet runnerens JIRA_API_TOKEN, JIRA_USER_EMAIL og JIRA_BASE_URL-miljøvariabler og sendte dem til en out‑of‑band‑lytter via curl. Tilbakeringingen kom fra en Azure‑hostet GitHub Actions‑runner innen sekunder.
Den gjenopprettede tokenen autentiserte som qa@snowflake.net mot snowflakecomputing.atlassian.net, med lesetilgang på tvers av Snowflakes ingeniør‑, sikkerhets‑compliance‑ og bug‑bounty‑sporingsprosjekter.
Snowflakes utbedring, flettet inn i PR #1402 23. juni 2026, gjenopprettet den sikre env:-variabelen og jq --arg-parsing‑mønsteret. Jira‑tokenen ble tilbakekalt og rotert 24. juni 2026. Wiz sa at de sikkert slettet alle data som ble aksessert under deres proof‑of‑concept‑testing.
«Snowflake setter pris på Wiz sin ansvarlige rapportering og samarbeid rundt disse funnene gjennom vårt sårbarhets‑avslørings‑ og bug‑bounty‑program, HackerOne», sa selskapet i en uttalelse publisert sammen med Wiz‑rapporten. «Avsløringen ble mottatt 23. juni 2026, og den ble umiddelbart undersøkt og utbedret, og vår undersøkelse fant ingen tegn på uautorisert tilgang.»
Hva fem‑dagersvinduet viser
Avsløringen havner midt i et dokumentert mønster: AI‑assisterte endringer som går gjennom gjennomgang raskere enn sikkerhetsantakelsene rundt dem. Snowflakes egne revisjonslogger er det som gjør denne hendelsen forståelig: de lar selskapet uttale, og Wiz bekrefte, at eksponeringsvinduet ikke førte til tredjeparts‑tilgang. Snowflakes analyse av revisjonsloggene bekreftet at ingen eksterne tredjeparts aktører nådde endepunktet i løpet av fem‑dagersvinduet.
Tidslinjen komprimerer også en sekvens som industrien har behandlet som hypotetisk. En kodeassistent fjernet et defensivt mønster som var implementert spesielt for å forhindre skallinjeksjon, fordi assistenten ikke hadde noen registrering av hvorfor mønsteret eksisterte. En offensiv agent fant deretter resultatet og utnyttet det i løpet av dager, selvkorrigerende sin utnyttelse mot levende feilmeldinger. Utnyttelsessiden kjørte uten et menneske ved tastaturet; på kode‑siden genererte AI‑en endringen, men et menneske anvendte forslaget og flettet det — akkurat det gjennomgangsstegnet som feilet.
Wiz sin rapport anbefaler at AI‑genererte pull‑requests går gjennom samme statiske analyse som menneskelig kode, at team forkorter legitimasjons‑levetider for å matche automatiserte oppdagelseshastigheter, og at sikkerhetsmekanismer hindrer agenter fra å erstatte strukturerte parser‑e med direkte strenginterpolasjon. Check Point flyttet prompt‑inspeksjon for AI‑trafikk inn i bedrifts‑brannmurer tidligere denne sommeren, og Unite.AI har dekket agent‑sandbox‑unnslipp og agent‑systemer som når reelle produksjonsmål etter hvert som den offensive siden modnes. Snowflake‑hendelsen er den samme historien fortalt fra innsiden av en CI‑pipeline: sårbarheten var aktiv i fem dager, og den eneste grunnen til at den leses som en casestudie i stedet for en brudd‑varsling er hvilken agent som kom først.












