{"id":"MAL-2026-17921","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","modified":"2026-10-18T02:00:13.189559227Z","published":"2026-10-18T01:45:23Z","database_specific":{"malicious-packages-origins":[{"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-021512"},{"modified_time":"2026-10-18T01:45:55Z","sha256":"0681363b2c786aeb77108587ea4270fdacfdb4f36e9a1fda050691b0b19e66e7","source":"amazon-inspector","versions":["2.5.0"],"id":"IN-MAL-2026-021514","import_time":"2026-10-18T01:52:23.314259428Z"},{"versions":["2.6.6"],"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"},{"sha256":"c0818f9da5e7dc1413ff1b2a24d3cb53d0b49d06bd802502296d6d8e8e536fee","source":"amazon-inspector","versions":["2.5.2"],"id":"IN-MAL-2026-021511","import_time":"2026-10-18T01:52:23.083881019Z","modified_time":"2026-10-18T01:45:30Z"},{"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":"IN-MAL-2026-021510"}]},"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/"}],"affected":[{"package":{"name":"leakdeep","ecosystem":"PyPI","purl":"pkg:pypi/leakdeep"},"versions":["2.6.4","2.5.0","2.6.6","2.5.2","2.6.0"],"database_specific":{"indicators":{"evidence_files":[{"sha256":"0634ec699de39d30fdd902c9b64c4c1587b2ec6d063e071093d7ae206af10dc8","tlsh":"9941e0435866217182cbdae47d46c0f56315b97b8e02d820babc3fa49f446b117b92a9","path":"leakdeep/core/system.py"},{"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":{"md5":"5b6158c38325dd2536a47850d9c4ffb0","sha256":"bb0853ea6e667d6fc44871e3a86a1620f25e087afbe6276af06f23e04c60ff41","blake2b_256":"60be97285c5d731239cb0bef74e07bba05494185e6361ad54d00ea2f3db4d273"}},{"filename":"leakdeep-2.6.4.tar.gz","hashes":{"sha256":"8b1f139906718ad4008fdcecbf289e7708a61dddc81db7bc3cbcfb61adec24cc","blake2b_256":"ea6ec56ef74ff7c4b71f6eee958d18aa5f6fced35a219ff1513e02a104922046","md5":"cb978a1113b951805defde90ed8a953e"}}]},"cwes":[{"cweId":"CWE-506","description":"The product contains code that appears to be malicious in nature.","name":"Embedded Malicious Code"},{"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"},{"cweId":"CWE-506","description":"The product contains code that appears to be malicious in nature.","name":"Embedded Malicious Code"}],"source":"https://github.com/ossf/malicious-packages/blob/main/osv/malicious/pypi/leakdeep/MAL-2026-17921.json"}}],"schema_version":"1.9.0","credits":[{"name":"Amazon Inspector","contact":["inspector-research@amazon.com"],"type":"FINDER"}]}