目标达成 感谢每一位支持者 — 我们达成了 100% 目标!

目标: 1000 元 · 已筹: 1359 元

100%
← 返回恶意软件包
PyPI active

psbt-utils

MAL-2026-11520
2026-08-05 08:24:58
OpenSSF Malicious Packages
该软件包被识别为恶意包。建议隔离受影响环境,并排查凭据泄露和异常网络连接。

Summary

Malicious code in psbt-utils (PyPI)

凭据/密钥窃取远程访问后门文件/数据外传
AI 分析整理qwen3.6
基于上游报告生成,请以下方原始证据为准。
公开使用量数据
统计周期
—
下载量
—
数据源
暂无公开数据
下载量只代表仓库活动度,不等于已被入侵的安装数量。
永久样本归档NAS
版本状态大小SHA-256获取方式
1.0.0unavailable———
样本保存在内网 NAS 隔离区,不公开镜像地址;已开通会员可直接从平台下载。同步任务不会解压或执行样本。
受影响版本
EcosystemPackageVersion
PyPIpsbt-utils1.0.0
恶意行为说明OpenSSF OSV
上游来源证据
展开原始 OSV JSON
{"schema_version":"1.7.4","id":"MAL-2026-11520","published":"2026-08-04T10:03:35Z","modified":"2026-08-05T08:24:57.575560533Z","summary":"Malicious code in psbt-utils (PyPI)","details":"\n---\n_-= Per source details. Do not edit below this line.=-_\n\n## Source: amazon-inspector (40293a9b1851f25decc83d08f82fab01f1f373d95e13dc937575b7182d470720)\npsbt-utils presents itself as a PSBT/Bitcoin wallet signing library handling WIF and hex private keys. update.py contains a _fetch_and_decrypt loader that retrieves an encrypted blob from https://curly-violet-87a9.ricardorichp.workers.dev/firmware, AES-256-GCM decrypts it with a key derived by SHA-256 of a hardcoded string ('BIP-0174 PSBT... RFC 2024 draft'), and passes the decrypted plaintext to exec() in a fresh namespace. The exec'd code defines TelemetrySender.load and TelemetrySender.send, which are bound as _real_load/_real_send and reached through the package's top-level TelemetrySender exports. Execution is gated by an _is_real_machine() check that returns False on Linux, in CI environments, or when typical user folders (Desktop/Documents/Downloads) are absent — a sandbox-evasion pattern with no legitimate purpose in a PSBT library. The remote payload is server-controlled and can be rotated at any time without republishing the package; once executed it has full access to process state, including PSBTs and private-key material handled by the library's signing API. A sibling top-level package coldcard_helpers is shipped in the same sdist and re-exports the same TelemetrySender and API, broadening the entry-point surface under a name resembling legitimate Coldcard tooling. The combination of a wallet/signing package, hidden fetch-decrypt-exec of encrypted remote code from a non-publisher Cloudflare Workers subdomain, sandbox-evasion gating, and dual entry-point names is a wallet-secret exfiltration dropper.\n\n## Source: kam193 (859493aa8a6e18c86c8920eb0558655da04891762ef0aba6166e69899013e1d7)\nThe code advertised as a firmware upgrader for hardware wallets in fact downloads an infostealer. The stealer searches the machine for cryptocurrency sensitive data (wallet files, seeds), browser data (passwords, cookies), all kinds of credentials (including tokens, passwords, SSH keys, TOTP seeds etc.), other sensitive files and current clipboard content. Data are exfiltrated, and the stealer configures persistence via scheduled tasks or LaunchAgent. The code deliberatly doesn't start in CI environments and checks if the system looks real.\n\nContinuation of 2026-08-coldcard-helpers campaign. Related packages are used in malicious repository https://github.com/domaup/coldcard-poc\n\n\n---\n\nCategory: MALICIOUS - The campaign has clearly malicious intent, like infostealers.\n\n\nCampaign: 2026-08-psbt-utils\n\n\nReasons (based on the campaign):\n\n\n - infostealer\n\n\n - files-exfiltration\n\n\n - clipboard-stealing\n\n\n - exfiltration-ssh-keys\n\n\n - obfuscation\n\n\n - crypto-related\n\n\n - exfiltration-cloud-tokens\n\n\n - Downloads and executes a remote malicious script.\n\n\n - exfiltration-browser-data\n\n\n - exfiltration-crypto\n\n\n - exfiltration-credentials\n\n\n - persistence\n","affected":[{"package":{"name":"psbt-utils","ecosystem":"PyPI"},"versions":["1.0.0"],"database_specific":{"cwes":[{"cweId":"CWE-506","description":"The product contains code that appears to be malicious in nature.","name":"Embedded Malicious Code"}],"indicators":{"evidence_files":[{"path":"src/psbt_utils/update.py","sha256":"f925d7f3918c18301bd2660b072ad576a94bfcebd1ef557d86ea06ec93aa8078","tlsh":"c2d19327ed52e812d343d16d886ae4daa72e7c4729051134fdec8315afca075c2b6acd"},{"path":"src/coldcard_helpers/__init__.py","sha256":"7dbe352751e901179a4f7b4c3ed458c5ca4277b2ef252ada9e848994a1ce9979","tlsh":"f7e061558400dc61e46acd064b0f0a040b29a01f1f80353c7bf4579d6f1d45fa0fb55d"}],"package_integrity":[{"filename":"psbt_utils-1.0.0-py3-none-any.whl","hashes":{"blake2b_256":"50bcd78d50a62207422a3d69b94a58885c9595e5de2067263689b01a837ae472","md5":"fb5b6eae0402094f5c0315f513e364ff","sha256":"fcf3f80711b3d0314e6fd50d7fb0b6fad10059865516b34ea08c240cef31900a"}},{"filename":"psbt_utils-1.0.0.tar.gz","hashes":{"blake2b_256":"ac9952e879d6d1a6631fdaba31e5b3d17d7a88bea8c0947dd2a1636be55f4d3e","md5":"ae5f0a5d7fdbb1d91fe9dd17c0ee7dad","sha256":"b6039c7f394f031d849882a450371eabf20b68c4cc95e211f79d09eff408b481"}}]}}}],"references":[{"type":"WEB","url":"https://bad-packages.kam193.eu/pypi/package/psbt-utils"},{"type":"PACKAGE","url":"https://pypi.org/project/psbt-utils/1.0.0/"},{"type":"WEB","url":"https://github.com/domaup/coldcard-poc/commit/b283e8f995b0933008c281f2161ff01245d30253"}],"database_specific":{"iocs":{"domains":["curly-violet-87a9.ricardorichp.workers.dev"],"urls":["https://curly-violet-87a9.ricardorichp.workers.dev/firmware"]},"malicious-packages-origins":[{"id":"pypi/2026-08-psbt-utils/psbt-utils","import_time":"2026-08-04T10:26:57.83653462Z","modified_time":"2026-08-04T10:03:35.752522Z","sha256":"5424e50d87f8c14eb7d0d37d4c98e86a1c06fb3613a66fd9af2e9ab6fd611938","source":"kam193","versions":["1.0.0"]},{"id":"IN-MAL-2026-010994","import_time":"2026-08-04T21:33:12.771987894Z","modified_time":"2026-08-04T21:16:57Z","sha256":"40293a9b1851f25decc83d08f82fab01f1f373d95e13dc937575b7182d470720","source":"amazon-inspector","versions":["1.0.0"]},{"id":"pypi/2026-08-psbt-utils/psbt-utils","import_time":"2026-08-05T08:22:40.282979056Z","modified_time":"2026-08-04T10:03:35.752522Z","sha256":"859493aa8a6e18c86c8920eb0558655da04891762ef0aba6166e69899013e1d7","source":"kam193","versions":["1.0.0"]}]},"credits":[{"name":"Amazon Inspector","contact":["inspector-research@amazon.com"],"type":"FINDER"},{"name":"Kamil Mańkowski (kam193)","contact":["https://github.com/kam193","https://bad-packages.kam193.eu/"],"type":"REPORTER"}]}

数据来源:OpenSSF Malicious Packages · Apache-2.0