---
id: "MAL-2026-17703"
kind: "package"
aliases: ["MAL-2026-17703"]
title: "Malicious code in kafka-roller (PyPI)"
severity: "critical"
cvss: null
epss: null
exploited: false
status: "open"
category: "package"
products: [{"name": "kafka-roller", "fixed": [], "affected": "= 99.0.0; = 99.0.1; = 99.0.2; = 99.0.3; = 99.0.4; = 99.0.5; = 99.0.6", "ecosystem": "pypi"}]
ecosystems: ["pypi"]
tags: ["malicious", "package"]
not_affected_if: []
published_at: "2026-10-08T20:52:03+00:00"
first_seen_at: "2026-10-26T20:51:59+00:00"
updated_at: "2026-10-26T21:08:21+00:00"
sources: [{"source": "osv-malicious", "url": "https://osv.dev/vulnerability/MAL-2026-17703", "first_seen_at": "2026-10-26T20:51:59+00:00"}]
---

# Malicious code in kafka-roller (PyPI)

## Affected

- pypi:kafka-roller affected = 99.0.0; = 99.0.1; = 99.0.2; = 99.0.3; = 99.0.4; = 99.0.5; = 99.0.6 fixed ?

## Timeline

- 2026-10-26T20:51:59+00:00 osv-malicious https://osv.dev/vulnerability/MAL-2026-17703

## From the sources

---
_-= Per source details. Do not edit below this line.=-_

## Source: amazon-inspector (4490e03c9b281c985d7cc5c877d359f8f3789a2ec44421602137c461ac4a2a52)
The 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.

## Source: kam193 (ddfe2b638b0889fe0ad773e6d97df2a3649cd830ca5e2ae851a2227ede687b1a)
Installing the package or importing the module exfiltrates basic information about the host, and the package has no other purpose.


---

Category: 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.


Campaign: GENERIC-standard-pypi-install-pentest


Reasons (based on the campaign):


 - The package contains code to exfiltrate basic data from the system, like IP or username. It has a limited risk.


 - The package overrides the install command in setup.py to execute malicious code during installation.

## Source: ossf-package-analysis (4b68fa52500e16cab90e8038ae96e2ba1be6c448a8caa40ab3e46dc6d3c26436)
The OpenSSF Package Analysis project identified 'kafka-roller' @ 99.0.0 (pypi) as malicious.

It is considered malicious because:

- The package communicates with a domain associated with malicious activity.

---

_Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai_
