MagnoSec
Interfaz de GitHub Actions con flujo de CI/CD y alerta de seguridad sobre ataques pwn request en pull_request_target

MagnoSec Blog

GitHub Refuerza actions/checkout Contra Ataques Pwn Request: Lo que Todo Equipo DevOps Debe Saber

Por Equipo MagnoSec4 min de lectura

El contexto: qué ha pasado y por qué importa

GitHub Actions ejecuta millones de pipelines CI/CD cada día. Cada push, cada pull request, cada release dispara flujos de trabajo que compilan código, ejecutan tests, despliegan infraestructura y publican artefactos. El trigger pull_request_target —diseñado para escenarios donde un workflow necesita acceso a secretos del repositorio base incluso cuando se ejecuta desde un fork externo— es una de las funcionalidades más potentes y, como ha demostrado la historia reciente de incidentes de seguridad, una de las más peligrosas. La actualización de actions/checkout anunciada por GitHub bloquea patrones de ataque comunes que explotan este trigger para ejecutar código arbitrario en el contexto privilegiado del repositorio objetivo. Si tu equipo usa GitHub Actions con pull_request_target, esto te afecta directamente.

Antecedentes y evolución de la amenaza

Un ataque pwn request funciona así: un atacante hace un fork de un repositorio público, modifica el código del workflow o del proyecto para incluir comandos maliciosos, y abre un pull request. Si el repositorio original tiene un workflow configurado con pull_request_target que hace checkout del código del fork sin las precauciones adecuadas, el código malicioso del atacante se ejecuta en el contexto del repositorio original —con acceso a sus secretos, tokens de despliegue y permisos de escritura—. El resultado puede ser desde el robo de secretos del repositorio (claves de API, tokens de npm, credenciales cloud) hasta la inyección de código malicioso en los artefactos de build que se despliegan a producción. Es un ataque de supply chain en miniatura que se ejecuta en el propio pipeline de CI/CD de la víctima.

Así funciona: los detalles técnicos

La actualización de actions/checkout (v4.2.0+) introduce varias mitigaciones. La más importante es el bloqueo automático de referencias de git sospechosas que apunten a commits no presentes en el historial del repositorio base. También introduce validación adicional de los metadatos del evento pull_request para detectar manipulaciones en los datos del fork. Y añade un nuevo parámetro de configuración, ref-filter, que permite a los desarrolladores especificar exactamente qué referencias aceptan para checkout desde PRs externos. En conjunto, estas medidas hacen que sea significativamente más difícil para un atacante inyectar código malicioso a través de un PR desde un fork, aunque no eliminan el riesgo por completo —la seguridad de pull_request_target sigue dependiendo de que los desarrolladores entiendan lo que están haciendo cuando lo configuran.

Impacto real en organizaciones y empresas

El impacto en equipos DevOps es inmediato. Miles de repositorios tienen workflows con pull_request_target que hacen checkout del código del PR usando actions/checkout. Muchos de esos workflows fueron configurados siguiendo tutoriales o plantillas que no explicaban adecuadamente el riesgo. La actualización a actions/checkout v4.2.0+ no es automática en la mayoría de los casos —los workflows suelen referenciar versiones específicas como @v4 o @v3— y requiere que los equipos actualicen manualmente sus referencias. Peor aún, la actualización puede romper CI/CD si el workflow dependía de comportamientos que ahora están bloqueados. La migración requiere testing, no es un simple cambio de número de versión.

Cómo MagnoSec aborda esta amenaza en sus auditorías

En MagnoSec, las auditorías de código fuente y los ejercicios de seguridad DevSecOps incluyen la revisión de pipelines CI/CD como vector de ataque. Los workflows de GitHub Actions, GitLab CI, Jenkins y Bitbucket Pipelines son código —y como todo código, contiene vulnerabilidades—. Un pipeline mal configurado es una puerta trasera automatizada que se activa con cada PR. Revisamos las configuraciones de triggers, el uso de secretos, los permisos de los tokens de ejecución, y especialmente el uso de pull_request_target y workflow_run en GitHub Actions. La mayoría de los equipos DevOps con los que trabajamos no eran conscientes del riesgo hasta que se lo mostramos en un entorno controlado.

Qué puedes hacer ahora: acciones concretas

La mitigación para equipos que usan GitHub Actions es triple. Primero: actualizar actions/checkout a v4.2.0+ en todos los workflows que usen pull_request_target. Segundo: revisar todos los workflows que utilicen este trigger y verificar que no ejecutan código del PR sin las comprobaciones adecuadas. El patrón seguro es separar el workflow en dos: uno que se ejecuta en el contexto del fork (sin acceso a secretos) para build y test, y otro que se ejecuta en el contexto del repositorio base (con acceso a secretos) solo después de que un mantenedor haya revisado y aprobado explícitamente el PR. Tercero: aplicar el principio de mínimo privilegio a los tokens GITHUB_TOKEN, limitando los permisos de cada workflow a exactamente lo que necesita y nada más. La seguridad de CI/CD no es opcional cuando el pipeline tiene las llaves del reino.

Temas tratados

GitHub Actions · pwn request · CI/CD security · pull_request_target · DevOps security · supply chain · pipeline security

¿Quieres saber si tu empresa tiene estas vulnerabilidades?

Auditamos la seguridad de empresas de toda España con alcance cerrado por escrito, informe técnico y ejecutivo, y retest de las correcciones. Presupuesto en 24 horas y primera consultoría sin coste. Si no sabes por dónde empezar, haz el test de seguridad de 15 preguntas.

¿Quieres más información?