{"id":29085,"date":"2026-04-04T08:47:37","date_gmt":"2026-04-04T14:47:37","guid":{"rendered":"https:\/\/latam.kaspersky.com\/blog\/?p=29085"},"modified":"2026-04-04T08:47:37","modified_gmt":"2026-04-04T14:47:37","slug":"critical-supply-chain-attack-trivy-litellm-checkmarx-teampcp","status":"publish","type":"post","link":"https:\/\/latam.kaspersky.com\/blog\/critical-supply-chain-attack-trivy-litellm-checkmarx-teampcp\/29085\/","title":{"rendered":"Ataques a la cadena de suministro a trav\u00e9s de Trivy y LiteLLM: c\u00f3mo proteger la canalizaci\u00f3n de CI\/CD de CVE-2026-33634x"},"content":{"rendered":"<p>Millones de canalizaciones de desarrollo de software automatizadas dependen de herramientas de seguridad (como Trivy y Checkmarx AST), que est\u00e1n integradas en el proceso de creaci\u00f3n. Y fueron estas soluciones de confianza las que recientemente se convirtieron en el punto de entrada para uno de los <u>ataques a la cadena de suministro<\/u> m\u00e1s grandes y peligrosos de la actualidad. En esta publicaci\u00f3n, hablamos sobre c\u00f3mo auditar los flujos de trabajo automatizados y proteger la infraestructura corporativa en la nube.<\/p>\n<h2>L\u00ednea de tiempo del ataque y consecuencias conocidas<\/h2>\n<p>El 19 de marzo se llev\u00f3 a cabo con \u00e9xito un ataque a la cadena de suministro a trav\u00e9s de Trivy, una herramienta de an\u00e1lisis de vulnerabilidades de c\u00f3digo abierto ampliamente utilizada en las canalizaciones de CI\/CD. Los atacantes, un grupo conocido como TeamPCP, lograron insertar malware en flujos de trabajo oficiales de GitHub Actions e im\u00e1genes Docker asociadas con Trivy. Como resultado, cada an\u00e1lisis de las canalizaciones automatizadas activaba malware que robaba claves SSH, tokens de acceso a la nube, carteras de criptomonedas y otros datos valiosos de los sistemas vulnerados. Dada la naturaleza cr\u00edtica del incidente, se le asign\u00f3 el identificador <a href=\"https:\/\/nvd.nist.gov\/vuln\/detail\/CVE-2026-33634\" target=\"_blank\" rel=\"noopener nofollow\">CVE-2026-33634<\/a> con la puntuaci\u00f3n CVSS4B casi m\u00e1xima de 9,4.<\/p>\n<p>M\u00e1s tarde ese mismo d\u00eda, el equipo de Trivy detect\u00f3 el ataque y elimin\u00f3 los artefactos maliciosos de los canales de distribuci\u00f3n, y as\u00ed detuvo esta fase del ataque. Sin embargo, los atacantes ya hab\u00edan obtenido acceso a los entornos de muchos usuarios de Trivy.<\/p>\n<p>El 23 de marzo, se descubri\u00f3 un <a href=\"https:\/\/www.sysdig.com\/blog\/teampcp-expands-supply-chain-compromise-spreads-from-trivy-to-checkmarx-github-actions\" target=\"_blank\" rel=\"noopener nofollow\">incidente similar<\/a> en otra herramienta de seguridad para aplicaciones: una acci\u00f3n de GitHub Actions para Checkmarx KICS, as\u00ed como Checkmarx AST. Tres horas despu\u00e9s, se elimin\u00f3 el c\u00f3digo malicioso de all\u00ed tambi\u00e9n. TeamPCP tambi\u00e9n logr\u00f3 poner en riesgo las <a href=\"https:\/\/x.com\/ReversingLabs\/status\/2036193573796978729?s=20\" target=\"_blank\" rel=\"noopener nofollow\">extensiones de OpenVSX<\/a> compatibles con Checkmarx: <em>cx-dev-assist<\/em> 1.7.0 y <em>ast-results<\/em>. Las declaraciones sobre cu\u00e1ndo se resolvi\u00f3 esta parte del incidente var\u00edan.<\/p>\n<p>El 24 de marzo, un proyecto popular que utilizaba el an\u00e1lisis de c\u00f3digo de Trivy (la puerta de enlace de IA de LiteLLM, una biblioteca universal para acceder a varios proveedores de LLM) sufri\u00f3 un ataque. Las versiones 1.82.7 y 1.82.8, cargadas al repositorio de PyPI, se vieron vulneradas. Estas versiones estuvieron disponibles para el p\u00fablico durante unas cinco horas.<\/p>\n<p>Pero el hecho de que el ataque haya durado solo unas horas no es motivo para restarle importancia. Dada la popularidad de los proyectos afectados, el c\u00f3digo malicioso podr\u00eda haberse ejecutado miles de veces, incluso dentro de la infraestructura de empresas muy grandes.<\/p>\n<p>Esto permiti\u00f3 a los atacantes implementar puertas traseras (backdoors) persistentes en cl\u00fasteres de Kubernetes, as\u00ed como ejecutar un <a href=\"https:\/\/www.stepsecurity.io\/blog\/canisterworm-how-a-self-propagating-npm-worm-is-spreading-backdoors-across-the-ecosystem\" target=\"_blank\" rel=\"noopener nofollow\">CanisterWorm<\/a> autorreplicante en todo el ecosistema npm de JavaScript.<\/p>\n<p>El c\u00f3digo de los atacantes <a href=\"https:\/\/www.aikido.dev\/blog\/teampcp-stage-payload-canisterworm-iran\" target=\"_blank\" rel=\"noopener nofollow\">tiene capacidades destructivas<\/a> que eliminan cl\u00fasteres de Kubernetes y todos sus nodos si detecta la zona horaria de Teher\u00e1n o el farsi como idioma principal en el sistema vulnerado. En otras regiones, el malware simplemente roba datos con CanisterWorm.<\/p>\n<p>Seg\u00fan los expertos, se considera que m\u00e1s de 20\u00a0000 repositorios podr\u00edan estar en riesgo. Los atacantes afirman haber robado cientos de gigabytes de datos y <a href=\"https:\/\/www.bleepingcomputer.com\/news\/security\/popular-litellm-pypi-package-compromised-in-teampcp-supply-chain-attack\/\" target=\"_blank\" rel=\"noopener nofollow\">m\u00e1s de medio mill\u00f3n de cuentas<\/a>.<\/p>\n<h2>C\u00f3mo fue el ataque a Trivy<\/h2>\n<p>Para poner en riesgo a Trivy, los atacantes utilizaron credenciales robadas en un incidente anterior. Lo m\u00e1s probable es que el <a href=\"https:\/\/cybernews.com\/security\/claude-powered-ai-bot-compromises-five-github-repositories\/\" target=\"_blank\" rel=\"noopener nofollow\">incidente anterior<\/a>, que ocurri\u00f3 a fines de febrero, no se haya contenido por completo y los atacantes (el mismo grupo de TeamPCP) regresaron con un nuevo ataque. Los desarrolladores de Trivy, Aqua Security, <a href=\"https:\/\/github.com\/aquasecurity\/trivy\/discussions\/10425\" target=\"_blank\" rel=\"noopener nofollow\">especulan<\/a> que debido a que las credenciales se eliminaron de forma gradual despu\u00e9s del incidente anterior, los atacantes pudieron generar nuevos tokens de acceso para ellos mismos antes de que los antiguos que hab\u00edan sido vulnerados fueran revocados.<\/p>\n<p>Por lo tanto, TeamPCP pudo poner en riesgo las acciones de GitHub Actions utilizadas en las canalizaciones de CI\/CD. Usando credenciales con privilegios de escritura de etiquetas, los atacantes invalidaron por la fuerza 76 de las 77 etiquetas de versi\u00f3n en aquasecurity\/trivy-action y las siete etiquetas en aquasecurity\/setup-trivy, y redirigieron las versiones de confianza existentes a commits maliciosos. Esto se asemeja a las t\u00e1cticas que se vieron en la campa\u00f1a <a href=\"https:\/\/securelist.com\/shai-hulud-2-0\/118214\/\" target=\"_blank\" rel=\"noopener\">Shai-Hulud 2.0<\/a>. Como resultado, los flujos de trabajo a lo largo de la canalizaci\u00f3n comenzaron a ejecutar el c\u00f3digo de los atacantes, mientras que los metadatos de la versi\u00f3n no mostraban cambios evidentes.<\/p>\n<p>Al mismo tiempo, los atacantes publicaron un binario de Trivy infectado (v0.69.4) en los canales de distribuci\u00f3n oficiales, incluidos los lanzamientos de GitHub y los registros de contenedores.<\/p>\n<h2>LiteLLM en riesgo<\/h2>\n<p>El ataque a la popular herramienta de acceso a modelos de lenguaje LiteLLM podr\u00eda en s\u00ed mismo desencadenar una gran ola de ataques en la cadena de proyectos que la utilizan. El ataque tuvo lugar el 24 de marzo de 2026, cuando TeamPCP public\u00f3 directamente versiones maliciosas de la biblioteca (1.82.7 y 1.82.8) en PyPI. Entre las 10:39 y las 16:00 (UTC), estos paquetes vulnerados conten\u00edan malware que robaba credenciales. Estaba integrado en el archivo <em>proxy_server.py<\/em>, y la versi\u00f3n 1.82.8 tambi\u00e9n conten\u00eda un archivo <em>litellm_init<\/em> malicioso. Los datos robados se exfiltraron al servidor <em>models.litellm[.]cloud<\/em>.<\/p>\n<p>Los clientes que usaban LiteLLM Cloud o la imagen Docker oficial de LiteLLM Proxy no se vieron afectados debido al bloqueo estricto de la versi\u00f3n, mientras que los desarrolladores y los proyectos posteriores que instalaron versiones no ancladas a trav\u00e9s de pip durante la ventana de tiempo especificada se vieron vulnerados.<\/p>\n<p>En un plazo de tres horas, los paquetes maliciosos se eliminaron del repositorio de PyPI y el equipo de LiteLLM suspendi\u00f3 los nuevos lanzamientos, rot\u00f3 las credenciales y emprendi\u00f3 un proceso de respuesta a incidentes externo. Se recomienda a los equipos que usan LiteLLM en sus proyectos que comprueben de inmediato el indicador de vulneraci\u00f3n <em>litellm_init.pth<\/em> y roten de forma rutinaria todos los secretos que puedan haber sido vulnerados.<\/p>\n<h2>Caracter\u00edsticas del malware TeamPCP Cloud Stealer<\/h2>\n<p>Los atacantes a\u00f1adieron nueva l\u00f3gica a GitHub Actions y al ejecutable de Trivy al tiempo que preservaron la funcionalidad original. Los resultados del an\u00e1lisis de vulnerabilidades a trav\u00e9s de Trivy parec\u00edan normales, pero al mismo tiempo se buscaban y extra\u00edan datos valiosos. El c\u00f3digo malicioso hac\u00eda lo siguiente:<\/p>\n<ul>\n<li>realizar un reconocimiento (recopilar datos de red y variables de entorno);<\/li>\n<li>buscar tokens y credenciales para acceder a los entornos de nube de AWS y GCP;<\/li>\n<li>analizar la memoria <em>(\/proc\/*\/mem<\/em>) para extraer los secretos almacenados en la memoria de los procesos <em>Runner.Worker<\/em> y <em>Runner.Listener<\/em>;<\/li>\n<li>extraer secretos de Kubernetes (<em>\/run\/secrets\/kubernetes.io\/serviceaccount<\/em>);<\/li>\n<li>recopilar datos para conectarse a servidores de bases de datos (MySQL, PostgreSQL, MongoDB, Redis, Vault);<\/li>\n<li>recopilar cualquier otra clave de API y secretos de archivos de entorno y archivos de configuraci\u00f3n de CI\/CD (<em>.env, .json, .yml<\/em>);<\/li>\n<li>buscar webhooks para canales de Slack y Discord;<\/li>\n<li>buscar datos relacionados con las carteras de criptomonedas (variables relacionadas con la plataforma de blockchain Solana, as\u00ed como datos de <em>rpcuser<\/em> y <em>rpcpassword<\/em>).<\/li>\n<\/ul>\n<p>Los datos recopilados se cifraron y se cargaron en un servidor con un nombre similar al de los desarrolladores de Trivy (<em>scan.aquasecurtiy[.]org<\/em>). Como mecanismo de respaldo, los atacantes proporcionaron un m\u00e9todo para cargar datos a un repositorio llamado <em>docs-tpcp<\/em>.<\/p>\n<p>El ataque a CheckMarx y LiteLLM utiliz\u00f3 una t\u00e1ctica similar con otros dominios de typosquatting: <em>models.litellm[.]cloud<\/em> y <em>checkmarx[.]zone<\/em>.<\/p>\n<p>Puedes encontrar un an\u00e1lisis t\u00e9cnico detallado del malware, junto con los indicadores de vulneraci\u00f3n, en el art\u00edculo de nuestro experto <a href=\"https:\/\/securelist.com\/litellm-supply-chain-attack\/119257\/\" target=\"_blank\" rel=\"noopener\">en el blog de Securelist<\/a>.<\/p>\n<h2>Estrategias de respuesta y defensa para CVE-2026-33634<\/h2>\n<p>Ya no son suficientes las comprobaciones basadas en firmas existentes y el an\u00e1lisis de dependencias en los registros p\u00fablicos, ya que el c\u00f3digo malicioso se insert\u00f3 directamente en acciones firmadas de confianza y evit\u00f3 que lo detecten hasta que se aplic\u00f3 la supervisi\u00f3n de comportamiento. Las canalizaciones de CI\/CD se han convertido en el \u201cnuevo per\u00edmetro\u201d de seguridad.<\/p>\n<p><strong>Acciones inmediatas. <\/strong>Aseg\u00farate de que todos los flujos de trabajo utilicen versiones seguras (Trivy binary 0.69.3, trivy-action 0.35.0, setup-trivy 0.2.6).<\/p>\n<p>Los administradores de la canalizaci\u00f3n de CI\/CD y los equipos de seguridad deben revisar inmediatamente sus dependencias con las soluciones Checkmarx (kics-github-action, ast-github-action) y Trivy (setup-trivy y trivy-action). Si los flujos de trabajo hicieron referencia a una etiqueta de versi\u00f3n en lugar de a un hash SHA espec\u00edfico, revisa detenidamente los registros de ejecuci\u00f3n de tu flujo de trabajo durante el ataque activo a la cadena de suministro.<\/p>\n<p>Tambi\u00e9n debes verificar los registros de tu red para ver si hay tr\u00e1fico hacia los dominios <em>scan.aquasecurtiy[.]org<\/em>, <em>checkmarx[.]zone<\/em> y <em>models.litellm[.]cloud<\/em>. La presencia de este tr\u00e1fico indica que los datos confidenciales se han exfiltrado con \u00e9xito.<\/p>\n<p>Si ha aparecido un repositorio llamado docs-tpcp en el GitHub de la organizaci\u00f3n, esto tambi\u00e9n puede indicar que ha habido una filtraci\u00f3n de datos exitosa.<\/p>\n<p>Revisa los hosts y los cl\u00fasteres en busca de se\u00f1ales de vulneraci\u00f3n: la presencia de archivos ~\/.config\/sysmon\/sysmon.py o pods sospechosos en Kubernetes, etc.<\/p>\n<p>Borra la cach\u00e9 y realiza un inventario de los m\u00f3dulos de PyPI, comprueba si hay maliciosos y vuelve a versiones anteriores limpias.<\/p>\n<p>En cualquier caso, deber\u00edas realizar una <a href=\"https:\/\/latam.kaspersky.com\/enterprise-security\/compromise-assessment?icid=es-LA_kdailyplacehold_acq_ona_smm__onl_b2b_kasperskydaily_wpplaceholder_______\" target=\"_blank\" rel=\"noopener\">b\u00fasqueda de amenazas proactiva<\/a>, asumiendo que el ataque a los sistemas ha sido exitoso y que los atacantes han avanzado r\u00e1pidamente dentro de los sistemas afectados.<\/p>\n<p>Se recomienda restaurar los entornos afectados a partir de copias de seguridad verificadas.<\/p>\n<p><strong>Fijaci\u00f3n de dependencias y administraci\u00f3n de secretos. <\/strong>Aseg\u00farate de que las versiones de dependencia exactas est\u00e9n fijadas mediante hashes criptogr\u00e1ficos en todas las canalizaciones y Dockerfiles. Recomendamos hacer la transici\u00f3n de tokens de larga duraci\u00f3n a credenciales de corta duraci\u00f3n usando una herramienta de administrador de secretos e implementar integraciones de OIDC donde sea compatible. Minimiza la inserci\u00f3n de secretos en el entorno de ejecuci\u00f3n (hazlo solo cuando sea absolutamente necesario). Aseg\u00farate de que los secretos no se almacenen en un disco o en archivos temporales, y que no se reutilicen en diferentes procesos.<\/p>\n<p>Rota todas las credenciales que puedan haber sido vulneradas: claves de API, variables de entorno, claves SSH, tokens de cuentas de servicio de Kubernetes y otros secretos.<\/p>\n<p><strong>Otras medidas de seguridad. <\/strong>Permite solo acciones de GitHub Actions de una lista aprobada por la organizaci\u00f3n; bloquea los procesos nuevos y no verificados. Configura <em>GITHUB_TOKEN<\/em> y otras claves de acceso de acuerdo con el principio de privilegio m\u00ednimo. No concedas permisos de escritura a menos que sea absolutamente necesario.<\/p>\n<p>Para mejorar la seguridad de GitHub Actions, hay varias herramientas de c\u00f3digo abierto disponibles:<\/p>\n<ul>\n<li>zizmor: una herramienta para el an\u00e1lisis est\u00e1tico y la detecci\u00f3n de errores de configuraci\u00f3n en GitHub Actions.<\/li>\n<li>gato y Gato-X: dos versiones de una herramienta que ayuda a identificar canalizaciones con estructuras vulnerables.<\/li>\n<li>allstar: una aplicaci\u00f3n de GitHub, desarrollada por OpenSSF, para configurar y hacer cumplir las directivas de seguridad en las organizaciones y los repositorios de GitHub.<\/li>\n<\/ul>\n<p>Si deseas obtener m\u00e1s informaci\u00f3n sobre los ataques a la cadena de suministro, te invitamos a consultar nuestro informe anal\u00edtico\u00a0<a href=\"https:\/\/kas.pr\/k8rs\" target=\"_blank\" rel=\"noopener\">Supply chain reaction: securing the global digital ecosystem in an age of interdependence<\/a>. Se basa en los conocimientos de expertos t\u00e9cnicos y revela con qu\u00e9 frecuencia las organizaciones se enfrentan a riesgos de la cadena de suministro y de las relaciones de confianza, d\u00f3nde persisten las brechas de protecci\u00f3n y qu\u00e9 estrategias emplear para mejorar la resiliencia frente a este tipo de amenazas.<\/p>\n<input type=\"hidden\" class=\"category_for_banner\" value=\"mdr\"><input type=\"hidden\" class=\"placeholder_for_banner\" data-cat_id=\"mdr\" value=\"27123\">\n","protected":false},"excerpt":{"rendered":"<p>C\u00f3mo las soluciones de seguridad de c\u00f3digo abierto se han convertido en el punto de partida para un ataque masivo a otras aplicaciones populares y qu\u00e9 deber\u00edan hacer las organizaciones que las utilizan.<\/p>\n","protected":false},"author":2706,"featured_media":29086,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[3145],"tags":[638,5967,3377,3839,192,647],"class_list":{"0":"post-29085","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-threats","8":"tag-amenazas","9":"tag-ataques-a-la-cadena-de-suministro","10":"tag-cadena-de-suministro","11":"tag-codigo-abierto","12":"tag-tecnologia","13":"tag-vulnerabilidades"},"hreflang":[{"hreflang":"es-mx","url":"https:\/\/latam.kaspersky.com\/blog\/critical-supply-chain-attack-trivy-litellm-checkmarx-teampcp\/29085\/"},{"hreflang":"en-in","url":"https:\/\/www.kaspersky.co.in\/blog\/critical-supply-chain-attack-trivy-litellm-checkmarx-teampcp\/30309\/"},{"hreflang":"en-ae","url":"https:\/\/me-en.kaspersky.com\/blog\/critical-supply-chain-attack-trivy-litellm-checkmarx-teampcp\/25363\/"},{"hreflang":"en-gb","url":"https:\/\/www.kaspersky.co.uk\/blog\/critical-supply-chain-attack-trivy-litellm-checkmarx-teampcp\/30159\/"},{"hreflang":"ru","url":"https:\/\/www.kaspersky.ru\/blog\/critical-supply-chain-attack-trivy-litellm-checkmarx-teampcp\/41587\/"},{"hreflang":"tr","url":"https:\/\/www.kaspersky.com.tr\/blog\/critical-supply-chain-attack-trivy-litellm-checkmarx-teampcp\/14420\/"},{"hreflang":"x-default","url":"https:\/\/www.kaspersky.com\/blog\/critical-supply-chain-attack-trivy-litellm-checkmarx-teampcp\/55510\/"},{"hreflang":"fr","url":"https:\/\/www.kaspersky.fr\/blog\/critical-supply-chain-attack-trivy-litellm-checkmarx-teampcp\/23768\/"},{"hreflang":"pt-br","url":"https:\/\/www.kaspersky.com.br\/blog\/critical-supply-chain-attack-trivy-litellm-checkmarx-teampcp\/24855\/"},{"hreflang":"de","url":"https:\/\/www.kaspersky.de\/blog\/critical-supply-chain-attack-trivy-litellm-checkmarx-teampcp\/33335\/"},{"hreflang":"ru-kz","url":"https:\/\/blog.kaspersky.kz\/critical-supply-chain-attack-trivy-litellm-checkmarx-teampcp\/30454\/"},{"hreflang":"en-au","url":"https:\/\/www.kaspersky.com.au\/blog\/critical-supply-chain-attack-trivy-litellm-checkmarx-teampcp\/36042\/"},{"hreflang":"en-za","url":"https:\/\/www.kaspersky.co.za\/blog\/critical-supply-chain-attack-trivy-litellm-checkmarx-teampcp\/35701\/"}],"acf":[],"banners":"","maintag":{"url":"https:\/\/latam.kaspersky.com\/blog\/tag\/cadena-de-suministro\/","name":"cadena de suministro"},"_links":{"self":[{"href":"https:\/\/latam.kaspersky.com\/blog\/wp-json\/wp\/v2\/posts\/29085","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/latam.kaspersky.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/latam.kaspersky.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/latam.kaspersky.com\/blog\/wp-json\/wp\/v2\/users\/2706"}],"replies":[{"embeddable":true,"href":"https:\/\/latam.kaspersky.com\/blog\/wp-json\/wp\/v2\/comments?post=29085"}],"version-history":[{"count":3,"href":"https:\/\/latam.kaspersky.com\/blog\/wp-json\/wp\/v2\/posts\/29085\/revisions"}],"predecessor-version":[{"id":29089,"href":"https:\/\/latam.kaspersky.com\/blog\/wp-json\/wp\/v2\/posts\/29085\/revisions\/29089"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/latam.kaspersky.com\/blog\/wp-json\/wp\/v2\/media\/29086"}],"wp:attachment":[{"href":"https:\/\/latam.kaspersky.com\/blog\/wp-json\/wp\/v2\/media?parent=29085"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/latam.kaspersky.com\/blog\/wp-json\/wp\/v2\/categories?post=29085"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/latam.kaspersky.com\/blog\/wp-json\/wp\/v2\/tags?post=29085"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}