Tienda FTTH

Tienda FFTH

Entradas Mensuales

Síguenos en:

Canal Oficial Telegram de elhacker.NET Grupo Facebook elhacker.NET Twitter elhacker.NET Canal Youtube elhacker.NET Comunidad Steam: Grupo elhacker.NET Mastodon

Entradas populares

PostHeaderIcon Paquete PyPI de Telnyx con 742.000 descargas comprometido en ataque a la cadena de suministro de TeamPCP


El paquete oficial de Telnyx en PyPI fue comprometido esta mañana como parte de una campaña de cadena de suministro en escalada, orquestada durante semanas por el grupo de actores de amenazas TeamPCP. Las versiones maliciosas 4.87.1 y 4.87.2 del paquete *telnyx* fueron subidas a PyPI a las 03:51 UTC del 27 de marzo de 2026, con la carga útil ejecutándose silenciosamente al momento de la importación






El SDK oficial de Python de Telnyx en PyPI fue comprometido esta mañana como parte de una campaña de cadena de suministro en escalada, orquestada durante semanas por el grupo de actores de amenazas TeamPCP.

Las versiones maliciosas 4.87.1 y 4.87.2 del paquete telnyx se subieron a PyPI a las 03:51 UTC del 27 de marzo de 2026, con la carga útil ejecutándose silenciosamente al momento de la importación en sistemas Windows y Linux/macOS.

Las organizaciones que usen estas versiones deben tratar los entornos afectados como totalmente comprometidos e rotar inmediatamente todas las credenciales expuestas.

El Ataque a la Cadena de Suministro de TeamPCP

El compromiso de Telnyx no es un evento aislado: es el último eslabón en una campaña de cadena de suministro de encadenamiento de credenciales que TeamPCP ha estado ejecutando desde el 19 de marzo de 2026.

El patrón operativo del grupo es preciso y repetible: comprometer una herramienta de seguridad o desarrollo confiable, robar las credenciales de CI/CD que expone, usar esas credenciales para envenenar el siguiente objetivo en la cadena, recolectar los secretos que el nuevo entorno contenga y repetir el proceso.

La línea de tiempo de la campaña es la siguiente:

  • 19 de marzo: El escáner de vulnerabilidades de código abierto Trivy de Aqua Security fue backdoorizado, asignándosele el CVE-2026-33634 (CVSS 9.4). TeamPCP forzó la subida de binarios maliciosos a 75 de 77 etiquetas de trivy-action y 7 de setup-trivy, recolectando secretos de CI/CD —incluyendo tokens de npm, credenciales de Docker Hub y tokens de publicación en PyPI— de cada pipeline que ejecutaba Trivy sin fijar versiones. Para el final del día, 44 repositorios de GitHub de Aqua Security fueron renombrados con el prefijo tpcp-docs-.
  • 20 de marzo: Usando tokens de npm robados de las víctimas de Trivy, TeamPCP desplegó el backdoor CanisterWorm en más de 46 paquetes de npm. El gusano automatizó el proceso de "token-a-compromiso": dado un token de npm robado, enumeraba todos los paquetes publicables, incrementaba versiones y publicaba releases maliciosos en ámbitos completos en menos de 60 segundos.
  • 22 de marzo: Investigadores observaron a TeamPCP desplegando esteganografía en archivos WAV para entregar cargas útiles en una variante de limpiador de Kubernetes. Una carga maliciosa fue incrustada dentro de archivos de audio .wav —disfrazando datos binarios como frames de audio válidos—, marcando el debut de una técnica que reaparecería cinco días después en el compromiso de Telnyx.
  • 23 de marzo: Las GitHub Actions kics-github-action y ast-github-action de Checkmarx fueron comprometidas, junto con dos extensiones de OpenVSX (cx-dev-assist 1.7.0 y ast-results 2.53.0). El atacante secuestró 35 etiquetas entre las 12:58 y 16:50 UTC usando un nuevo dominio de C2, checkmarx[.]zone, suplantando la marca de Checkmarx. El código malicioso fue eliminado aproximadamente tres horas después.
  • 24 de marzo: Las versiones 1.82.7 y 1.82.8 de LiteLLM se publicaron en PyPI usando credenciales robadas del pipeline de CI/CD de LiteLLM, que a su vez ejecutaba Trivy sin fijar versiones. LiteLLM registra aproximadamente 95 millones de descargas mensuales y se despliega ampliamente como puerta de enlace centralizada para LLM, con acceso a credenciales de OpenAI, Anthropic, AWS Bedrock, GCP Vertex AI y más. PyPI puso en cuarentena los paquetes en aproximadamente tres horas. El C2 era models[.]litellm[.]cloud.
  • 27 de marzo (hoy): Telnyx —con 742,000 descargas en el último mes— se convierte en la última víctima.

La Carga Útil de Telnyx: Ejecución al Momento de la Importación

Según el aviso de Akidio, la inyección maliciosa en el paquete Telnyx reside en telnyx/_client.py y se ejecuta al momento de la importación. No hay un hook de instalación que desactivar ni un script postinstall que bloquear: el malware se ejecuta en el instante en que un desarrollador o aplicación llama a import telnyx. El ataque se bifurca en dos rutas de ejecución dependiendo del sistema operativo del host.

En Windows, la carga útil descarga hangup.wav desde el C2 del atacante en 83[.]142[.]209[.]203:8080. Los datos de los frames del archivo de audio contienen un ejecutable codificado en base64 y ofuscado con XOR.

Tras decodificarlo, el dropper escribe el ejecutable en %APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup\msbuild.exe, asegurando que se ejecute silenciosamente en cada inicio de sesión del sistema. Un archivo oculto .lock impone un enfriamiento de 12 horas para reducir la superficie de detección.

En Linux y macOS, un script Python de segunda etapa completo está hardcodeado como un blob en base64 en _client.py en la línea 459. Este script descarga ringtone.wav desde el mismo C2, decodifica un script recolector de tercera etapa desde los frames del WAV usando la misma técnica XOR y lo ejecuta mediante sys.executable canalizado a stdin.

La salida recolectada se cifra con AES-256-CBC; la clave de sesión se envuelve con una clave pública RSA-4096 (OAEP) en poder del atacante, asegurando que solo él pueda descifrar los datos exfiltrados. El paquete de exfiltración se transmite mediante HTTP POST con el encabezado X-Filename: tpcp.tar.gz.

La Técnica de Esteganografía en WAV

El mecanismo de entrega de la carga útil merece especial atención. En lugar de descargar un binario crudo o un script Python —ambos activarían alarmas de filtrado de contenido e inspección de URLs—, TeamPCP entrega sus cargas útiles disfrazadas como archivos de audio .wav. Los archivos son estructuralmente válidos y superan las verificaciones de tipo MIME. El contenido malicioso se oculta dentro de los datos de los frames de audio usando la siguiente lógica de decodificación:

with wave.open(wf, 'rb') as w:
    b = base64.b64decode(w.readframes(w.getnframes()))
    s, m = b[:8], b[8:]
    payload = bytes([m[i] ^ s[i % len(s)] for i in range(len(m))])

Los primeros 8 bytes de los datos de frames decodificados sirven como clave XOR; el resto es la carga útil ofuscada. Los filtros de seguridad basados en contenido que inspeccionan el archivo como audio no encontrarán nada anómalo.

Esta técnica se observó por primera vez en el limpiador de Kubernetes de TeamPCP el 22 de marzo. Su reutilización en el paquete Telnyx solo cinco días después —transportando tanto el dropper de Windows como el infostealer de Linux— confirma que TeamPCP la ha estandarizado como parte de su kit de herramientas.

Indicadores de Compromiso

CategoríaIndicador
Paquete maliciosotelnyx==4.87.1 (SHA256: 7321caa303fe96ded0492c747d2f353c4f7d17185656fe292ab0a59e2bd0b8d9)
Paquete maliciosotelnyx==4.87.2 (SHA256: cd08115806662469bbedec4b03f8427b97c8a4b3bc1442dc18b72b4e19395fe3)
Servidor C283[.]142[.]209[.]203:8080
URL de carga útil para Windowshxxp://83[.]142[.]209[.]203:8080/hangup.wav
URL de carga útil para Linux/macOShxxp://83[.]142[.]209[.]203:8080/ringtone.wav
Punto de exfiltraciónhxxp://83[.]142[.]209[.]203:8080/ (POST)
Encabezado de exfiltraciónX-Filename: tpcp.tar.gz
Ruta de persistencia en Windows%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup\msbuild.exe
Archivo de bloqueo en Windows%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup\msbuild.exe.lock

Pasos de Mitigación

Las organizaciones que hayan instalado telnyx==4.87.1 o telnyx==4.87.2 deben tomar las siguientes acciones sin demora:

  1. Elimina las versiones maliciosas — Retrocede a telnyx==4.87.0 y fija explícitamente la versión en todos los archivos de dependencias.
  2. Trata el entorno como comprometido — Rota todas las claves API, credenciales de bases de datos, claves SSH, tokens de proveedores en la nube y cualquier otro secreto accesible desde la máquina afectada o el pipeline de CI/CD.
  3. Específico para Windows — Verifica la presencia de msbuild.exe en %APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup\ y elimínalo junto con cualquier archivo .lock asociado.
  4. Monitoreo de red — Bloquea y monitorea todo el tráfico HTTP saliente hacia 83[.]142[.]209[.]203:8080.
  5. Audita los pipelines de CI/CD — Revisa si algún pipeline de construcción que ejecutaba las versiones afectadas de Telnyx también tenía acceso a credenciales para otros paquetes o plataformas, ya que el comportamiento documentado de TeamPCP es usar cada compromiso para habilitar el siguiente.

Dada la evaluación del FBI tras el compromiso de LiteLLM —que anticipa "un aumento en divulgaciones de brechas, intrusiones posteriores y intentos de extorsión" en las próximas semanas—, las organizaciones que integran paquetes de infraestructura de telecomunicaciones o IA basados en Python deben auditar urgentemente sus árboles de dependencias y aplicar el fijado de versiones en todos los entornos.


Fuentes:
https://cybersecuritynews.com/telnyx-pypi-package-compromised/

0 comentarios :

Publicar un comentario

Los comentarios pueden ser revisados en cualquier momento por los moderadores.

Serán publicados aquellos que cumplan las siguientes condiciones:
- Comentario acorde al contenido del post.
- Prohibido mensajes de tipo SPAM.
- Evite incluir links innecesarios en su comentario.
- Contenidos ofensivos, amenazas e insultos no serán permitidos.

Debe saber que los comentarios de los lectores no reflejan necesariamente la opinión del STAFF.