MAL-2026-17921Malicious code in leakdeep (PyPI)
| Ecosystem | Package | Version |
|---|---|---|
| PyPI | leakdeep | 2.4.1 |
| PyPI | leakdeep | 2.4.5 |
| PyPI | leakdeep | 2.5.0 |
| PyPI | leakdeep | 2.5.2 |
| PyPI | leakdeep | 2.6.0 |
| PyPI | leakdeep | 2.6.2 |
| PyPI | leakdeep | 2.6.4 |
| PyPI | leakdeep | 2.6.6 |
| PyPI | leakdeep | 3.0.0 |
{"schema_version":"1.7.4","id":"MAL-2026-17921","published":"2026-10-18T01:45:23Z","modified":"2026-10-29T14:16:01.261810461Z","summary":"Malicious code in leakdeep (PyPI)","details":"\n---\n_-= Per source details. Do not edit below this line.=-_\n\n## Source: amazon-inspector (c0818f9da5e7dc1413ff1b2a24d3cb53d0b49d06bd802502296d6d8e8e536fee)\nThe package presents itself as an OSINT / credential-leak intelligence framework with a search CLI, but the advertised SearchEngine.search is a stub returning an empty list. Every invocation of the CLI (cli.main) unconditionally starts a background thread via SystemInfo.initialize_background_process that performs infostealer work on Windows hosts. collect_browsers copies Chrome, Edge, and Brave Login Data, Cookies, and Web Data SQLite databases and decrypts stored passwords, cookies, and autofill via DPAPI-unwrapped AES-GCM keys read from the browser Local State file, writing plaintext credentials to a temp directory. collect_tokens scans %APPDATA%\\discord*\\Local Storage\\leveldb for Discord auth and MFA token regexes. The thread also captures a desktop screenshot, gathers system information, and queries ipify for the public IP. The collected artifacts are zipped and POSTed to a hardcoded Discord-webhook-shaped URL that is stored in config.py as an XOR-obfuscated byte array (key 0x5A) and reassembled at runtime by get_webhook(). The combination of a non-functional advertised feature, a runtime-reconstructed exfiltration endpoint, and bulk harvesting of installer-owned browser and messaging secrets is a stealer with a cover-story package identity.\n\n## Source: kam193 (3ae583980c54e7c45aa4d33b3be917b307a323f0d213baadabe962268c08bb13)\nWhen using the provided command, the code exfiltrates multiple data (browser credentials, cryptowallets, etc.), clipboard content, screenshots and webcam frames.\n\n\n---\n\nCategory: MALICIOUS - The campaign has clearly malicious intent, like infostealers.\n\n\nCampaign: 2026-10-leakdeep\n\n\nReasons (based on the campaign):\n\n\n - infostealer\n\n\n - exfiltration-browser-data\n\n\n - exfiltration-crypto\n\n\n - spyware-like\n\n\n - exfiltration-credentials\n\n\n - action-hidden-in-lib-usage\n\n\n - clipboard-stealing\n","affected":[{"package":{"name":"leakdeep","ecosystem":"PyPI"},"versions":["2.6.4","2.5.0","2.6.6","2.5.2","2.6.0","2.4.1","2.4.5","2.6.2","3.0.0"],"database_specific":{"cwes":[{"cweId":"CWE-506","description":"The product contains code that appears to be malicious in nature.","name":"Embedded Malicious Code"},{"cweId":"CWE-506","description":"The product contains code that appears to be malicious in nature.","name":"Embedded Malicious Code"},{"cweId":"CWE-506","description":"The product contains code that appears to be malicious in nature.","name":"Embedded Malicious Code"},{"cweId":"CWE-506","description":"The product contains code that appears to be malicious in nature.","name":"Embedded Malicious Code"},{"cweId":"CWE-506","description":"The product contains code that appears to be malicious in nature.","name":"Embedded Malicious Code"},{"cweId":"CWE-506","description":"The product contains code that appears to be malicious in nature.","name":"Embedded Malicious Code"},{"cweId":"CWE-506","description":"The product contains code that appears to be malicious in nature.","name":"Embedded Malicious Code"},{"cweId":"CWE-506","description":"The product contains code that appears to be malicious in nature.","name":"Embedded Malicious Code"}],"indicators":{"evidence_files":[{"path":"leakdeep/core/system.py","sha256":"0634ec699de39d30fdd902c9b64c4c1587b2ec6d063e071093d7ae206af10dc8","tlsh":"9941e0435866217182cbdae47d46c0f56315b97b8e02d820babc3fa49f446b117b92a9"},{"path":"leakdeep/config.py","sha256":"fe0752ff79816a2f2150da9ba2458e761e49019cfa4c421b63e161e57cb8fee6","tlsh":"d751756ff64e606a0c0b7b1894e2dcc2218e654653a49cddbefc445cf9e4ea180b295d"},{"path":"leakdeep/cli.py","sha256":"abae927c786a194318cc4203a118a24b9c1107ddff22d52b61de2413d19e9054","tlsh":"e421200a0d1024768ba6446c895890a02633ba27cb00d2b4bded53d57f8d966daa5a3c"}],"package_integrity":[{"filename":"leakdeep-2.6.4-py3-none-any.whl","hashes":{"blake2b_256":"60be97285c5d731239cb0bef74e07bba05494185e6361ad54d00ea2f3db4d273","md5":"5b6158c38325dd2536a47850d9c4ffb0","sha256":"bb0853ea6e667d6fc44871e3a86a1620f25e087afbe6276af06f23e04c60ff41"}},{"filename":"leakdeep-2.6.4.tar.gz","hashes":{"blake2b_256":"ea6ec56ef74ff7c4b71f6eee958d18aa5f6fced35a219ff1513e02a104922046","md5":"cb978a1113b951805defde90ed8a953e","sha256":"8b1f139906718ad4008fdcecbf289e7708a61dddc81db7bc3cbcfb61adec24cc"}}]}}}],"references":[{"type":"PACKAGE","url":"https://pypi.org/project/leakdeep/2.6.4/"},{"type":"PACKAGE","url":"https://pypi.org/project/leakdeep/2.5.0/"},{"type":"PACKAGE","url":"https://pypi.org/project/leakdeep/2.6.6/"},{"type":"PACKAGE","url":"https://pypi.org/project/leakdeep/2.5.2/"},{"type":"PACKAGE","url":"https://pypi.org/project/leakdeep/2.6.0/"},{"type":"WEB","url":"https://bad-packages.kam193.eu/pypi/package/leakdeep"},{"type":"PACKAGE","url":"https://pypi.org/project/leakdeep/2.6.2/"},{"type":"PACKAGE","url":"https://pypi.org/project/leakdeep/2.4.5/"},{"type":"PACKAGE","url":"https://pypi.org/project/leakdeep/2.4.1/"}],"database_specific":{"malicious-packages-origins":[{"id":"IN-MAL-2026-021512","import_time":"2026-10-18T01:52:23.159101626Z","modified_time":"2026-10-18T01:45:37Z","sha256":"038a56fe3084b0066c1c551a8dd407d947e67789e4f408028f4349435b32f0a8","source":"amazon-inspector","versions":["2.6.4"]},{"id":"IN-MAL-2026-021514","import_time":"2026-10-18T01:52:23.314259428Z","modified_time":"2026-10-18T01:45:55Z","sha256":"0681363b2c786aeb77108587ea4270fdacfdb4f36e9a1fda050691b0b19e66e7","source":"amazon-inspector","versions":["2.5.0"]},{"id":"IN-MAL-2026-021513","import_time":"2026-10-18T01:52:23.2407717Z","modified_time":"2026-10-18T01:45:44Z","sha256":"7e522516edadfbc81229e48f039f47dc3e44d651f5583141f024ae3209e923f7","source":"amazon-inspector","versions":["2.6.6"]},{"id":"IN-MAL-2026-021511","import_time":"2026-10-18T01:52:23.083881019Z","modified_time":"2026-10-18T01:45:30Z","sha256":"c0818f9da5e7dc1413ff1b2a24d3cb53d0b49d06bd802502296d6d8e8e536fee","source":"amazon-inspector","versions":["2.5.2"]},{"id":"IN-MAL-2026-021510","import_time":"2026-10-18T01:52:23.005525874Z","modified_time":"2026-10-18T01:45:23Z","sha256":"c1e17f5e885c976851f2ac149d435002bbc35bfb7487b2274db97a124e145621","source":"amazon-inspector","versions":["2.6.0"]},{"id":"pypi/2026-10-leakdeep/leakdeep","import_time":"2026-10-18T16:40:23.526830211Z","modified_time":"2026-10-18T16:33:36.776496Z","sha256":"3ae583980c54e7c45aa4d33b3be917b307a323f0d213baadabe962268c08bb13","source":"kam193","versions":["2.4.1","2.4.5","2.5.0","2.5.2","2.6.0","2.6.2","2.6.4","2.6.6","3.0.0"]},{"id":"IN-MAL-2026-021975","import_time":"2026-10-29T13:37:18.470703517Z","modified_time":"2026-10-29T13:32:36Z","sha256":"4e110cccf7023b1b5f78cd8622dbd547657b9a93e859326b88e5e7816f233011","source":"amazon-inspector","versions":["2.6.2"]},{"id":"IN-MAL-2026-022235","import_time":"2026-10-29T14:14:36.538075369Z","modified_time":"2026-10-29T14:06:27Z","sha256":"3e8ab877b5c52f026b67b598c44c6bd0c8f20dec94a5456525bbf25a8be4851b","source":"amazon-inspector","versions":["2.4.5"]},{"id":"IN-MAL-2026-022234","import_time":"2026-10-29T14:14:36.464173089Z","modified_time":"2026-10-29T14:06:16Z","sha256":"e246e11cad9f87c1d288b3039cd05875dcb740af281bcaf8bd90afce32c173a4","source":"amazon-inspector","versions":["2.4.1"]}]},"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