{"id":"MAL-2025-191945","summary":"Malicious code in zsender (PyPI)","details":"\n---\n_-= Per source details. Do not edit below this line.=-_\n\n## Source: kam193 (64454f4348553cc0321094cffaef685d8977dd95ccf1c07dc54e2b8b3c39a8f0)\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:30.670871Z","published":"2025-04-20T12:05:56Z","database_specific":{"iocs":{"ips":["77.91.76.45"],"urls":["http://77.91.76.45:100/OPEN"]},"malicious-packages-origins":[{"sha256":"bbea3884909fc4de5c28947d3ddee545fc4922cc2881a678ed50536a7be365cf","modified_time":"2025-04-20T12:05:56Z","id":"pypi/2025-04-zscaner/zsender","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"source":"kam193","import_time":"2025-12-02T22:30:55.798963796Z"},{"sha256":"64454f4348553cc0321094cffaef685d8977dd95ccf1c07dc54e2b8b3c39a8f0","modified_time":"2025-04-20T12:05:56Z","id":"pypi/2025-04-zscaner/zsender","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"source":"kam193","import_time":"2025-12-02T23:07:18.842422547Z"},{"sha256":"d5772de1da404ef7501981ed6bffd40608f3942ba75abb398feab77aa6c350eb","modified_time":"2025-04-20T12:05:56Z","id":"pypi/2025-04-zscaner/zsender","versions":["1.2.7"],"source":"kam193","import_time":"2025-12-10T21:38:58.005503987Z"}]},"references":[{"type":"WEB","url":"https://bad-packages.kam193.eu/pypi/package/zsender"}],"affected":[{"package":{"name":"zsender","ecosystem":"PyPI","purl":"pkg:pypi/zsender"},"versions":["1.2.7"],"database_specific":{"source":"https://github.com/ossf/malicious-packages/blob/main/osv/malicious/pypi/zsender/MAL-2025-191945.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"}]}