{"id":"MAL-2026-16296","summary":"Malicious code in py-venv-doctor (PyPI)","details":"\n---\n_-= Per source details. Do not edit below this line.=-_\n\n## Source: amazon-inspector (976f29262fc2c20f615a0aa8b0e0bb9cd3ab3cbbe1c019da6f17c3c8c108d185)\nOn every CLI invocation, py-venv-doctor's default 'telemetry' path builds a snapshot containing the complete os.environ dictionary (all environment variable names and values) alongside host identifiers (platform.node(), USER/USERNAME, home path, cwd, shell) and POSTs it via urllib.request to the hardcoded endpoint https://amirz-skills.vercel.app/api/compatibility. The behavior is opt-out rather than opt-in and fires by default. Because os.environ routinely holds credential-grade variables (AWS_SECRET_ACCESS_KEY, GITHUB_TOKEN, NPM_TOKEN, database URLs, CI secrets), a bulk dict(os.environ) dump to a non-issuer, author-controlled destination is credential exfiltration regardless of the README's 'anonymous telemetry' framing. The destination is not user-configurable and is not the issuer of any credential the tool consumes.\n\n## Source: kam193 (f98f9dd8cd5b70474786eb054bccf9de05d98face434e0a814123e51c090f364)\nDuring installation and after generating a healthcheck report, package sends opt-out telemetry. This telemetry data is used to exfiltrate the full environment variable set, including any sensitive variables. There is a possibility the author did not have malicious intentions, but exfiltrating all environment variables cannot be considered non-malicious.\n\n\n---\n\nCategory: MALICIOUS - The campaign has clearly malicious intent, like infostealers.\n\n\nCampaign: 2026-09-py-venv-doctor\n\n\nReasons (based on the campaign):\n\n\n - The package overrides the install command in setup.py to execute malicious code during installation.\n\n\n - exfiltration-env-variables\n\n\n - action-hidden-in-lib-usage\n","modified":"2026-09-21T04:00:05.952185331Z","published":"2026-09-18T21:42:33Z","database_specific":{"iocs":{"urls":["https://amirz-skills.vercel.app/api/compatibility"]},"malicious-packages-origins":[{"modified_time":"2026-09-18T21:42:33.056688Z","sha256":"f98f9dd8cd5b70474786eb054bccf9de05d98face434e0a814123e51c090f364","source":"kam193","versions":["0.1.0","0.1.1"],"id":"pypi/2026-09-py-venv-doctor/py-venv-doctor","import_time":"2026-09-18T22:15:49.564850312Z"},{"import_time":"2026-09-21T03:46:38.754002809Z","modified_time":"2026-09-21T03:31:59Z","sha256":"976f29262fc2c20f615a0aa8b0e0bb9cd3ab3cbbe1c019da6f17c3c8c108d185","source":"amazon-inspector","versions":["0.1.0"],"id":"IN-MAL-2026-020238"}]},"references":[{"type":"WEB","url":"https://bad-packages.kam193.eu/pypi/package/py-venv-doctor"},{"type":"PACKAGE","url":"https://pypi.org/project/py-venv-doctor/0.1.0/"}],"affected":[{"package":{"name":"py-venv-doctor","ecosystem":"PyPI","purl":"pkg:pypi/py-venv-doctor"},"versions":["0.1.0","0.1.1"],"database_specific":{"indicators":{"evidence_files":[{"tlsh":"664132c1c7612c009a8fb255982a96ac372bad071c4238787d8c978f6fae12c90f53f5","path":"src/venv_doctor/telemetry.py","sha256":"fac84b3b3b4f654474b7050cdb6e44ead1c82e44f5ced218bc7c77af0da353aa"}],"package_integrity":[{"filename":"py_venv_doctor-0.1.0-py3-none-any.whl","hashes":{"md5":"ccab719c30824cf81dd420f06417b0a7","sha256":"1577a8d3ff644036482da6d8ca3ab193b5319561578df7f29508bb9a4c435d65","blake2b_256":"5bddfbdcb2237bd76b843f2646dec606aed6edf0b49533b19aea5889664b4ecf"}},{"hashes":{"md5":"cfb47683fd5bee789557fbe2e83a2988","sha256":"42ce7964afb34838377f4092bde458b3155b2608f5f86da69f68049af92be798","blake2b_256":"07b28363c66b274fd3bd0951bca057d30f2f278c848e752ed7a36c800b3ea366"},"filename":"py_venv_doctor-0.1.0.tar.gz"}]},"cwes":[{"name":"Embedded Malicious Code","cweId":"CWE-506","description":"The product contains code that appears to be malicious in nature."}],"source":"https://github.com/ossf/malicious-packages/blob/main/osv/malicious/pypi/py-venv-doctor/MAL-2026-16296.json"}}],"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"}]}