La popular GitHub Action tj-actions/changed-files ha sido comprometida

La popular GitHub Action tj-actions/changed-files ha sido comprometida con una carga útil (payload) maliciosa que parece intentar exportar los secretos del repositorio, con el potencial de impactar a miles de pipelines de CI en GitHub. A partir del 14 de marzo de 2025, se considera que todas las versiones de esta action están comprometidas. Este no es el primer problema de seguridad asociado a esta action; ya se había reportado una vulnerabilidad previa (CVE-2023-51664).

La action es ampliamente utilizada en flujos de trabajo CI/CD para detectar qué archivos han sido modificados entre commits, lo que la convierte en un objetivo de alto valor para atacantes interesados en extraer información sensible de los repositorios.

Fecha2025-03-16 01:30:55
Información
  • Explotación activa

Resumen técnico

La vulneración implica una carga útil maliciosa inyectada en el código de la action en el commit 0e58ed8. Cuando la action comprometida se ejecuta en un flujo de trabajo, intenta exfiltrar los secretos escribiéndolos en stdout, lo cual es particularmente peligroso en repositorios con registros (logs) de CI runner públicos.

El ataque aprovecha la amplia confianza depositada en esta action y los extensos permisos que normalmente se otorgan a los flujos de trabajo de GitHub Actions. Dado que en la mayoría de las implementaciones la action se referencia mediante etiquetas (tags) en lugar de mediante el SHA del commit, los usuarios quedan expuestos automáticamente a la versión comprometida tan pronto como la etiqueta se actualiza, sin necesidad de modificar los archivos del flujo de trabajo.

La carga útil apunta específicamente a las variables de entorno de CI y a los secretos, que a menudo contienen tokens de autenticación sensibles, claves API y otras credenciales que podrían otorgar a un atacante acceso a diversos sistemas y servicios.

Recomendaciones

Acciones inmediatas:

Identificar los repositorios comprometidos mediante:

  • Búsqueda en su código de la presencia de referencias a tj-actions
  • Uso de la consulta de búsqueda de GitHub: https://github.com/search?q=org%3A<YOURORG>+uses%3A+tj-actions%2F&type=code

Eliminar inmediatamente la action comprometida de:

  • Todas las ramas (no solo la principal)
  • Todos los archivos de flujo de trabajo (.github/workflows/*.yml)

Implementar medidas preventivas:

  • Configurar los ajustes de la organización de GitHub para permitir solo acciones seguras (lista de permitidos)
  • Eliminar tj-actions/changed-files de la lista de acciones permitidas
  • Anclar (pin) las GitHub Actions restantes a SHA de commit específicos en lugar de etiquetas de versión

Utilizar alternativas:

  • Cambiar a una alternativa más segura de GitHub Action
  • Considerar la posibilidad de implementar lógica inline para la detección de cambios en archivos
  • Para los usuarios de la plataforma Semgrep AppSec, activar inmediatamente el modo de bloqueo para la regla de detección

Recuerde que eliminar la action solo de la rama principal no es suficiente; debe eliminarse por completo de todos los flujos de trabajo para evitar su ejecución en cualquier contexto.

[Callforaction-THREAT-Footer]