Telnyx Python SDK on PyPI was backdoored in supply chain attack that targeted Windows, macOS, and Linux


Developers who installed recent Telnyx Python SDK releases from PyPI may have pulled malicious code instead of a normal update. Security researchers and Telnyx’s own GitHub advisory say attackers published compromised telnyx versions 4.87.1 and 4.87.2 directly to PyPI on March 27, 2026 after obtaining PyPI publishing credentials.

The attack targeted Windows, macOS, and Linux systems. The malicious package executed code at import time, so simply importing telnyx in a project could trigger the payload. That made the incident especially dangerous for developers, CI pipelines, and automated build environments that trust package managers by default.

Telnyx’s GitHub security advisory says the last verified clean version is 4.87.0. PyPI quarantined the malicious releases at 10:13 UTC on March 27, which left an exposure window of just over six hours.

What happened

According to Telnyx’s incident disclosure, the attackers did not compromise the project’s GitHub source repository. Instead, they used compromised PyPI credentials to upload malicious artifacts directly to the Python Package Index, which let them bypass the normal release pipeline.

Trend Micro says the malicious code was injected into telnyx/_client.py and split across multiple locations to make visual review harder. The payload activated at module scope, which means the bad code could run during import rather than waiting for the user to call a function later.

One important detail changed the practical impact. GitHub’s advisory says 4.87.1 contained a typo that prevented the malware from executing properly, while 4.87.2 fixed that mistake and delivered the full attack chain.

Why this attack stands out

The malware used WAV audio files to hide the real payload. Trend Micro says the package downloaded structurally valid WAV files from attacker-controlled infrastructure, then decoded the embedded data at runtime. That gave the attackers a stealthier delivery method than simply stuffing the credential stealer into the package as an obvious blob of encoded text.

Researchers say the attack worked across all three major desktop and server operating systems. On Linux and macOS, the malware focused on credential theft and exfiltration. On Windows, it also attempted persistence by dropping a disguised msbuild.exe file into the Startup folder so it would run again after reboot.

The decoded Base64 payload for Linux downloading the WAV file (Source – Trend Micro)

Trend Micro linked the incident to a threat actor it tracks as TeamPCP. The firm says the Telnyx compromise came just days after a similar attack involving the LiteLLM package, which suggests a fast-moving campaign aimed at trusted developer tools and widely used open-source libraries.

Affected and safe versions

Package versionStatusNotes
4.87.1Malicious, but brokenPublished to PyPI with non-working malware path
4.87.2Malicious and functionalFully working malicious release
4.87.0CleanLast verified safe version

What the malware was designed to steal

Trend Micro and Telnyx say the malicious code targeted credentials and sensitive developer data. That included cloud credentials, SSH material, environment secrets, and other tokens commonly stored on workstations and build systems.

The GitHub advisory goes further and says the Linux and macOS payloads searched for AWS, GCP, Azure, Kubernetes, Docker, database, wallet, and .env secrets. It also says the harvested data was encrypted before exfiltration.

That wider targeting makes this more than a one-machine problem. A single poisoned developer laptop or CI runner can expose cloud environments, containers, internal repos, deployment pipelines, and production credentials.

Base64 decode wrapper function (Source – Trend Micro)

What developers and organizations should do now

Anyone who installed telnyx==4.87.1 or telnyx==4.87.2 should treat the affected system as compromised. Telnyx’s advisory recommends moving back to 4.87.0 and starting incident response steps immediately.

Security teams should isolate affected hosts, rotate exposed credentials, review build logs from the exposure window, and inspect whether those package versions were pulled by direct or transitive dependencies. A downgrade alone is not enough if the malicious package already ran.

Teams should also look for suspicious outbound requests tied to the attacker infrastructure and unexpected msbuild.exe files in Windows Startup locations. That can help identify machines where the payload moved beyond initial execution.

Quick response checklist

  • Pin telnyx to 4.87.0
  • Search environments for 4.87.1 and 4.87.2
  • Isolate any machine that imported the compromised package
  • Rotate API keys, cloud credentials, SSH keys, and tokens
  • Review CI/CD logs from March 27, 2026
  • Check Windows Startup folders for suspicious msbuild.exe
  • Hunt for outbound traffic to the reported attacker infrastructure

FAQ

Which Telnyx Python SDK versions were malicious?

The affected PyPI releases were 4.87.1 and 4.87.2. GitHub’s advisory says 4.87.1 was broken due to a typo, while 4.87.2 was the fully functional malicious release.

What is the last safe Telnyx version?

The last verified clean release is 4.87.0.

Was the official GitHub repository compromised?

Telnyx says the malicious code was uploaded directly to PyPI using compromised publishing credentials. The official GitHub source repository did not contain the malicious code.

Could the malware run just by importing the package?

Yes. Researchers say the malicious logic executed at module scope, so importing telnyx could activate the payload.

Readers help support VPNCentral. We may get a commission if you buy through our links. Tooltip Icon

Read our disclosure page to find out how can you help VPNCentral sustain the editorial team Read more

User forum

0 messages