Un cambio fusionado el 18 de junio de 2026 en el repositorio público snowflakedb/snowflake connector net interpoló directamente el título de un issue dentro de un comando de shell. El fallo afectaba al flujo de trabajo de GitHub Actions, no al código del conector .NET publicado para los clientes.
Respuesta de investigación

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
El incidente de Snowflake fue una vulnerabilidad de inyección de comandos en un flujo de trabajo de GitHub Actions del repositorio público snowflakedb/snowflake-connector-net. No era un fallo del conector .NET que la compañía distribuye a sus clientes. Un cambio fusionado el 18 de junio de 2026 colocó el título controlado por el usuario de un issue dentro de un comando de shell. Cinco días más tarde, el agente autónomo Red Agent, de Wiz, detectó la debilidad y la utilizó en un ejercicio autorizado del programa de HackerOne para extraer credenciales del Jira interno de Snowflake.
El código vulnerable estaba en .github/workflows/jira_issue.yml, un flujo que se ejecutaba cada vez que se abría un issue en GitHub. El pull request n.º 1218, titulado “SNOW-2069227: Update Jira workflows”, sustituyó un patrón más seguro —pasar el título mediante una variable de entorno y construir el JSON con jq— por la interpolación directa de ${{ github.event.issue.title }}run:.
La diferencia era crítica. GitHub expande esa expresión antes de que el shell ejecute el comando. Por tanto, un título que incluyera una comilla simple podía cerrar la cadena prevista y añadir comandos elegidos por el atacante. El intento de limpiar el valor después mediante sed no podía deshacer una interpretación de shell que ya había ocurrido.
El disparador issues: opened
El commit atribuyó a “Copilot Autofix powered by AI” la condición de coautor, y la revisión asistida por IA no señaló el problema. Sin embargo, la evidencia disponible no demuestra si Copilot generó el cambio inseguro o si simplemente participó en él y no detectó la inyección. La conclusión más precisa es que Copilot estuvo asociado al cambio y no identificó la vulnerabilidad; no que esté probada la autoría completa del modelo.
Wiz Red Agent analizó la organización pública de Snowflake en GitHub en busca de patrones de riesgo en sistemas de integración y entrega continuas, conocidos como CI/CD. El agente identificó que el flujo utilizaba datos no confiables dentro de un bloque run: y dedujo que un título de issue cuidadosamente diseñado podía provocar la ejecución arbitraria de comandos en el ejecutor administrado por GitHub Actions.
El 23 de junio, cinco días después de la fusión del cambio vulnerable, el agente abrió un issue manipulado como parte del programa de divulgación de vulnerabilidades de Snowflake en HackerOne. El título escapó de la cadena de shell y provocó que el flujo enviara las credenciales de Jira a un callback externo controlado para la prueba de concepto autorizada.
No se trató de una intrusión descontrolada, sino de una prueba de seguridad aprobada dentro de un programa de vulnerabilidades. El hallazgo técnico, no obstante, era real: la creación pública de un issue podía alcanzar un paso que manejaba credenciales internas y convertir una acción aparentemente rutinaria en ejecución de comandos.
El flujo comprometido tenía acceso a la configuración del Jira interno de Snowflake, incluida la URL, el correo del usuario y el token de API. El token recuperado estaba asociado a qa@snowflake.net; Wiz lo utilizó para autenticarse en el portal interno y evaluar el alcance potencial de la exposición.
Los informes describieron acceso de lectura a proyectos de Jira relacionados con ingeniería, cumplimiento de seguridad y actividad del programa de recompensas por errores. La evidencia proporcionada no establece el conjunto completo de permisos del token ni ofrece un inventario definitivo de todos los registros que podían consultarse. La conclusión respaldada por los datos es que permitía acceder a contenido interno sensible de Jira, no que otorgara acceso irrestricto a los sistemas de Snowflake.
El activo vulnerable era la automatización CI/CD del repositorio. No se informó de ninguna versión afectada del Snowflake Connector for .NET, ya que el problema estaba en el flujo de GitHub Actions y no en el código de ejecución del conector.
Wiz informó del problema el 23 de junio. Snowflake corrigió el flujo ese mismo día y rotó la credencial de Jira expuesta al día siguiente.
Después, Snowflake revisó sus registros de auditoría y concluyó que Wiz había sido el único actor durante el periodo de exposición. Wiz también afirmó que eliminó de forma segura los datos obtenidos durante la prueba de concepto.
No se informó de acceso no autorizado por parte de terceros, no se asignó un identificador CVE y no se identificó ninguna versión afectada del conector. Estos límites describen el impacto confirmado, pero no hacen seguro el diseño original: un título público de issue nunca debería haberse convertido directamente en parte de un comando de shell en un flujo que manejaba credenciales internas.
El caso deja una advertencia que va más allá de Snowflake y Copilot. Los títulos de issues y pull requests, los nombres de ramas, los comentarios y cualquier otra expresión de GitHub deben tratarse como entradas potencialmente hostiles cuando llegan a un comando de shell.
Entre las prácticas más seguras están:
run:.jq para construir JSON, en vez de ensamblar cadenas de shell.El episodio resume un nuevo reto de seguridad: un sistema de IA para programar puede pasar por alto un cambio peligroso en CI/CD, mientras un agente autónomo de seguridad ofensiva puede encontrarlo y validarlo pocos días después. La automatización puede acelerar tanto la explotación como la corrección, pero no sustituye una revisión independiente.
Studio Global AI
Esta página incluye una respuesta respaldada por fuentes que puede continuar dentro de Studio Global.
Un cambio fusionado el 18 de junio de 2026 en el repositorio público snowflakedb/snowflake connector net interpoló directamente el título de un issue dentro de un comando de shell.
Un cambio fusionado el 18 de junio de 2026 en el repositorio público snowflakedb/snowflake connector net interpoló directamente el título de un issue dentro de un comando de shell. El fallo afectaba al flujo de trabajo de GitHub Actions, no al código del conector .NET publicado para los clientes.
Cinco días después, Wiz Red Agent creó un issue manipulado durante una prueba autorizada de HackerOne y extrajo credenciales del Jira interno de Snowflake.