Microsoft confirmó la eliminación temporal de varios repositorios en GitHub durante la investigación de un incidente relacionado con la compromisión de proyectos open source de la compañía. Según se informa, se inyectó en el código un infostealer dirigido a las estaciones de trabajo de desarrolladores y a entornos CI/CD. El incidente forma parte de una amplia campaña de ataque contra la cadena de suministro de software, con nombre en clave Miasma. Los desarrolladores que utilicen los paquetes de PyPI que se enumeran más abajo, así como proyectos open source de Microsoft en GitHub, deben revisar de inmediato sus dependencias y auditar los secretos en los entornos afectados.
Respuesta Microsoft y alcance del incidente
Según un representante de Microsoft, parte de los repositorios se restauraron tras su revisión, mientras que otros pueden seguir inaccesibles hasta que concluya la investigación. La compañía notificó a un número limitado de clientes que podrían haber descargado contenido de los repositorios comprometidos y declaró estar preparada para contactar con los afectados a través de los canales oficiales de soporte si fueran necesarias acciones adicionales.
Entre los proyectos afectados figura, según la información disponible, el paquete durabletask, una biblioteca en Python que fue comprometida para entregar un infostealer orientado a sistemas Linux. Microsoft describió sus acciones como medidas para proteger a los clientes y al ecosistema en su conjunto.
Evolución de los métodos de entrega de la carga útil
Según la investigación de Socket, la campaña evoluciona activamente e incluye varias oleadas: Mini Shai-Hulud, Miasma y Hades. La oleada más reciente afectó a 23 paquetes adicionales en PyPI, y los atacantes están experimentando con distintos mecanismos de entrega de código malicioso.
Las versiones tempranas de los paquetes maliciosos empleaban hooks de auto‑carga ejecutables .pth para arrancar el entorno Bun y ejecutar un JavaScript infostealer ofuscado. En las variantes más recientes se emplean enfoques fundamentalmente distintos:
- Extensiones nativas .abi3.so troyanizadas — el infostealer se ejecuta al importar el paquete en un proyecto Python
- Cargador .pth modificado — busca la carga útil
_index.jsen las rutas desys.pathen lugar de incluirla directamente en la distribución (wheel)
La separación entre el cargador y la carga útil, según los investigadores de Socket, dificulta considerablemente la detección mediante análisis estático, ya que cada componente por separado parece menos sospechoso. Además, el análisis de la carga útil de Miasma reveló la capacidad de activar la ejecución automática de código al abrir un repositorio en un IDE o en herramientas de desarrollo con soporte de IA.
Merece especial atención la técnica de evasión de escáneres de IA detectada en los paquetes de bioinformática: en los comentarios de bloque de JavaScript se ha incrustado una adversarial prompt injection, capaz de confundir a los sistemas automatizados de análisis y a los asistentes de IA de los analistas. Esta técnica ya había sido descrita anteriormente por investigadores de StepSecurity.
Paquetes afectados
La campaña abarca tres categorías de paquetes maliciosos: bibliotecas para bioinformática, paquetes con temática de IA y Model Context Protocol (MCP), así como imitaciones de bibliotecas populares mediante typosquatting. Lista completa de versiones comprometidas, según los investigadores:
- Bioinformática: dreamgen 1.8.1, embiggen 0.11.97, ensmallen 0.8.101, gpsea 0.9.14, phenopacket-store-toolkit 0.1.7, ppkt2synergy 0.1.1, pyphetools 0.9.120
- IA y MCP: instructor-mcp 1.15.2/1.15.3, langchain-core-mcp 1.4.2/1.4.3, openai-mcp 2.41.1/2.41.2, ray-mcp-server 0.2.1, tiktoken-mcp 0.13.1/0.13.2
- Typosquatting y otros: rsquests 2.34.3 (imitación de requests), tlask 3.1.4 y rlask 3.1.7 (imitación de flask), mem8 6.0.1, mflux-streamlit 0.0.3/0.0.4, orchestr8-platform 3.3.2
La elección de los objetivos no es casual. Las bibliotecas de bioinformática se utilizan en flujos de trabajo científicos —aprendizaje basado en grafos, fenotipado de pacientes, trabajo con fenopackets—. Los paquetes relacionados con MCP explotan el creciente interés por la integración de modelos de lenguaje con herramientas externas. Los paquetes de typosquatting se aprovechan de los errores tipográficos al instalar mediante pip install.
Evaluación del impacto
Independientemente del método de entrega, el objetivo final del código malicioso es el mismo: recopilar secretos (tokens, claves API, credenciales) de las estaciones de trabajo de los desarrolladores y de los entornos CI/CD, para exfiltrarlos posteriormente a un repositorio público de GitHub. Esto genera un riesgo en cascada: los secretos comprometidos abren acceso a sistemas de producción, infraestructura en la nube y servicios internos de las organizaciones.
Están especialmente expuestos al riesgo:
- Organizaciones científicas y de investigación que utilizan bibliotecas de bioinformática en Python
- Equipos de desarrollo que experimentan con la integración de MCP y modelos de lenguaje
- Cualquier proyecto que instale dependencias de forma automatizada sin verificación de hashes
Recomendaciones de respuesta
- Revise las dependencias: audite los archivos
requirements.txt,pyproject.tomly los lockfiles en busca de los paquetes y versiones enumerados. Utilicepip listypip show <package>para comprobar las versiones instaladas - Rotación de secretos: si cualquiera de los paquetes indicados se instaló en su entorno, cambie de inmediato todos los tokens, claves API y credenciales accesibles desde ese entorno, incluidos los secretos de CI/CD
- Compruebe los repositorios de Microsoft: si ha clonado o utilizado proyectos open source de Microsoft desde GitHub en las últimas semanas, espere la notificación oficial de Microsoft o compruebe el estado de los repositorios específicos
- Refuerce el control de dependencias: implante la verificación de hashes de los paquetes durante la instalación (
pip install --require-hashes), utilice herramientas de Software Composition Analysis (SCA) y limite la instalación automática de paquetes no verificados en CI/CD - Revise la presencia de archivos .pth y .abi3.so: en los entornos virtuales de Python, busque archivos
.pthsospechosos y extensiones nativas.abi3.soque pudieran haber sido instaladas por los paquetes maliciosos
Como señaló el investigador de Socket Kirill Boychenko, la rama Hades de la campaña Shai-Hulud y Miasma constituye un ataque a la cadena de suministro en rápida evolución, y no un incidente aislado relacionado con un paquete concreto. La separación entre cargador y carga útil en la variante de langchain-core-mcp demuestra que los atacantes están adaptando deliberadamente sus métodos para eludir los mecanismos de detección existentes. La prioridad debe ser auditar las dependencias y rotar todos los secretos en los entornos donde pudieran haberse instalado los paquetes mencionados.