{"id":133,"date":"2026-03-17T02:13:32","date_gmt":"2026-03-17T02:13:32","guid":{"rendered":"https:\/\/escudodigital.uy\/?p=133"},"modified":"2026-03-17T02:13:33","modified_gmt":"2026-03-17T02:13:33","slug":"glassworm-compromete-repositorios-de-python-en-github-usando-tokens-robados-para-inyectar-malware","status":"publish","type":"post","link":"https:\/\/escudodigital.uy\/index.php\/2026\/03\/17\/glassworm-compromete-repositorios-de-python-en-github-usando-tokens-robados-para-inyectar-malware\/","title":{"rendered":"GlassWorm compromete repositorios de Python en GitHub usando tokens robados para inyectar malware"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Una nueva campa\u00f1a de malware conocida como <strong>GlassWorm<\/strong> est\u00e1 detr\u00e1s de un sofisticado ataque a la cadena de suministro de software que ha comprometido cientos de repositorios de Python en GitHub mediante el uso de <strong>tokens robados de desarrolladores<\/strong>. El objetivo de los atacantes es introducir c\u00f3digo malicioso que se ejecuta autom\u00e1ticamente cuando los usuarios instalan o ejecutan los proyectos afectados.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Seg\u00fan un informe de la empresa de seguridad de la cadena de suministro de software <strong>StepSecurity<\/strong>, los ataques comenzaron al menos el <strong>8 de marzo de 2026<\/strong> y afectan a distintos tipos de proyectos Python, incluidos <strong>aplicaciones Django, c\u00f3digo de investigaci\u00f3n en machine learning, dashboards de Streamlit y paquetes distribuidos en PyPI<\/strong>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">C\u00f3mo funciona el ataque<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">La campa\u00f1a, denominada <strong>ForceMemo<\/strong>, se basa en el robo de credenciales de GitHub para modificar directamente repositorios leg\u00edtimos. Una vez obtenidos los tokens de acceso, los atacantes <strong>reescriben el historial de Git<\/strong> y realizan un <em>force push<\/em> para a\u00f1adir c\u00f3digo malicioso sin que sea evidente para los desarrolladores.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El proceso de ataque se desarrolla en cuatro fases principales:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Compromiso inicial de los desarrolladores<\/strong><br>Los atacantes infectan los sistemas mediante extensiones maliciosas de <strong>VS Code<\/strong> y <strong>Cursor<\/strong>, que incluyen componentes dise\u00f1ados para robar secretos como los tokens de GitHub.<\/li>\n\n\n\n<li><strong>Acceso y modificaci\u00f3n de repositorios<\/strong><br>Con las credenciales robadas, los ciberdelincuentes realizan <em>force push<\/em> en los repositorios asociados a la cuenta comprometida, a\u00f1adiendo malware ofuscado en archivos clave como <strong>setup.py, main.py o app.py<\/strong>.<\/li>\n\n\n\n<li><strong>Carga \u00fatil oculta en Base64<\/strong><br>El c\u00f3digo malicioso se agrega al final de los archivos Python. Este incluye comprobaciones similares a las usadas por GlassWorm para verificar si el sistema utiliza configuraci\u00f3n regional rusa. En ese caso, el malware no se ejecuta.<\/li>\n\n\n\n<li><strong>Descarga de payloads adicionales<\/strong><br>Si el sistema no cumple esa condici\u00f3n, el malware consulta el campo <em>memo<\/em> de transacciones asociadas a una <strong>billetera de Solana<\/strong> previamente vinculada a GlassWorm para obtener la URL del payload final. Desde all\u00ed descarga scripts, incluido <strong>JavaScript cifrado dise\u00f1ado para robar criptomonedas y datos sensibles<\/strong>.<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Infraestructura activa desde 2025<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Los investigadores descubrieron que la infraestructura de comando y control (C2) asociada al ataque ya estaba operativa <strong>desde el 27 de noviembre de 2025<\/strong>, m\u00e1s de tres meses antes de que comenzaran las inyecciones en repositorios de GitHub.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La direcci\u00f3n de la billetera utilizada por los atacantes registra <strong>50 transacciones<\/strong>, con actualizaciones frecuentes de la URL del payload, en ocasiones <strong>varias veces al d\u00eda<\/strong>, lo que demuestra un mantenimiento activo de la campa\u00f1a.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">M\u00faltiples olas de ataques<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Otras firmas de seguridad tambi\u00e9n han detectado variaciones de GlassWorm. Investigadores de <strong>Socket<\/strong> identificaron una nueva versi\u00f3n que mejora la evasi\u00f3n utilizando mecanismos como <strong>extensionPack<\/strong> y <strong>extensionDependencies<\/strong> para distribuir malware a trav\u00e9s de dependencias.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Por su parte, <strong>Aikido Security<\/strong> atribuy\u00f3 al mismo actor una campa\u00f1a masiva que comprometi\u00f3 <strong>m\u00e1s de 151 repositorios de GitHub<\/strong>, ocultando c\u00f3digo malicioso mediante <strong>caracteres Unicode invisibles<\/strong>. En todos los casos, el payload final tambi\u00e9n se obten\u00eda desde la misma billetera de Solana, lo que sugiere que el actor ha ejecutado <strong>varias oleadas coordinadas de ataques<\/strong>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Un m\u00e9todo de ataque in\u00e9dito en la cadena de suministro<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Los expertos destacan que la t\u00e9cnica empleada para inyectar malware es especialmente peligrosa. Al usar <strong>force push para reescribir el historial del repositorio<\/strong>, el atacante conserva el <strong>mensaje del commit, el autor y la fecha original<\/strong>, lo que dificulta detectar cambios maliciosos.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Adem\u00e1s, el m\u00e9todo <strong>no deja rastro visible de pull requests o commits sospechosos en la interfaz de GitHub<\/strong>, lo que lo convierte en una de las t\u00e1cticas m\u00e1s sigilosas observadas hasta ahora en ataques a la cadena de suministro de software.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Los investigadores advierten que cualquier usuario que <strong>clone o instale dependencias desde repositorios comprometidos<\/strong> podr\u00eda ejecutar el malware sin saberlo, lo que ampl\u00eda el alcance potencial del ataque a miles de desarrolladores y proyectos que dependen de estos paquetes.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Una nueva campa\u00f1a de malware conocida como GlassWorm est\u00e1 detr\u00e1s de un sofisticado ataque a la cadena de<\/p>\n","protected":false},"author":2,"featured_media":135,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-133","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-news"],"_links":{"self":[{"href":"https:\/\/escudodigital.uy\/index.php\/wp-json\/wp\/v2\/posts\/133","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/escudodigital.uy\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/escudodigital.uy\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/escudodigital.uy\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/escudodigital.uy\/index.php\/wp-json\/wp\/v2\/comments?post=133"}],"version-history":[{"count":1,"href":"https:\/\/escudodigital.uy\/index.php\/wp-json\/wp\/v2\/posts\/133\/revisions"}],"predecessor-version":[{"id":136,"href":"https:\/\/escudodigital.uy\/index.php\/wp-json\/wp\/v2\/posts\/133\/revisions\/136"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/escudodigital.uy\/index.php\/wp-json\/wp\/v2\/media\/135"}],"wp:attachment":[{"href":"https:\/\/escudodigital.uy\/index.php\/wp-json\/wp\/v2\/media?parent=133"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/escudodigital.uy\/index.php\/wp-json\/wp\/v2\/categories?post=133"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/escudodigital.uy\/index.php\/wp-json\/wp\/v2\/tags?post=133"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}