{"id":"MAL-2026-17703","summary":"Malicious code in kafka-roller (PyPI)","details":"\n---\n_-= Per source details. Do not edit below this line.=-_\n\n## Source: amazon-inspector (4490e03c9b281c985d7cc5c877d359f8f3789a2ec44421602137c461ac4a2a52)\nThe package is published to PyPI under the name kafka-roller with metadata impersonating Tesla's teslamotors/kafka-helmsman project (homepage points at github.com/teslamotors/kafka-helmsman while the publisher is an unaffiliated account), and version 99.0.4 is pinned implausibly high — the dependency-confusion squat shape. setup.py starts a module-level daemon thread during pip's metadata/wheel build that collects hostname, current working directory, platform information, a timestamp and a UUID, and transmits them via HTTPS POST to https://webhook.site/bf5cb178-e0cf-43b6-8b1e-fb5d2f6ea9c9 and via HTTPS GET plus DNS lookups to a subdomain of oast.site (an interactsh out-of-band collector). The DNS channel is driven by subprocess invocations of nslookup/getent/dig against an attacker-chosen hostname, providing a secondary exfiltration path that bypasses HTTP egress filtering. The beacon fires on any pip processing of the sdist without installer consent, and leaks internal host and build-environment identifiers for any build system that misresolves the kafka-roller name to this PyPI package. A self-description as 'dependency-confusion security research' does not change the behavior: install-time out-of-band callbacks carrying host identifiers to attacker-controlled collectors are exfiltration regardless of framing.\n\n## Source: kam193 (ddfe2b638b0889fe0ad773e6d97df2a3649cd830ca5e2ae851a2227ede687b1a)\nInstalling the package or importing the module exfiltrates basic information about the host, and the package has no other purpose.\n\n\n---\n\nCategory: PROBABLY_PENTEST - Packages looking like typical pentest packages, but also anything that looks like testing, exploring pre-prepared kits, research & co, with clearly low-harm possibilities.\n\n\nCampaign: GENERIC-standard-pypi-install-pentest\n\n\nReasons (based on the campaign):\n\n\n - The package contains code to exfiltrate basic data from the system, like IP or username. It has a limited risk.\n\n\n - The package overrides the install command in setup.py to execute malicious code during installation.\n\n## Source: ossf-package-analysis (4b68fa52500e16cab90e8038ae96e2ba1be6c448a8caa40ab3e46dc6d3c26436)\nThe OpenSSF Package Analysis project identified 'kafka-roller' @ 99.0.0 (pypi) as malicious.\n\nIt is considered malicious because:\n\n- The package communicates with a domain associated with malicious activity.\n","modified":"2026-10-09T01:00:09.234432755Z","published":"2026-10-08T20:52:03Z","database_specific":{"malicious-packages-origins":[{"sha256":"4b68fa52500e16cab90e8038ae96e2ba1be6c448a8caa40ab3e46dc6d3c26436","source":"ossf-package-analysis","versions":["99.0.0"],"import_time":"2026-10-08T21:18:09.008611333Z","modified_time":"2026-10-08T20:52:03Z"},{"sha256":"9975eae8f4f212635e09740ba1eee069d57e1d23d9bb46baa49a42eec62a21ca","source":"ossf-package-analysis","versions":["99.0.1"],"import_time":"2026-10-08T21:18:09.088134236Z","modified_time":"2026-10-08T21:01:49Z"},{"versions":["99.0.2"],"import_time":"2026-10-08T21:18:09.15889623Z","modified_time":"2026-10-08T21:11:07Z","sha256":"ac1ad358c7ec1983efd88a4e93498fcc8a74c746c1e5fff844af271ba21408bb","source":"ossf-package-analysis"},{"versions":["99.0.3"],"import_time":"2026-10-08T21:18:09.221615738Z","modified_time":"2026-10-08T21:11:12Z","sha256":"4ee3520171e39cfacdb27d6977c474b60ac0a9b785052c7ff40bcdcb48e33f40","source":"ossf-package-analysis"},{"sha256":"8a94583a1c92780d6fcec5cf1af6f5fda40b4771617ad69d46bf3e4ac6c664bd","source":"ossf-package-analysis","versions":["99.0.4"],"import_time":"2026-10-08T21:18:09.281875364Z","modified_time":"2026-10-08T21:11:14Z"},{"id":"IN-MAL-2026-021272","import_time":"2026-10-08T21:42:58.133089095Z","modified_time":"2026-10-08T21:24:28Z","sha256":"24546f7e39906ebf5712795cd3a1ba82f6c97a7fa6d1a7e79ee28c21b9f75b1f","source":"amazon-inspector","versions":["99.0.1"]},{"id":"IN-MAL-2026-021262","import_time":"2026-10-08T21:42:57.329167503Z","modified_time":"2026-10-08T21:23:04Z","sha256":"88587450e1da319acaf6b6849ee2018cc87230d4238e7b01a3a0fabdf7553c05","source":"amazon-inspector","versions":["99.0.2"]},{"id":"IN-MAL-2026-021264","import_time":"2026-10-08T21:42:57.476378594Z","modified_time":"2026-10-08T21:23:21Z","sha256":"b602398e3e20af28a7f30e248544fe30292411a679a0fc6e22cfdf6b9abd95bf","source":"amazon-inspector","versions":["99.0.3"]},{"import_time":"2026-10-08T21:42:58.026949296Z","modified_time":"2026-10-08T21:24:21Z","sha256":"1ef3d9dc9185cea1ba30aafd4daa80e2a5b1a5dcf1bc59a4a5a5fbae9a480b17","source":"amazon-inspector","versions":["99.0.0"],"id":"IN-MAL-2026-021271"},{"id":"pypi/GENERIC-standard-pypi-install-pentest/kafka-roller","import_time":"2026-10-08T22:18:58.158051275Z","modified_time":"2026-10-08T21:38:27.976677Z","sha256":"ddfe2b638b0889fe0ad773e6d97df2a3649cd830ca5e2ae851a2227ede687b1a","source":"kam193","versions":["99.0.0","99.0.1","99.0.2","99.0.3","99.0.4","99.0.5","99.0.6"]},{"modified_time":"2026-10-09T00:05:51Z","sha256":"fda67d41c0a8729b352738f15dc782dd9283c26c63f423605ee949f95d9bb727","source":"amazon-inspector","versions":["99.0.6"],"id":"IN-MAL-2026-021280","import_time":"2026-10-09T00:53:55.13198279Z"},{"versions":["99.0.5"],"id":"IN-MAL-2026-021279","import_time":"2026-10-09T00:53:55.016035029Z","modified_time":"2026-10-09T00:05:42Z","sha256":"0c4a4bdb223674e7765b3bcaf930e372d0d72306422e0885035a561c943437ff","source":"amazon-inspector"},{"id":"IN-MAL-2026-021276","import_time":"2026-10-09T00:53:54.816249428Z","modified_time":"2026-10-09T00:05:15Z","sha256":"4490e03c9b281c985d7cc5c877d359f8f3789a2ec44421602137c461ac4a2a52","source":"amazon-inspector","versions":["99.0.4"]}]},"references":[{"type":"PACKAGE","url":"https://pypi.org/project/kafka-roller/99.0.1/"},{"type":"PACKAGE","url":"https://pypi.org/project/kafka-roller/99.0.2/"},{"type":"PACKAGE","url":"https://pypi.org/project/kafka-roller/99.0.3/"},{"type":"PACKAGE","url":"https://pypi.org/project/kafka-roller/99.0.0/"},{"type":"WEB","url":"https://bad-packages.kam193.eu/pypi/package/kafka-roller"},{"type":"PACKAGE","url":"https://pypi.org/project/kafka-roller/99.0.6/"},{"type":"PACKAGE","url":"https://pypi.org/project/kafka-roller/99.0.5/"},{"type":"PACKAGE","url":"https://pypi.org/project/kafka-roller/99.0.4/"}],"affected":[{"package":{"name":"kafka-roller","ecosystem":"PyPI","purl":"pkg:pypi/kafka-roller"},"versions":["99.0.0","99.0.1","99.0.2","99.0.3","99.0.4","99.0.5","99.0.6"],"database_specific":{"cwes":[{"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"},{"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"},{"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"},{"cweId":"CWE-506","description":"The product contains code that appears to be malicious in nature.","name":"Embedded Malicious Code"}],"indicators":{"package_integrity":[{"filename":"kafka_roller-99.0.1.tar.gz","hashes":{"blake2b_256":"46db756d20fa73fd07876b1aeb4cc1920f767e278fe5017d282832a7cf2f4f18","md5":"3c0f88a4b29842187b5dfc87aa3b2634","sha256":"ee992509e0096be2499ecdfc955faddfbce9759489a3d3c6b82181d6cea3007a"}}],"evidence_files":[{"path":"setup.py","sha256":"eae7f2ea838339c88e681b5cc81af72d5f38d1bbc9445370d69801f6305da549","tlsh":"cc617587c4252863d3c760944435e57133227a4bbd0368fa7a9ca395af4e4b690f256d"}]},"source":"https://github.com/ossf/malicious-packages/blob/main/osv/malicious/pypi/kafka-roller/MAL-2026-17703.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"},{"name":"OpenSSF: Package Analysis","contact":["https://github.com/ossf/package-analysis","https://openssf.slack.com/channels/package_analysis"],"type":"FINDER"}]}