TeamPCP Secuestra el Paquete Telnyx de PyPI, Ocultando Malware en Archivos de Audio WAV
El paquete **Telnyx** en el Python Package Index (PyPI) fue comprometido por el grupo de hackers **TeamPCP**, quienes subieron versiones maliciosas diseñadas para distribuir malware que roba credenciales. El malware está inteligentemente oculto dentro de archivos de audio WAV, marcando un sofisticado ataque a la cadena de suministro.

Las firmas modernas de seguridad de aplicaciones **Aikido**, **Socket** y **Endor Labs** detectaron el ataque a la cadena de suministro y lo atribuyeron a TeamPCP, citando patrones de exfiltración y claves RSA similares observados en incidentes previos.
TeamPCP ha sido vinculado a varios ataques recientes a la cadena de suministro, incluyendo aquellos dirigidos al escáner de vulnerabilidades **Trivy** de **Aqua Security** y la biblioteca Python de código abierto **LiteLLM**, así como ataques de tipo wiper dirigidos a sistemas iraníes.
## Detalles del Paquete Malicioso
Temprano hoy, el actor de amenazas publicó las versiones secuestradas **4.87.1** y **4.87.2** del paquete Telnyx. Estas versiones maliciosas despliegan malware en sistemas Linux y macOS que roba claves SSH, credenciales, tokens de nube, billeteras de criptomonedas, variables de entorno y otros datos sensibles.
En sistemas Windows, el malware está diseñado para persistencia, ubicándose en la carpeta de inicio para ejecutarse en cada inicio de sesión.
El paquete **Telnyx PyPI** es el Kit de Desarrollo de Software (SDK) oficial de Python que permite a los desarrolladores integrar servicios de comunicación de Telnyx, como VoIP, mensajería (SMS, MMS, WhatsApp), fax y conectividad IoT, en sus aplicaciones. El paquete cuenta con más de 740,000 descargas mensuales en PyPI, lo que destaca su uso generalizado.
## Método de Compromiso
Los investigadores de seguridad sospechan que los atacantes obtuvieron acceso utilizando credenciales robadas de la cuenta de publicación en el registro PyPI.
Inicialmente, TeamPCP lanzó la versión 4.87.1 de Telnyx a las 03:51 UTC, pero el payload no era funcional. Corrigieron este error aproximadamente una hora después, a las 04:07 UTC, con el lanzamiento de la versión 4.87.2 de Telnyx.
El código malicioso reside dentro del archivo `telnyx/_client.py`, que se ejecuta automáticamente al importarlo, al mismo tiempo que permite que las clases legítimas del SDK funcionen según lo previsto.
## Análisis Técnico
En sistemas Linux y macOS, el payload inicia un proceso separado que descarga un payload de segunda etapa disfrazado como un archivo de audio WAV (`ringtone.wav`) desde un servidor remoto de comando y control (C2).

Al emplear esteganografía, los atacantes incrustaron código malicioso dentro de los marcos de datos del archivo sin alterar las propiedades del audio. El payload se extrae utilizando una simple rutina de descifrado basada en XOR y se ejecuta en memoria para recolectar datos sensibles de los hosts infectados.
Si se detecta **Kubernetes** en la máquina comprometida, el malware enumera secretos del clúster y despliega pods privilegiados en los nodos, intentando obtener acceso a los sistemas host subyacentes.
En sistemas Windows, se descarga un archivo WAV diferente (`hangup.wav`), que extrae un ejecutable llamado `msbuild.exe`.
Este ejecutable se coloca en la carpeta de Inicio para garantizar la persistencia a través de los reinicios del sistema. Se utiliza un archivo de bloqueo para limitar la ejecución repetida dentro de ventanas de 12 horas.
## Pasos de Mitigación
Los investigadores aconsejan que la versión 4.87.0 del SDK de Telnyx es la variante limpia y contiene código legítimo de Telnyx sin modificaciones. Se recomienda encarecidamente a los desarrolladores que vuelvan a esta versión si encuentran las versiones 4.87.1 o 4.87.2 de Telnyx en sus entornos.
Cualquier sistema que haya importado las versiones maliciosas del paquete debe considerarse completamente comprometido, ya que el payload se ejecuta en tiempo de ejecución y es posible que ya haya exfiltrado datos sensibles. Se recomienda encarecidamente rotar todos los secretos lo antes posible.