Se ha descubierto un ataque de suministro en cascada, originado por la comprometida acción de GitHub “reviewdog/action-setup@v1”, que finalmente condujo a la violación de la acción “tj-actions/changed-files”, exponiendo secretos de CI/CD en 23.000 repositorios.
¿Cómo se Desarrolló el Ataque? ️
1️⃣ Acción Comprometida
Los atacantes primero apuntaron a la reviewdog/action-setup@v1, inyectando código malicioso que exponía los secretos de CI/CD en los registros de flujo de trabajo públicos.
2️⃣ Efecto Cascada
La acción tj-actions/eslint-changed-files, que depende de reviewdog/action-setup, fue comprometida cuando el código inyectado accedió a un token de acceso personal (PAT) utilizado por el bot de tj-actions.
3️⃣ Secretos Expuestos
Esto permitió que los secretos se vertieran en los registros de flujo de trabajo de CI/CD en repositorios públicos. Si estos registros fueran accesibles, los atacantes podrían haber robado credenciales sensibles.
4️⃣ Repositorios Afectados
a violación afectó a 23,000 repositorios donde los secretos fueron expuestos en los registros, comprometiendo la seguridad de múltiples organizaciones y proyectos.
Hallazgos Clave
Acciones Comprometidas: Varias acciones de reviewdog podrían haber sido afectadas, incluyendo:
- reviewdog/action-shellcheck
- reviewdog/action-composite-template
- reviewdog/action-staticcheck
- reviewdog/action-ast-grep
- reviewdog/action-typos
Método de Inyección: Los atacantes insertaron payloads codificados en base64 en los scripts install.sh, lo que resultó en la exposición de secretos.
Causa Principal: Los investigadores de Wiz sugieren que la acción comprometida reviewdog/action-setup fue la causa de la filtración del PAT del bot de tj-actions, aunque el método exacto de la violación no está claro.
Recomendaciones para Proyectos Afectados ⚠️
1️⃣ Verificar Acciones Comprometidas
Usa esta consulta de GitHub para encontrar referencias a reviewdog/action-setup@v1 en los repositorios.
2️⃣ Buscar Payloads en Base64
Si se encuentran payloads codificados en base64 en los registros de flujo de trabajo, es probable que los secretos hayan sido filtrados.
3️⃣ Acciones Inmediatas
- Eliminar referencias a las acciones comprometidas en las ramas.
- Eliminar los registros de flujo de trabajo que puedan contener información sensible.
- Rotar los secretos expuestos para prevenir futuros compromisos.
4️⃣ Prevenir Ataques Futuros:
- Fijar acciones a hashes de commit específicos en lugar de usar etiquetas de versión.
- Utilizar la función de lista blanca de GitHub para restringir las acciones no autorizadas.
Efectos a Largo Plazo y Mitigación
Estos ataques de suministro probablemente tendrán consecuencias duraderas para los proyectos afectados.
Se requiere una acción rápida para mitigar los riesgos rotando secretos y asegurando la canalización de CI/CD.
Además, fijar hashes específicos de commit para las acciones de GitHub y usar la función de lista blanca de GitHub puede evitar compromisos similares en el futuro.