Cómo LiteLLM convirtió las máquinas de los desarrolladores en bóvedas de credenciales para los atacantes – CYBERDEFENSA.MX

La parte más activa de la infraestructura empresarial de la empresa es la estación de trabajo del desarrollador. Esa computadora portátil es donde se crean, prueban, almacenan en caché, copian y reutilizan las credenciales en servicios, bots, herramientas de compilación y, ahora, agentes de IA locales.

En marzo de 2026, el actor de amenazas TeamPCP demostró lo valiosas que son las máquinas de desarrollo. Su ataque a la cadena de suministro contra LiteLLM, una popular biblioteca de desarrollo de inteligencia artificial descargada millones de veces al día, convirtió los puntos finales de los desarrolladores en operaciones sistemáticas de recolección de credenciales. El malware solo necesitaba acceso a los secretos de texto sin formato que ya se encontraban en el disco.

El ataque LiteLLM: un estudio de caso sobre el compromiso de los terminales de los desarrolladores

El ataque fue sencillo en ejecución pero devastador en alcance. TeamPCP comprometió los paquetes LiteLLM versiones 1.82.7 y 1.82.8 en PyPI, inyectando malware de robo de información que se activaba cuando los desarrolladores instalaban o actualizaban el paquete. El malware recopiló sistemáticamente claves SSH, credenciales de nube para AWS, Azure y GCP, configuraciones de Docker y otros datos confidenciales de las máquinas de los desarrolladores.

PyPI eliminó los paquetes maliciosos a las pocas horas de su detección, pero la ventana de daño fue significativa. El análisis de GitGuardian encontró que se configuraron 1.705 paquetes PyPIpara extraer automáticamente las versiones comprometidas de LiteLLM como dependencias. Paquetes populares como dspy (5 millones de descargas mensuales), opik (3 millones) y crawl4ai (1,4 millones) habrían desencadenado la ejecución de malware durante la instalación. El efecto cascada significó que las organizaciones que nunca usaron LiteLLM directamente aún podrían verse comprometidas a través de dependencias transitivas.

Por qué las máquinas de desarrollo son objetivos atractivos

Este patrón de ataque no es nuevo; es simplemente más visible. El Campañas de Shai-Hulud demostró tácticas similares a escala. Cuando GitGuardian analizó 6.943 máquinas de desarrollador comprometidas a partir de ese incidente, los investigadores encontraron 33.185 secretos únicos, de los cuales al menos 3.760 aún eran válidos. Más sorprendente: cada secreto activo apareció en aproximadamente ocho ubicaciones diferentes en la misma máquina, y el 59% de los sistemas comprometidos eran ejecutadores de CI/CD en lugar de computadoras portátiles personales.

Los adversarios ahora entran en la cadena de herramientas a través de dependencias comprometidas, complementos maliciosos o actualizaciones envenenadas. Una vez allí, recopilan datos del entorno local con el mismo enfoque sistemático que utilizan los equipos de seguridad para buscar vulnerabilidades, excepto que buscan credenciales almacenadas en archivos .env, perfiles de shell, historial de terminal, configuraciones IDE, tokens almacenados en caché, artefactos de compilación y almacenes de memoria de agentes de IA.

Los secretos viven en todas partes en texto plano

El malware LiteLLM tuvo éxito porque las máquinas de los desarrolladores son puntos de concentración densos para las credenciales de texto sin formato. Los secretos terminan en árboles de fuentes, archivos de configuración locales, resultados de depuración, comandos de terminal copiados, variables de entorno y scripts temporales. Se acumulan en archivos .env que se suponía que eran solo locales pero que se convirtieron en una parte permanente del código base. La comodidad se convierte en residuo, que a su vez se convierte en oportunidad.

Los desarrolladores ejecutan agentes, servidores MCP locales, herramientas CLI, extensiones IDE, canalizaciones de compilación y flujos de trabajo de recuperación, todos los cuales requieren credenciales. Esas credenciales se distribuyen a través de rutas predecibles donde el malware sabe buscar: ~/.aws/credentials, ~/.config/gh/config.yml, archivos .env del proyecto, historial de shell y directorios de configuración del agente.

Protección de los puntos finales de los desarrolladores a escala

Es importante crear una protección continua en todos los puntos finales del desarrollador donde se acumulan las credenciales. GitGuardian aborda esto extendiendo la seguridad de los secretos más allá de los repositorios de código hasta la propia máquina del desarrollador.

El ataque LiteLLM demostró lo que sucede cuando las credenciales se acumulan en texto sin formato en los puntos finales de los desarrolladores. Esto es lo que puede hacer para reducir esa exposición.

Comprenda su exposición

Comience con la visibilidad. Trate la estación de trabajo como el entorno principal para escanear secretos, no como una ocurrencia tardía. Utilice ggshield para escanear repositorios locales en busca de credenciales que se filtraron en el código o persisten en el historial de Git. Analice las rutas del sistema de archivos donde se acumulan secretos fuera de Git: espacios de trabajo de proyectos, archivos de puntos, resultados de compilación y carpetas de agentes donde las herramientas locales de IA generan registros, cachés y almacenes de «memoria».

ggshield detecta un secreto en un archivo específico desde una ruta

No asuma que las variables de entorno son seguras sólo porque no están en archivos. Los perfiles de Shell, las configuraciones IDE y los artefactos generados a menudo persisten en los valores del entorno en el disco de forma indefinida. Escanee estas ubicaciones de la misma manera que escanea los repositorios.

Agregue ganchos de confirmación previa de ggshield para dejar de crear nuevas fugas en las confirmaciones mientras limpia las antiguas. Esto convierte la detección secreta en una barrera de seguridad predeterminada que detecta los errores antes de que se conviertan en incidentes.

Comando de confirmación previa de ggshield que detecta un secreto

Mover secretos a bóvedas

La detección sin remediación es sólo ruido. Cuando se filtra una credencial, la remediación generalmente requiere la coordinación entre varios equipos: la seguridad identifica la exposición, la infraestructura es propietaria del servicio, es posible que el desarrollador original haya abandonado la empresa y los equipos de producto se preocupan por las interrupciones en la producción. Sin una propiedad clara y una automatización del flujo de trabajo, la remediación se convierte en un proceso manual al que se le quita prioridad.

La solución trata los secretos como identidades administradas con propiedad definida, políticas de ciclo de vida y rutas de reparación automatizadas. Mueva las credenciales a una infraestructura de bóveda centralizada donde los equipos de seguridad puedan aplicar programas de rotación, políticas de acceso y monitoreo de uso. Integre la gestión de incidentes con sus sistemas de emisión de tickets existentes para que la solución se produzca en contexto en lugar de requerir un cambio constante de herramientas.

GitGuardian Analytics que muestra el estado de los secretos que se están monitoreando

Trate a los agentes de IA como riesgos de credenciales

Las herramientas agentes pueden leer archivos, ejecutar comandos y mover datos. Con los agentes estilo OpenClaw, la «memoria» son literalmente archivos en el disco (SOUL.md, MEMORY.md) almacenados en ubicaciones predecibles. Nunca pegue credenciales en los chats de los agentes, nunca les enseñe secretos a los agentes «para más tarde» y escanee de forma rutinaria los archivos de memoria de los agentes como almacenes de datos confidenciales.

Eliminar clases enteras de secretos

La forma más rápida de reducir la proliferación de secretos es eliminar la necesidad de categorías enteras de secretos compartidos. En el lado humano, adopte WebAuthn (claves de acceso) para reemplazar las contraseñas. En cuanto a la carga de trabajo, migre a la federación OIDC, para que las canalizaciones dejen de depender de las claves almacenadas en la nube y los secretos de las cuentas de servicio.

Comience con las rutas de mayor riesgo donde las credenciales filtradas perjudican más y luego amplíe. Mueva el acceso de desarrollador a claves de acceso y migre flujos de trabajo de CI/CD a autenticación basada en OIDC.

Utilice credenciales efímeras

Si aún no puede eliminar los secretos, hágalos de corta duración y reemplácelos automáticamente. Utilice SPIFFE para emitir documentos de identidad criptográficos (SVID) que rotan automáticamente en lugar de depender de claves API estáticas.

Comience con claves de nube, tokens de implementación y credenciales de servicio de larga duración que los desarrolladores conservan localmente para su comodidad. Cambie a tokens de corta duración, rotación automática y patrones de identidad de cargas de trabajo. Cada migración es un secreto menos duradero que puede ser robado y convertido en arma.

El objetivo es reducir el valor que un atacante puede extraer de cualquier punto de apoyo exitoso en una máquina de desarrollador.

Honeytokens como sistemas de alerta temprana

Los Honeytokens brindan protección provisional. Coloque credenciales señuelo en ubicaciones a las que los atacantes apuntan sistemáticamente: directorios de inicio de desarrolladores, rutas de configuración comunes y almacenes de memoria de agentes. Cuando se recolectan y validan, estos tokens generan alertas inmediatas, comprimiendo el tiempo de detección de «descubrir daños semanas después» a «detectar ataques mientras se desarrollan». Este no es el estado final, pero cambia la ventana de respuesta mientras continúa la limpieza sistemática.

Los puntos finales de desarrollador ahora son parte de su infraestructura crítica. Se encuentran en la intersección del privilegio, la confianza y la ejecución. El incidente de LiteLLM demostró que los adversarios entienden esto mejor que la mayoría de los programas de seguridad. Las organizaciones que traten las máquinas de desarrollo con la misma disciplina de gobernanza que ya se aplica a los sistemas de producción serán las que sobrevivan al próximo compromiso de la cadena de suministro.

¿Encontró interesante este artículo? Este artículo es una contribución de uno de nuestros valiosos socios. Síguenos en noticias de google, Gorjeo y LinkedIn para leer más contenido exclusivo que publicamos.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *