devops

Revisión posterior al incidente sobre el incidente de rescate de la cadena de suministro de TanStack npm: No hubo acceso no autorizado a los sistemas de producción de los clientes.

Fuente: grafana.com 7 min de lectura

Compartir

Revisión posterior al incidente sobre el incidente de rescate de la cadena de suministro de TanStack npm: No hubo acceso no autorizado a los sistemas de producción de los clientes.

Estás leyendo un resumen. El contenido completo está en grafana.com.

El 27 de mayo, completamos nuestra investigación interna sobre el reciente incidente de rescate en la cadena de suministro de TanStack y confirmamos nuestros hallazgos iniciales: El incidente se limitó estrictamente al entorno de GitHub de Grafana Labs. No hubo acceso no autorizado a los sistemas de producción de los clientes y la plataforma Grafana Cloud no se vio afectada. Para una auditoría adicional e independiente, contratamos a Mandiant, un líder en ciberseguridad y respuesta a incidentes. Les proporcionamos acceso a la API del entorno de registros de Grafana Labs para realizar consultas en nuestros sistemas para su investigación, que comenzó el 1 de junio. Mandiant confirmó que no había “evidencia de manipulación de código o contaminación del repositorio dentro de las organizaciones públicas o repositorios de producción entregados a los usuarios finales.” Desde que descubrimos el incidente, los equipos de seguridad de Grafana Labs han estado ejecutando dos flujos de trabajo paralelos: completar la investigación y fortalecer nuestras operaciones de seguridad. Estamos publicando este blog en un espíritu de transparencia para compartir más detalles sobre nuestra respuesta al incidente y los esfuerzos de remediación. Resumen e impacto Si buscas la versión corta en lugar de leer nuestras actualizaciones previas, aquí está el TL;DR: El ataque de cadena de suministro de TanStack nos afectó el 11 de mayo a través de la campaña Mini Shai-Hulud. En ese momento, creemos que habíamos rotado con éxito todas las credenciales involucradas en este incidente. Nos perdimos una. No culparé esta omisión a la arrogancia; los datos que teníamos en ese momento simplemente nos llevaron a creer que nuestra rotación era exhaustiva. Estábamos equivocados. Un actor malicioso utilizó esa credencial pasada por alto para clonar toda nuestra colección de repositorios. Luego se comunicó el 16 de mayo, exigiendo un rescate para evitar una filtración de código. Dado que Grafana Labs es una empresa de código abierto, podrías preguntarte por qué esto es una preocupación. Aunque la mayor parte de nuestro código fuente es público, mantenemos repositorios privados para cosas como herramientas internas y características específicas de Grafana Cloud. Fue una decisión difícil, pero nos mantuvimos firmes en nuestros principios y en la guía documentada del FBI: No pagamos. Iniciamos nuestros esfuerzos de mitigación de inmediato y confirmamos que no hubo acceso no autorizado a los sistemas de producción de los clientes, y la plataforma Grafana Cloud no se vio afectada. También confirmamos que, aunque nuestra base de código fue descargada, no fue alterada. Nuestros clientes y usuarios de código abierto no necesitan tomar ninguna acción. Respuesta de Grafana Labs Nos alertaron sobre el incidente un sábado, y los equipos de toda la empresa actuaron rápida y decisivamente. (O para tomar prestada una frase de uno de mis raperos favoritos, Big Daddy Kane, no hay pasos en falso en Grafana Labs.) En respuesta, Grafana Labs suspendió todas las aplicaciones de GitHub el 17 de mayo, inició una congelación global de código el 18 de mayo y realizó una auditoría en todas las plataformas de Vault, GitHub, Okta, Kubernetes, AWS, GCP y registros de hosts para verificar que no se comprometiera ningún dato de producción de clientes. En las semanas siguientes, nuestros equipos de ingeniería contribuyeron a una auditoría integral que incluyó, entre otros: Completar 1,500 revisiones de PR enfocadas en la seguridad Auditar 280 aplicaciones de GitHub, reduciendo permisos y eliminando varias Escanear 1,200 repositorios en busca de signos de manipulación Ejecutar 2,300 revisiones de PR buscando cambios no autorizados en un repositorio crítico Completar auditorías de infraestructura y retirar sistemas legados Realizar auditorías de acceso de amplio alcance Fue una tarea masiva, pero cada equipo se destacó de manera extraordinaria para hacer su parte. Ingeniería, seguridad y socios multifuncionales trabajaron incansablemente para responder, demostrando la colaboración y el compromiso compartido que tenemos con nuestra comunidad y nuestros clientes, que siempre he valorado aquí en Grafana Labs. Después de la evaluación inicial, encontramos que, además del código fuente, el contenido descargado incluía repositorios de GitHub que algunos equipos de Grafana Labs usan para colaborar y almacenar información operativa interna y otros detalles sobre nuestro negocio. Esto incluye, por ejemplo, nombres de contacto comerciales y direcciones de correo electrónico que se intercambiarían en un entorno profesional y direcciones de correo electrónico que se usaron en algunas campañas de marketing anteriores. Esta no fue información extraída de o procesada a través del uso de sistemas de producción o la plataforma Grafana Cloud. Si deseas saber si se identificaron direcciones de correo electrónico con tu dominio, comunícate con el soporte de Grafana Labs. Línea de tiempo del incidente Todos los tiempos están en UTC 19:21 11 de mayo - Primer código malicioso ejecutado en corredores autoalojados por actores de la amenaza Shai Hulud, filtrando credenciales. Credenciales rotadas. 07:21 14 de mayo - Primer commit malicioso realizado por el actor de la amenaza utilizando grafana-delivery-bot, filtrado por atacantes de Shai Hulud. 13:28 14 de mayo - Comienza la exfiltración de datos de los repos. 20:57 15 de mayo - El actor de extorsión de datos publica su demanda de extorsión. 08:30 16 de mayo - El equipo de seguridad de Grafana Labs se entera del rescate reclamado y comienza a buscar confirmación. 17:39 16 de mayo - Compromiso confirmado; se declara el incidente. 19:33 16 de mayo - Todas las credenciales conocidas afectadas y aplicaciones de GitHub suspendidas/rotadas. La suspensión y rotación de todas las demás aplicaciones de GitHub y credenciales accesibles comienza. 21:10 16 de mayo - Suspensión de todas las aplicaciones de GitHub completada. 16:40 17 de mayo - Todos los cambios de código realizados por cuentas de aplicaciones de GitHub asociadas con el actor de la amenaza identificados y revertidos. 16:52 17 de mayo - Causa raíz, cadena de ataque de compromiso identificada. 17:21 17 de mayo - Credenciales de DockerHub determinadas como no comprometidas. 17:51 17 de mayo - Todos los flujos de trabajo maliciosos identificados. Se compila una lista final de secretos afectados y se rotan. Continúa la rotación de todos los demás secretos ci/comunes de los repos afectados. 23:23 17 de mayo - Última de las credenciales potencialmente accesibles confirmadas como rotadas o suspendidas. 03:08 18 de mayo - Comienza la congelación de todos los cambios de código y despliegue no críticos. 08:00 25 de mayo - Comienza la semana de fortalecimiento de seguridad de toda la ingeniería. 10:58 26 de mayo - Revisión de commits completada, comienza el descongelamiento del servicio. Un repositorio necesita haber sido revisado completamente y transicionado para usar un corredor de tokens de aplicación de GitHub para credenciales de corto plazo y ámbito fino antes de ser descongelado. 10:54 27 de mayo - Transición de repos que envían imágenes directamente a DockerHub a envío a Google Cloud Artifact Registry. 27 de mayo - Investigación interna completada. No se descubrió actividad adicional de ataque ni credenciales comprometidas. 08:00 2 de junio - Concluye la semana de fortalecimiento de seguridad de toda la ingeniería. 20:43 3 de junio - Revisión de repositorios por pérdida de datos completa. 18 de junio - Investigación de Mandiant completada, corroborando la investigación interna. Qué sigue La investigación ahora está cerrada, pero nuestro trabajo para mejorar las operaciones de seguridad en Grafana Labs continuará. Dostoyevsky una vez señaló que "cuando la razón falla, ¡el diablo ayuda!" Estoy citando "Crimen y castigo" para subrayar nuestra filosofía: Solo queríamos implementar cambios que realmente impactaran la seguridad. Hemos pasado el último mes ejecutando controles de alto impacto, incluyendo un corredor de tokens, controles de acceso granulares, alertas adicionales y análisis estático. Además, hemos dejado ciertas acciones de GitHub y ahora usamos acciones más limitadas con tokens de corta duración. También hemos comenzado el proceso de compartimentar nuestras organizaciones de GitHub y aislar todos los repositorios archivados en una organización dedicada con acciones deshabilitadas. Compartiremos un resumen de nuestros esfuerzos de respuesta y los detalles técnicos de cómo mejoramos nuestra postura de seguridad en nuestra revisión posterior al incidente en las próximas semanas.

Artículos relacionados