Somewhere in your cloud account there may be a LiteLLM proxy someone stood up for a pilot in May, or an Ollama box with a GPU that “we’ll lock down later.” Lumen’s Black Lotus Labs says a botnet called PoeLLM has been looking for exactly those machines since April, and it has found more than 3,400 of them.
The AI pilot nobody added to the asset list is now somebody’s crypto miner and somebody’s scanner.
What happened
Black Lotus Labs published its PoeLLM research on October 7, 2026. The malware, an ELF binary named libgcrypt, mostly lands on internet-exposed open-source services: the LiteLLM AI gateway, Ollama, the Gotenberg PDF converter and the Gitea code host. Lumen also saw possible targeting of Ivanti Sentry. That’s how it first ran into the campaign, while investigating Ivanti Sentry bug CVE-2026-10520.
Don’t Miss the Policy Changes That Affect Security Decisions
Get the key CISA actions, new regulations, guidance, and risk shifts in a quick daily brief.
By subscribing you agree to our Privacy Policy.
Free. Weekday mornings. 5 minutes or less.
Once on a server, PoeLLM installs XMRig and Iron crypto miners that report to the Kryptex mining pool, opens a remote shell, and turns the machine into a scanner and exploit launcher for the next victim. Its main targets are ports 3000 (Gotenberg) and 4000 (LiteLLM). For LiteLLM, the sample Lumen analyzed hits /mcp-rest/test/connection, the endpoint behind CVE-2026-42271, a command-injection flaw in LiteLLM’s MCP test endpoints. Horizon3 has shown that chaining it with Starlette’s “BadHost” bug (CVE-2026-48710) removes the need for credentials.
The odd detail: infected machines find their command server by reading a poem. The operator keeps a two-stanza poem, “On the Nature of Connection,” in a file called dash.css in a GitHub repo that forks the nodejs.org site. The malware pulls four words from set positions, maps each to a number, and builds an IPv4 address from them. To move the botnet, the operator edits the poem. Lumen counted 11 edits. It assesses with moderate confidence that the operator speaks Italian, and says victims are mostly in the U.S. and Western Europe. Peak activity passed 800 infected servers in a single day.
Why it matters
Mining is the polite outcome. A LiteLLM proxy holds API keys for every model provider it fronts. Gitea holds your source. And a server that can run commands from a crafted request can do a lot more than mine. These boxes often sit outside normal patching because a team spun them up quickly to try something. Gotenberg’s own install guide says not to expose it to the internet, and Lumen found hundreds of exposed Gotenberg servers anyway.
What to do first
- Scan your own external ranges and cloud security groups for anything answering on 3000, 4000 or Ollama’s 11434, and for any Gitea login page. Assume the first list is incomplete.
- Update LiteLLM. CVE-2026-42271 is fixed in 1.83.7. If you followed our September 10 brief and moved to 1.84.0 or later, you already have this fix too. Make sure Starlette in the same environment is 1.0.1 or later.
- If you can’t update today, block
/mcp-rest/test/connectionand/mcp-rest/test/tools/listat the proxy, and restrict the service to trusted networks. - Move Gotenberg behind the firewall. It was never meant to face the internet.
- If a box was exposed, rotate the model-provider keys and secrets it stored. Don’t just patch it.
Forward this
If your team runs LiteLLM, Ollama, Gotenberg or Gitea anywhere: a botnet has taken over more than 3,400 exposed copies to mine crypto and attack others. Please tell IT where yours run so we can make sure they aren’t open to the internet.
Details
- Research: Lumen Black Lotus Labs, “Canto incognito: tracking the PoeLLM malware,” October 7, 2026.
- Active since: At least April 2026 (first poem commit April 13). Broader scanning and exploitation from May.
- Scale: More than 3,400 victim servers (Lumen’s updated count). Peak of more than 800 active per day.
- Targets: LiteLLM, Ollama, Gotenberg, Gitea; possible Ivanti Sentry (CVE-2026-10520).
- LiteLLM bug: CVE-2026-42271, command injection in
/mcp-rest/test/connectionand/mcp-rest/test/tools/list. Affects 1.74.2 through 1.83.6; fixed in 1.83.7. Chained with Starlette CVE-2026-48710 (Starlette 1.0.0 and earlier) for unauthenticated RCE, per Horizon3. - Payload: ELF
libgcrypt. Remote shell, XMRig and Iron miners, HTTP/S scanning, exploit deployment. - C2: Derived from four words in a GitHub-hosted poem. Infrastructure includes compromised routers.
Hunt / verify
- Check egress logs for the three C2s Lumen lists as still active:
92.119.164.50,103.249.201.108,178.128.14.204. Its GitHub IOC list has the older ones. - Look for outbound connections to C2 ports 3778, 5001, 5002 or 9999. Watch for downloads from port 81, and traffic to Kryptex endpoints such as
5.180.174.162:8029and46.21.245.211:7029. - On hosts: an unexpected process or file named
libgcryptoutside system library paths, sustained GPU/CPU load with no matching workload, and new cron or systemd entries. - In LiteLLM logs: POSTs to the
/mcp-rest/test/endpoints and unusual Host header values. - Outbound scanning to ports 3000/4000 from your servers means one of them is already a worker.
PoeLLM botnet (Lumen, Oct 7): 3,400+ exposed LiteLLM / Ollama / Gotenberg / Gitea servers hijacked for crypto mining and scanning. Find anything internet-facing on 3000/4000/11434, update LiteLLM (≥1.83.7, ideally 1.84.0+) and Starlette (≥1.0.1), pull Gotenberg off the internet, rotate keys on anything that was exposed.
Sources
- Lumen Black Lotus Labs: Canto incognito: tracking the PoeLLM malware
- BleepingComputer: PoeLLM malware infects exposed AI servers in cryptomining attacks
- Horizon3: CVE-2026-42271 LiteLLM unauthenticated RCE (chained with CVE-2026-48710)
- CVE.org: CVE-2026-42271
Start your morning with the signal that matters.
Get the biggest cybersecurity developments, why they matter, and where to go deeper on CyberExperts.
By subscribing you agree to our Privacy Policy.
Free. Weekdays. Built for operators.