{"id":462,"date":"2026-04-06T12:52:37","date_gmt":"2026-04-06T12:52:37","guid":{"rendered":"https:\/\/cybercolombia.co\/index.php\/2026\/04\/06\/como-litellm-convirtio-las-maquinas-de-los-desarrolladores-en-bovedas-de-credenciales-para-los-atacantes-cyberdefensa-mx\/"},"modified":"2026-04-06T12:52:37","modified_gmt":"2026-04-06T12:52:37","slug":"como-litellm-convirtio-las-maquinas-de-los-desarrolladores-en-bovedas-de-credenciales-para-los-atacantes-cyberdefensa-mx","status":"publish","type":"post","link":"https:\/\/cybercolombia.co\/index.php\/2026\/04\/06\/como-litellm-convirtio-las-maquinas-de-los-desarrolladores-en-bovedas-de-credenciales-para-los-atacantes-cyberdefensa-mx\/","title":{"rendered":"C\u00f3mo LiteLLM convirti\u00f3 las m\u00e1quinas de los desarrolladores en b\u00f3vedas de credenciales para los atacantes \u2013 CYBERDEFENSA.MX"},"content":{"rendered":"<div id=\"articlebody\">\n<p>La parte m\u00e1s activa de la infraestructura empresarial de la empresa es la estaci\u00f3n de trabajo del desarrollador. Esa computadora port\u00e1til es donde se crean, prueban, almacenan en cach\u00e9, copian y reutilizan las credenciales en servicios, bots, herramientas de compilaci\u00f3n y, ahora, agentes de IA locales.<\/p>\n<p>En marzo de 2026, el actor de amenazas TeamPCP demostr\u00f3 lo valiosas que son las m\u00e1quinas 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\u00eda, convirti\u00f3 los puntos finales de los desarrolladores en operaciones sistem\u00e1ticas de recolecci\u00f3n de credenciales. El malware solo necesitaba acceso a los secretos de texto sin formato que ya se encontraban en el disco.<\/p>\n<h2>El ataque LiteLLM: un estudio de caso sobre el compromiso de los terminales de los desarrolladores<\/h2>\n<p>El ataque fue sencillo en ejecuci\u00f3n pero devastador en alcance. TeamPCP comprometi\u00f3 los paquetes LiteLLM versiones 1.82.7 y 1.82.8 en PyPI, inyectando malware de robo de informaci\u00f3n que se activaba cuando los desarrolladores instalaban o actualizaban el paquete. El malware recopil\u00f3 sistem\u00e1ticamente claves SSH, credenciales de nube para AWS, Azure y GCP, configuraciones de Docker y otros datos confidenciales de las m\u00e1quinas de los desarrolladores.<\/p>\n<p>PyPI elimin\u00f3 los paquetes maliciosos a las pocas horas de su detecci\u00f3n, pero la ventana de da\u00f1o fue significativa. <a href=\"https:\/\/blog.gitguardian.com\/team-pcp-snowball-analysis\/\">El an\u00e1lisis de GitGuardian encontr\u00f3 que se configuraron 1.705 paquetes PyPI<\/a>para extraer autom\u00e1ticamente 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\u00edan desencadenado la ejecuci\u00f3n de malware durante la instalaci\u00f3n. El efecto cascada signific\u00f3 que las organizaciones que nunca usaron LiteLLM directamente a\u00fan podr\u00edan verse comprometidas a trav\u00e9s de dependencias transitivas.<\/p>\n<h2>Por qu\u00e9 las m\u00e1quinas de desarrollo son objetivos atractivos<\/h2>\n<p>Este patr\u00f3n de ataque no es nuevo; es simplemente m\u00e1s visible. El <a href=\"https:\/\/blog.gitguardian.com\/shai-hulud-2\/\">Campa\u00f1as de Shai-Hulud <\/a>demostr\u00f3 t\u00e1cticas similares a escala. Cuando GitGuardian analiz\u00f3 6.943 m\u00e1quinas de desarrollador comprometidas a partir de ese incidente, los investigadores encontraron 33.185 secretos \u00fanicos, de los cuales al menos 3.760 a\u00fan eran v\u00e1lidos. M\u00e1s sorprendente: cada secreto activo apareci\u00f3 en aproximadamente ocho ubicaciones diferentes en la misma m\u00e1quina, y el 59% de los sistemas comprometidos eran ejecutadores de CI\/CD en lugar de computadoras port\u00e1tiles personales.<\/p>\n<p>Los adversarios ahora entran en la cadena de herramientas a trav\u00e9s de dependencias comprometidas, complementos maliciosos o actualizaciones envenenadas. Una vez all\u00ed, recopilan datos del entorno local con el mismo enfoque sistem\u00e1tico 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\u00e9, artefactos de compilaci\u00f3n y almacenes de memoria de agentes de IA.<\/p>\n<h2>Los secretos viven en todas partes en texto plano<\/h2>\n<p>El malware LiteLLM tuvo \u00e9xito porque las m\u00e1quinas de los desarrolladores son puntos de concentraci\u00f3n densos para las credenciales de texto sin formato. Los secretos terminan en \u00e1rboles de fuentes, archivos de configuraci\u00f3n locales, resultados de depuraci\u00f3n, comandos de terminal copiados, variables de entorno y scripts temporales. Se acumulan en archivos .env que se supon\u00eda que eran solo locales pero que se convirtieron en una parte permanente del c\u00f3digo base. La comodidad se convierte en residuo, que a su vez se convierte en oportunidad.<\/p>\n<p>Los desarrolladores ejecutan agentes, servidores MCP locales, herramientas CLI, extensiones IDE, canalizaciones de compilaci\u00f3n y flujos de trabajo de recuperaci\u00f3n, todos los cuales requieren credenciales. Esas credenciales se distribuyen a trav\u00e9s 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\u00f3n del agente.<\/p>\n<h2>Protecci\u00f3n de los puntos finales de los desarrolladores a escala<\/h2>\n<p>Es importante crear una protecci\u00f3n continua en todos los puntos finales del desarrollador donde se acumulan las credenciales. GitGuardian aborda esto extendiendo la seguridad de los secretos m\u00e1s all\u00e1 de los repositorios de c\u00f3digo hasta la propia m\u00e1quina del desarrollador.<\/p>\n<p>El ataque LiteLLM demostr\u00f3 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\u00f3n.<\/p>\n<h3>Comprenda su exposici\u00f3n<\/h3>\n<p>Comience con la visibilidad. Trate la estaci\u00f3n de trabajo como el entorno principal para escanear secretos, no como una ocurrencia tard\u00eda. Utilice ggshield para escanear repositorios locales en busca de credenciales que se filtraron en el c\u00f3digo 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\u00f3n y carpetas de agentes donde las herramientas locales de IA generan registros, cach\u00e9s y almacenes de \u00abmemoria\u00bb.<\/p>\n<table cellpadding=\"0\" cellspacing=\"0\" class=\"tr-caption-container\" style=\"float: left;\">\n<tbody>\n<tr>\n<td style=\"text-align: center;\"><a href=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEjTEvOdmVGpU2jdrk4x_ohF83wAOnX9l0YenYN3jUbVHIliXlTKecWiCU4Ikm6KH2zXil1S8d-XzHp7-kvex0vlsKv5kCuyP2QiRD1J7iSqzdAbazvUq3pmoJPkXAI1tbP0qU_PobtzwdKGM63NqzHEWLX2Wor21pXXmPlL2hE9rBRM0nNKMJx1TJHHfzo\/s1700-e365\/image1.png\" style=\"clear: left; display: block; margin-left: auto; margin-right: auto;  text-align: center;\"><img decoding=\"async\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEjTEvOdmVGpU2jdrk4x_ohF83wAOnX9l0YenYN3jUbVHIliXlTKecWiCU4Ikm6KH2zXil1S8d-XzHp7-kvex0vlsKv5kCuyP2QiRD1J7iSqzdAbazvUq3pmoJPkXAI1tbP0qU_PobtzwdKGM63NqzHEWLX2Wor21pXXmPlL2hE9rBRM0nNKMJx1TJHHfzo\/s1700-e365\/image1.png\" alt=\"\" border=\"0\" data-original-height=\"610\" data-original-width=\"1600\"\/><\/a><\/td>\n<\/tr>\n<tr>\n<td class=\"tr-caption\" style=\"text-align: center;\">ggshield detecta un secreto en un archivo espec\u00edfico desde una ruta<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>No asuma que las variables de entorno son seguras s\u00f3lo porque no est\u00e1n 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.<\/p>\n<p>Agregue ganchos de confirmaci\u00f3n previa de ggshield para dejar de crear nuevas fugas en las confirmaciones mientras limpia las antiguas. Esto convierte la detecci\u00f3n secreta en una barrera de seguridad predeterminada que detecta los errores antes de que se conviertan en incidentes.<\/p>\n<table cellpadding=\"0\" cellspacing=\"0\" class=\"tr-caption-container\" style=\"float: left;\">\n<tbody>\n<tr>\n<td style=\"text-align: center;\"><a href=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEi9Lom9XnhERVUjJJbmmDUK9sIoOyFtIIJl8gk3iHh03NjQY8DkAxSCQbsGS_iBvP1xNJjfw5Z3UpEAWnASLRcR82VqbDUjEmeqyG5CRW3HJEfY_elpFvti6a3K-WyPM4kp5f04Iu14fFaknRk2TBv7g9z4-AmaebC401zLXtCXpYnopNzNc-yeRadQoLU\/s1700-e365\/image2.png\" style=\"clear: left; display: block; margin-left: auto; margin-right: auto;  text-align: center;\"><img decoding=\"async\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEi9Lom9XnhERVUjJJbmmDUK9sIoOyFtIIJl8gk3iHh03NjQY8DkAxSCQbsGS_iBvP1xNJjfw5Z3UpEAWnASLRcR82VqbDUjEmeqyG5CRW3HJEfY_elpFvti6a3K-WyPM4kp5f04Iu14fFaknRk2TBv7g9z4-AmaebC401zLXtCXpYnopNzNc-yeRadQoLU\/s1700-e365\/image2.png\" alt=\"\" border=\"0\" data-original-height=\"640\" data-original-width=\"1376\"\/><\/a><\/td>\n<\/tr>\n<tr>\n<td class=\"tr-caption\" style=\"text-align: center;\">Comando de confirmaci\u00f3n previa de ggshield que detecta un secreto<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3>Mover secretos a b\u00f3vedas<\/h3>\n<p>La detecci\u00f3n sin remediaci\u00f3n es s\u00f3lo ruido. Cuando se filtra una credencial, la remediaci\u00f3n generalmente requiere la coordinaci\u00f3n entre varios equipos: la seguridad identifica la exposici\u00f3n, 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\u00f3n. Sin una propiedad clara y una automatizaci\u00f3n del flujo de trabajo, la remediaci\u00f3n se convierte en un proceso manual al que se le quita prioridad.<\/p>\n<p>La soluci\u00f3n trata los secretos como identidades administradas con propiedad definida, pol\u00edticas de ciclo de vida y rutas de reparaci\u00f3n automatizadas. Mueva las credenciales a una infraestructura de b\u00f3veda centralizada donde los equipos de seguridad puedan aplicar programas de rotaci\u00f3n, pol\u00edticas de acceso y monitoreo de uso. Integre la gesti\u00f3n de incidentes con sus sistemas de emisi\u00f3n de tickets existentes para que la soluci\u00f3n se produzca en contexto en lugar de requerir un cambio constante de herramientas.<\/p>\n<table cellpadding=\"0\" cellspacing=\"0\" class=\"tr-caption-container\" style=\"float: left;\">\n<tbody>\n<tr>\n<td style=\"text-align: center;\"><a href=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEihAMS1GRVWLxK7xOvHqkbcyzJveTfWxBZL2caPM8AbGBFT6zqy2olTgFoyuZltTDr-MTDIvC-AzjhJTAy-4IfXOFA4zvl68ofWHGGZUZRAAzhyphenhypheniDXPkL0UmbTfNguuP7VaBxSY3BuHQcINgDkQNXsc0ajDaje16fY4A0swoRyzROmcxyEvdigyHbFruxw\/s1700-e365\/image3.png\" style=\"clear: left; display: block; margin-left: auto; margin-right: auto;  text-align: center;\"><img decoding=\"async\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEihAMS1GRVWLxK7xOvHqkbcyzJveTfWxBZL2caPM8AbGBFT6zqy2olTgFoyuZltTDr-MTDIvC-AzjhJTAy-4IfXOFA4zvl68ofWHGGZUZRAAzhyphenhypheniDXPkL0UmbTfNguuP7VaBxSY3BuHQcINgDkQNXsc0ajDaje16fY4A0swoRyzROmcxyEvdigyHbFruxw\/s1700-e365\/image3.png\" alt=\"\" border=\"0\" data-original-height=\"596\" data-original-width=\"1600\"\/><\/a><\/td>\n<\/tr>\n<tr>\n<td class=\"tr-caption\" style=\"text-align: center;\">GitGuardian Analytics que muestra el estado de los secretos que se est\u00e1n monitoreando<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3>Trate a los agentes de IA como riesgos de credenciales<\/h3>\n<p>Las herramientas agentes pueden leer archivos, ejecutar comandos y mover datos. Con los agentes estilo OpenClaw, la \u00abmemoria\u00bb 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\u00f1e secretos a los agentes \u00abpara m\u00e1s tarde\u00bb y escanee de forma rutinaria los archivos de memoria de los agentes como almacenes de datos confidenciales.<\/p>\n<h3>Eliminar clases enteras de secretos<\/h3>\n<p>La forma m\u00e1s r\u00e1pida de reducir la proliferaci\u00f3n de secretos es eliminar la necesidad de categor\u00edas enteras de secretos compartidos. En el lado humano, adopte WebAuthn (claves de acceso) para reemplazar las contrase\u00f1as. En cuanto a la carga de trabajo, migre a la federaci\u00f3n OIDC, para que las canalizaciones dejen de depender de las claves almacenadas en la nube y los secretos de las cuentas de servicio.<\/p>\n<p>Comience con las rutas de mayor riesgo donde las credenciales filtradas perjudican m\u00e1s y luego ampl\u00ede. Mueva el acceso de desarrollador a claves de acceso y migre flujos de trabajo de CI\/CD a autenticaci\u00f3n basada en OIDC.<\/p>\n<h3>Utilice credenciales ef\u00edmeras<\/h3>\n<p>Si a\u00fan no puede eliminar los secretos, h\u00e1galos de corta duraci\u00f3n y reempl\u00e1celos autom\u00e1ticamente. Utilice SPIFFE para emitir documentos de identidad criptogr\u00e1ficos (SVID) que rotan autom\u00e1ticamente en lugar de depender de claves API est\u00e1ticas.<\/p>\n<p>Comience con claves de nube, tokens de implementaci\u00f3n y credenciales de servicio de larga duraci\u00f3n que los desarrolladores conservan localmente para su comodidad. Cambie a tokens de corta duraci\u00f3n, rotaci\u00f3n autom\u00e1tica y patrones de identidad de cargas de trabajo. Cada migraci\u00f3n es un secreto menos duradero que puede ser robado y convertido en arma.<\/p>\n<p>El objetivo es reducir el valor que un atacante puede extraer de cualquier punto de apoyo exitoso en una m\u00e1quina de desarrollador.<\/p>\n<h3>Honeytokens como sistemas de alerta temprana <\/h3>\n<p>Los Honeytokens brindan protecci\u00f3n provisional. Coloque credenciales se\u00f1uelo en ubicaciones a las que los atacantes apuntan sistem\u00e1ticamente: directorios de inicio de desarrolladores, rutas de configuraci\u00f3n comunes y almacenes de memoria de agentes. Cuando se recolectan y validan, estos tokens generan alertas inmediatas, comprimiendo el tiempo de detecci\u00f3n de \u00abdescubrir da\u00f1os semanas despu\u00e9s\u00bb a \u00abdetectar ataques mientras se desarrollan\u00bb. Este no es el estado final, pero cambia la ventana de respuesta mientras contin\u00faa la limpieza sistem\u00e1tica.<\/p>\n<p>Los puntos finales de desarrollador ahora son parte de su infraestructura cr\u00edtica. Se encuentran en la intersecci\u00f3n del privilegio, la confianza y la ejecuci\u00f3n. El incidente de LiteLLM demostr\u00f3 que los adversarios entienden esto mejor que la mayor\u00eda de los programas de seguridad. Las organizaciones que traten las m\u00e1quinas de desarrollo con la misma disciplina de gobernanza que ya se aplica a los sistemas de producci\u00f3n ser\u00e1n las que sobrevivan al pr\u00f3ximo compromiso de la cadena de suministro.<\/p>\n<div class=\"cf note-b\">\u00bfEncontr\u00f3 interesante este art\u00edculo? <span class=\"\">Este art\u00edculo es una contribuci\u00f3n de uno de nuestros valiosos socios.<\/span> S\u00edguenos en <a href=\"https:\/\/news.google.com\/publications\/CAAqLQgKIidDQklTRndnTWFoTUtFWFJvWldoaFkydGxjbTVsZDNNdVkyOXRLQUFQAQ\" rel=\"noopener\" target=\"_blank\">noticias de google<\/a>, <a href=\"https:\/\/twitter.com\/thehackersnews\" rel=\"noopener\" target=\"_blank\">Gorjeo<\/a> y <a href=\"https:\/\/www.linkedin.com\/company\/thehackernews\/\" rel=\"noopener\" target=\"_blank\">LinkedIn<\/a> para leer m\u00e1s contenido exclusivo que publicamos.<\/div>\n<\/div>\n<p><script async src=\"\/\/platform.twitter.com\/widgets.js\" charset=\"utf-8\"><\/script><\/p>\n","protected":false},"excerpt":{"rendered":"<p>La parte m\u00e1s activa de la infraestructura empresarial de la empresa es la estaci\u00f3n de trabajo del desarrollador. Esa computadora port\u00e1til es donde se crean, prueban, almacenan en cach\u00e9, copian y reutilizan las credenciales en servicios, bots, herramientas de compilaci\u00f3n y, ahora, agentes de IA locales. En marzo de 2026, el actor de amenazas TeamPCP [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":463,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[25,5],"tags":[151,1583,86,1581,469,24,53,95,1253,52,1582,36],"class_list":["post-462","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-noticias","category-trending","tag-atacantes","tag-bovedas","tag-como","tag-convirtio","tag-credenciales","tag-cyberdefensa-mx","tag-desarrolladores","tag-las","tag-litellm","tag-los","tag-maquinas","tag-para"],"_links":{"self":[{"href":"https:\/\/cybercolombia.co\/index.php\/wp-json\/wp\/v2\/posts\/462","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cybercolombia.co\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/cybercolombia.co\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/cybercolombia.co\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/cybercolombia.co\/index.php\/wp-json\/wp\/v2\/comments?post=462"}],"version-history":[{"count":0,"href":"https:\/\/cybercolombia.co\/index.php\/wp-json\/wp\/v2\/posts\/462\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/cybercolombia.co\/index.php\/wp-json\/wp\/v2\/media\/463"}],"wp:attachment":[{"href":"https:\/\/cybercolombia.co\/index.php\/wp-json\/wp\/v2\/media?parent=462"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cybercolombia.co\/index.php\/wp-json\/wp\/v2\/categories?post=462"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cybercolombia.co\/index.php\/wp-json\/wp\/v2\/tags?post=462"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}