{"id":"MAL-2026-16122","summary":"Malicious code in pylever (PyPI)","details":"\n---\n_-= Per source details. Do not edit below this line.=-_\n\n## Source: amazon-inspector (6720ca3891de59548dfdfc9b6af778b5bf97fb31c5188381c73e92c4ac2820e1)\nThe package's `_Client` class scans Chrome, Edge, and Brave browser profile LevelDB and Cache directories and the Discord Desktop app's Roaming/discord Local Storage/leveldb for strings matching the Discord token regexes `[MN][A-Za-z0-9_-]{71}` and `mfa\\.[...]{84}`, decrypts protected values via DPAPI invoked through PowerShell, validates each candidate against the Discord API, and POSTs valid tokens along with the associated username, id, email, verified flag, and bot flag to a hardcoded Discord webhook at `https://discord.com/api/webhooks/1547416857537945601/...`. `_DataFinder.find_all()` additionally walks the caller-supplied workspace path recursively and matches the same token regex against file contents, sending matches to the same webhook. The webhook URL is a module-level constant assigned in `_Client.__init__` with no API surface to override it, despite the README claiming the user configures the webhook. Package metadata uses placeholder values (`author=\"Your Name\"`, `your.email@example.com`, `github.com/yourusername/pylever`) and the README frames the tool as restoring accidentally removed tokens, contradicting the actual bulk-harvest and exfiltration behavior.\n\n## Source: kam193 (068694f49511d5a0c8678ca2196385c50cc68d1c526d5b151a6f2cdcfcae9b64)\nThe package contains a stealer exfiltrating Discord tokens to a hardcoded location.\n\n\n---\n\nCategory: MALICIOUS - The campaign has clearly malicious intent, like infostealers.\n\n\nCampaign: 2026-09-pylever\n\n\nReasons (based on the campaign):\n\n\n - infostealer\n","modified":"2026-09-10T18:30:36.793608971Z","published":"2026-09-10T06:17:45Z","database_specific":{"malicious-packages-origins":[{"source":"kam193","versions":["1.0.0","1.0.1","1.0.2","1.0.3","1.0.4","1.0.5","1.0.6","1.0.7","1.0.8","1.0.9","1.0.10","1.0.11","1.0.12"],"id":"pypi/2026-09-pylever/pylever","import_time":"2026-09-10T06:53:19.086408657Z","modified_time":"2026-09-10T06:17:45.519967Z","sha256":"068694f49511d5a0c8678ca2196385c50cc68d1c526d5b151a6f2cdcfcae9b64"},{"modified_time":"2026-09-10T18:02:09Z","sha256":"c45b2af15cac4f76db423b149928213c966f9d2ffc789b3e3ec82ca84737a096","source":"amazon-inspector","versions":["1.0.11"],"id":"IN-MAL-2026-019917","import_time":"2026-09-10T18:20:41.435084286Z"},{"sha256":"f5d077709c9565949a26f2720652ed222e680432d50649cb0e78185ddf101b6e","source":"amazon-inspector","versions":["1.0.10"],"id":"IN-MAL-2026-019916","import_time":"2026-09-10T18:20:41.379649892Z","modified_time":"2026-09-10T18:02:01Z"},{"versions":["1.0.12"],"id":"IN-MAL-2026-019921","import_time":"2026-09-10T18:20:41.65631176Z","modified_time":"2026-09-10T18:02:47Z","sha256":"099b547e9862660f5df05101d3539aae69646157f3a58780cb5411acc6e41e2f","source":"amazon-inspector"},{"id":"IN-MAL-2026-019947","import_time":"2026-09-10T18:20:42.950476528Z","modified_time":"2026-09-10T18:08:25Z","sha256":"1bebc653ec213a8fa6cdd34bad7ededffc384b44b086f8405f9d8b1af2e6536f","source":"amazon-inspector","versions":["1.0.1"]},{"import_time":"2026-09-10T18:20:41.787779392Z","modified_time":"2026-09-10T18:03:14Z","sha256":"5af4454b8d354327456642e6dbbdb00e36909d01f2061271b4fa834f5d594d35","source":"amazon-inspector","versions":["1.0.2"],"id":"IN-MAL-2026-019924"},{"source":"amazon-inspector","versions":["1.0.9"],"id":"IN-MAL-2026-019919","import_time":"2026-09-10T18:20:41.550369576Z","modified_time":"2026-09-10T18:02:28Z","sha256":"6720ca3891de59548dfdfc9b6af778b5bf97fb31c5188381c73e92c4ac2820e1"},{"modified_time":"2026-09-10T18:03:04Z","sha256":"744d56814425f7f322b836a0d1dd2d97e5e6dae0c539634b71e00c2d1b7aff36","source":"amazon-inspector","versions":["1.0.5"],"id":"IN-MAL-2026-019923","import_time":"2026-09-10T18:20:41.760075392Z"},{"id":"IN-MAL-2026-019948","import_time":"2026-09-10T18:20:42.99285098Z","modified_time":"2026-09-10T18:08:33Z","sha256":"78a46eb3d6397d7c42877b7c52082316433409db8bae9bbffa3c6f4cdfdd4cc0","source":"amazon-inspector","versions":["1.0.4"]},{"sha256":"9ba2ba7cda402c14fec07ff689380d97851e1d82e50f2a13b89171cf70e8ce3b","source":"amazon-inspector","versions":["1.0.7"],"id":"IN-MAL-2026-019918","import_time":"2026-09-10T18:20:41.504076643Z","modified_time":"2026-09-10T18:02:16Z"},{"sha256":"b7583abe42ac1e26bc24476851da2434919d3a79d91cfd818e345d8f441aa797","source":"amazon-inspector","versions":["1.0.6"],"id":"IN-MAL-2026-019920","import_time":"2026-09-10T18:20:41.578530841Z","modified_time":"2026-09-10T18:02:37Z"},{"source":"amazon-inspector","versions":["1.0.3"],"id":"IN-MAL-2026-019922","import_time":"2026-09-10T18:20:41.716600219Z","modified_time":"2026-09-10T18:02:54Z","sha256":"457caba0f1471c311996fd3ac1bdd17bbbf78ae39bd10fe8da6cf8e8d6773635"}]},"references":[{"type":"WEB","url":"https://bad-packages.kam193.eu/pypi/package/pylever"},{"type":"PACKAGE","url":"https://pypi.org/project/pylever/1.0.11/"},{"type":"PACKAGE","url":"https://pypi.org/project/pylever/1.0.10/"},{"type":"PACKAGE","url":"https://pypi.org/project/pylever/1.0.12/"},{"type":"PACKAGE","url":"https://pypi.org/project/pylever/1.0.1/"},{"type":"PACKAGE","url":"https://pypi.org/project/pylever/1.0.2/"},{"type":"PACKAGE","url":"https://pypi.org/project/pylever/1.0.9/"},{"type":"PACKAGE","url":"https://pypi.org/project/pylever/1.0.5/"},{"type":"PACKAGE","url":"https://pypi.org/project/pylever/1.0.4/"},{"type":"PACKAGE","url":"https://pypi.org/project/pylever/1.0.7/"},{"type":"PACKAGE","url":"https://pypi.org/project/pylever/1.0.6/"},{"type":"PACKAGE","url":"https://pypi.org/project/pylever/1.0.3/"}],"affected":[{"package":{"name":"pylever","ecosystem":"PyPI","purl":"pkg:pypi/pylever"},"versions":["1.0.0","1.0.1","1.0.2","1.0.3","1.0.4","1.0.5","1.0.6","1.0.7","1.0.8","1.0.9","1.0.10","1.0.11","1.0.12"],"database_specific":{"indicators":{"evidence_files":[{"tlsh":"75f1d432e0c22c525e9b81bef883950372a854175d8c1cf0bdac416d6f8ca76e9e17dd","path":"pylever/token_saver.py","sha256":"19f825dd58b91becdcba69c40da0f016b92df3ee627a53844e3ff47a65187df1"},{"sha256":"db02972acb999374fc7452b5e5d29d597f116e2ce206669229a83e028a03120c","tlsh":"9a511223d2c77c9de6e38bd8aa12c03173256867dc9a1839766d47d81f4472680fa9ce","path":"pylever/token_finder.py"},{"tlsh":"11e12426bad66415d543837d9513ec0132212df34a4a18f8bfef56801f8c776a8e96ce","path":"pylever/browser_extractor.py","sha256":"57f6ffd4d32b7c5685e3339a6ee5404887d50c93aa16fe72003fdc08d7d3c4a2"}],"package_integrity":[{"filename":"pylever-1.0.11-py3-none-any.whl","hashes":{"md5":"8d17487652bd11968895f18ac6a78fd5","sha256":"4e4d78908a71cde73f3491b51aa1fbdc89ed585bfbcea2907a75eae03af655dc","blake2b_256":"c38aca65ae68fce962886352209bee63f3065ba47d6d25513190278f3aed4d73"}},{"filename":"pylever-1.0.11.tar.gz","hashes":{"blake2b_256":"0d2e19b1361b0a2a4a60cb4b9f912619c5d8cfb89ed447ef612bb0cb74fe2dee","md5":"c82588971453bcc47ba22ab1c40f09b4","sha256":"645b4bfc5a53d2c5c1b427d2810e69bc795a43738f817b83d1ea07598e5b2364"}}]},"source":"https://github.com/ossf/malicious-packages/blob/main/osv/malicious/pypi/pylever/MAL-2026-16122.json","cwes":[{"name":"Embedded Malicious Code","cweId":"CWE-506","description":"The product contains code that appears to be malicious in nature."},{"cweId":"CWE-506","description":"The product contains code that appears to be malicious in nature.","name":"Embedded Malicious Code"},{"name":"Embedded Malicious Code","cweId":"CWE-506","description":"The product contains code that appears to be malicious in nature."},{"description":"The product contains code that appears to be malicious in nature.","name":"Embedded Malicious Code","cweId":"CWE-506"},{"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."},{"cweId":"CWE-506","description":"The product contains code that appears to be malicious in nature.","name":"Embedded Malicious Code"},{"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."},{"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"}]}}],"schema_version":"1.9.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"}]}