Snowflake's GitHub Actions Injection: How an AI Red-Team Agent found What Copilot Missed

Cómo el agente autónomo AI de Wiz encontró un error de inyección de GitHub Actions en un repositorio público de Snowflake que la revisión con ayuda de Copilot había perdido.

Snowflake's GitHub Actions Injection: How an AI Red-Team Agent found What Copilot Missed

Los investigadores de Wiz utilizaron un agente autónomo de seguridad AI para descubrir una vulnerabilidad de inyección de comandos en un repositorio público de Snowflake GitHub apenas cinco días después del envío del código vulnerable — un fallo que ya había pasado revisión automatizada de GitHub Copilot.

Inteligencia de Vulnerabilidades: Repositorio: snowflakedb/snowflake-connector-net (public) Tipo de vulnerabilidad: GitHub Actions workflow command injection Severidad: Critical (unauthenticated, pre-auth command execution in CI runner) Situación: Pasó el mismo día que la divulgación Descubrido por: Wiz Red Agent (autonomous AI security research tool)

Lo que sucedió

El agente autónomo AI de Wiz identificó una vulnerabilidad de flujo de trabajo de GitHub Actions en jira issue.yml, un flujo de trabajo en el repositorio público de copos de nieve de Snowflake-connector-net diseñado para crear automáticamente entradas de Jira cuando alguien abrió un problema de GitHub. Una solicitud de tirada fusionada el 18 de junio de 2026 había reemplazado una implementación más segura —una que pasó valores a través de variables ambientales y jq— con la interpolación directa del título de edición no confiable en un script de shell. El agente de Wiz encontró el fallo cinco días después y lo reportó a Snowflake a través de HackerOne el 23 de junio de 2026; Snowflake fusionó una solución ese mismo día.

¿Quién está afectado?

La vulnerabilidad vivía en un camino de código público y no autenticado: cualquier persona capaz de abrir un problema de GitHub en el repositorio, que, siendo público, significa esencialmente cualquier persona con una cuenta de GitHub, podría haber creado un título de edición que ejecute comandos arbitrarios dentro del corredor de CI del flujo de trabajo. El acceso de ese corredor a secretos de repositorio y herramientas internas lo hizo un riesgo significativo de cadena de suministro, no sólo una molestia.

Causa técnica de raíz

GitHub Actions workflows that interpolate untrusted input (like an issue title) directly into run steps via ${{ } Syntax expression syntax are a well-known injection class — GitHub's own documentation warns against it — but the pattern still recurs because it's easy to introduce during a routine refactor, as happened here when a safer environment-variable-based implementation was swapped out. Notablemente, la solicitud de atracción vulnerable había aprobado una revisión que incluía GitHub Copilot, subrayando que la revisión del código AI no es un sustituto de herramientas de seguridad dedicadas.

Remediación

Audit GitHub Actions workflows for any run step that interpolates issue or PR titles and other user-controlled context values directly into shell commands; pass such values through environment variables instead and reference them safe inside the script. Treat GitHub issue titles, PR titles, and other user-controlled workflow inputs as untrusted by default. Las organizaciones que ejecutan repositorios públicos con automatización activada por problemas o PR deben probar específicamente para esta clase de inyección en lugar de confiar exclusivamente en la revisión de códigos con ayuda de AI para atraparlo.

Relacionados

Esto es parte de Redondeo de seguridad semanal de ColibriSec para la semana del 20 de agosto de 2026.