{"id":"MAL-2025-191944","summary":"Malicious code in zscaner (PyPI)","details":"\n---\n_-= Per source details. Do not edit below this line.=-_\n\n## Source: kam193 (ee09d48ac6f9e7d0460c2a2bc7c9aaae013ce04ac342eb164683b214616e56d1)\nCampaign is split into multiple packages that altogether exfiltrates data from desktop Telegram application.\n\n1. \"pyapiepo\" is a cover package that provides some useless features BUT also imports \"zscaner\"\n2. \"zscaner\", when imported, automatically runs a function that is an entry point to the whole process; it uses the \"scan\" from \"reqinstall\" to walk through directories. The package also provides main logic: filtering files, triggering archiving directories and exfiltrating them. \n3. \"reqinstall\" ensures \"requests\" are installed and provides a directory tree scanning function.\n4. \"zmaker\" provides functions to build archives from collected files.\n5. \"zsender\" provides functions to exfiltrate data, the remote URL and a function to deobfuscate configuration in other packages.\n\nAltogether, they look for \"Telegram Desktop\" folder, archive user data stored there and exfiltrate to a remote location.\n\n\n---\n\nCategory: MALICIOUS - The campaign has clearly malicious intent, like infostealers.\n\n\nCampaign: 2025-04-zscaner\n\n\nReasons (based on the campaign):\n\n\n - target:telegram\n\n\n - exfiltration-generic\n\n\n - The malicious code is intentionally included in a dependency of the package\n","modified":"2025-12-12T20:41:29.156305Z","published":"2025-04-20T12:05:56Z","database_specific":{"iocs":{"urls":["http://77.91.76.45:100/OPEN"],"ips":["77.91.76.45"]},"malicious-packages-origins":[{"id":"pypi/2025-04-zscaner/zscaner","import_time":"2025-12-02T22:30:55.79750499Z","modified_time":"2025-04-20T12:05:56Z","ranges":[{"events":[{"introduced":"0"}],"type":"ECOSYSTEM"}],"sha256":"6668043ae2bc7032a11a782861883035f06c1553fa9a8b2f1ed9f2214c2683de","source":"kam193"},{"modified_time":"2025-04-20T12:05:56Z","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"sha256":"ee09d48ac6f9e7d0460c2a2bc7c9aaae013ce04ac342eb164683b214616e56d1","source":"kam193","id":"pypi/2025-04-zscaner/zscaner","import_time":"2025-12-02T23:07:18.84137537Z"},{"versions":["1.2.0","1.3.0"],"id":"pypi/2025-04-zscaner/zscaner","import_time":"2025-12-10T21:38:58.004351118Z","modified_time":"2025-04-20T12:05:56Z","sha256":"6f576cbb5c69265f66e820606e885aa1c9edc89fae12046bb3a7c29cca43eee8","source":"kam193"}]},"references":[{"type":"WEB","url":"https://bad-packages.kam193.eu/pypi/package/zscaner"}],"affected":[{"package":{"name":"zscaner","ecosystem":"PyPI","purl":"pkg:pypi/zscaner"},"versions":["1.2.0","1.3.0"],"database_specific":{"source":"https://github.com/ossf/malicious-packages/blob/main/osv/malicious/pypi/zscaner/MAL-2025-191944.json"}}],"schema_version":"1.7.3","credits":[{"name":"Kamil Mańkowski (kam193)","contact":["https://github.com/kam193","https://bad-packages.kam193.eu/"]},{"name":"Kamil Mańkowski (kam193)","contact":["https://github.com/kam193","https://bad-packages.kam193.eu/"],"type":"REPORTER"}]}