Campaign Open Source 2022-08-24 · 0 days ·Credential Theft, Data Exfiltration

JuiceLedger phished PyPI maintainers

JuiceLedger phished PyPI maintainers and published malicious releases under real package names. The known legitimate-package compromises were exotel 0.1.6 and spam 2.0.2 and 4.0.2.

Story

The JuiceLedger PyPI incident began with a direct attack on maintainers rather than on the registry itself. Package owners received PyPI-themed phishing mail that claimed their projects needed validation. The login page was false; the credentials entered into it were real.

With those credentials, the attackers published malicious releases under legitimate package names. PyPI identified exotel 0.1.6 and spam 2.0.2 and 4.0.2 as poisoned releases, while also removing hundreds of typosquats that used the same install-time pattern but sit outside this dataset's scope.

The package payloads used setup-time execution as the first step. Installation collected host and environment details, contacted attacker-controlled infrastructure, and pulled a larger trojan onto developer workstations or CI runners. The useful moment for the attacker was not application runtime; it was the routine act of installing a package.

That is why this campaign remains a clean example of account compromise as supply-chain compromise. The registry did not need to be broken, and users did not need to mistype a package name. A maintainer account was enough to make trusted package coordinates deliver hostile code.

Linked Attacks

2022

Top vector Package registry Top payload point Distribution
2 entries 2 open source 0 proprietary
August 2 entries
exotel PyPI phishing shipped malware

JuiceLedger used phished PyPI credentials to publish malicious exotel 0.1.6. The release collected environment data and ran a downloaded trojan at install time.

Campaign Context

Actor
JuiceLedger
Attribution
Group
Cause
Unknown

Affected Packages

External References

Source record: oss/campaigns/juiceledger-pypi-phishing-2022/meta.yaml