Malicious code in psbt-utils (PyPI)
The psbt-utils package on PyPI contained malicious code disguised as a hardware wallet firmware upgrader. The payload is an infostealer that exfiltrates cryptocurrency wallets, browser credentials, SSH keys, TOTP seeds, and clipboard content, with persistence mechanisms via scheduled tasks or LaunchAgent.
- Disclosed
- Last updated
- Blast radius
- Unknown; depends on installation count and user execution patterns
- Ecosystems
- Attack vectors
- Affected entities
- psbt-utilsPyPI package containing malicious infostealer code
The psbt-utils package published on PyPI contained malicious code that masqueraded as a firmware upgrader for hardware wallets. Upon execution, the code downloads and runs an infostealer designed to harvest sensitive data from the infected system.
The infostealer targets cryptocurrency-related files (wallet files, seeds), browser data (passwords, cookies), system credentials (tokens, SSH keys, TOTP seeds), and current clipboard content. Stolen data is exfiltrated to attacker-controlled infrastructure. The malware establishes persistence through scheduled tasks on Windows or LaunchAgent on macOS.
The code includes anti-analysis features: it deliberately avoids execution in CI/CD environments and performs checks to verify the system appears to be a real user machine rather than a sandbox or test environment.
This incident is part of the broader 2026-08-psbt-utils campaign, which is a continuation of the earlier 2026-08-coldcard-helpers campaign targeting cryptocurrency users.
Indicators of compromise
- Packages
- psbt-utils
Remediation
- Immediately uninstall psbt-utils from all systems
- Scan systems for indicators of compromise (scheduled tasks, LaunchAgent entries, suspicious processes)
- Rotate all cryptocurrency wallet credentials and consider moving funds from potentially compromised wallets
- Change all browser passwords and review browser data for unauthorized access
- Rotate SSH keys and review SSH access logs
- Review and revoke any exposed API tokens or cloud credentials
- Monitor systems for signs of persistence mechanisms or data exfiltration
- Check clipboard history for sensitive data that may have been captured
Sources
- GitHub Advisory GHSA-3crg-h67f-c6r9 · GitHub Advisory Database
Cite this entry
"Malicious code in psbt-utils (PyPI)." supplychainattack.org, Supply Chain Attack Incident Catalog. Disclosed August 4, 2026; last updated August 4, 2026. https://supplychainattack.org/incident/malicious-code-in-psbt-utils-pypi-niqzxl
Suggest a correction
Found an error or have a newer source? Corrections to factual errors take priority over new entries.
Related incidents
- resolvedhigh
Malicious code in riakcs (PyPI)
The riakcs package on PyPI contained malicious code that exfiltrates basic host information (IP address, username) during installation. The package overrides the install command in setup.py to execute the malicious payload when installed.
PyPICompromised package - containedcritical
Malicious code in fastapii (PyPI)
The fastapii package on PyPI is a typosquatting attack imitating the popular FastAPI library. During installation, it executes obfuscated code that downloads and runs a malicious executable, exfiltrating cryptocurrency wallet data and potentially other sensitive information.
2026 08 FlasqPyPITyposquattingCompromised package - containedcritical
Malicious code in idnna (PyPI)
A malicious package named idnna was published to PyPI, imitating a legitimate library. During installation, the package executes obfuscated code that downloads and runs a malicious executable, exfiltrating cryptocurrency wallet data and potentially other sensitive information.
PyPITyposquattingCompromised package - containedcritical
Malicious code in pydanticc (PyPI)
The PyPI package pydanticc is a typosquatting attack imitating the popular pydantic library. During installation, it executes obfuscated code that downloads and runs a malicious executable, exfiltrating cryptocurrency wallet data and potentially other sensitive information.
2026 08 FlasqPyPITyposquattingCompromised package