PoeLLM: How Attackers Turned Exposed AI Servers into a Cryptomining Botnet

Researchers traced PoeLLM to vulnerable servers running AI and developer tools. Understand the exploit path, unusual GitHub-poem technique and security lessons.

Read in: English · తెలుగు · हिन्दी

Sign in to save

Illustrative server racks with stylized malicious network traffic, representing compromised AI infrastructure.

In a campaign tracked by Black Lotus Labs, vulnerable AI and developer services became entry points for malware that mined cryptocurrency and searched for new victims. Its command-server address came from an unlikely source: a poem stored on GitHub.

A company deploys an AI service on a cloud server. Its API responds normally, and developers can use it to connect an application to language models. But an exposed service is running vulnerable software. An attacker finds it, gains access, and installs malware.

The AI service may continue to work. Meanwhile, the compromised machine could be consuming resources to mine cryptocurrency and searching the internet for other vulnerable servers.

That is the risk illustrated by Canto Incognito, a campaign investigated by Lumen’s Black Lotus Labs. The researchers reported that its PoeLLM malware had affected more than 3,400 servers since activity began in April. Targeted or affected installations included AI infrastructure software such as LiteLLM and Ollama, as well as Gotenberg and Gitea. The number describes servers observed by researchers, not companies or people. [1]

The investigation is notable partly because infected computers used words in a poem hosted on GitHub to calculate where to find the attacker’s command server. But the underlying compromise did not depend on tricking a language model with a prompt. It involved vulnerable network services, malicious software and unauthorized use of computing resources.

An AI service is still a server

Self-hosted AI deployments run on operating systems, containers, API gateways, authentication services and network infrastructure. These components need the same controls as other production software.

Ollama supports running models on local or self-managed systems. LiteLLM can act as an API gateway across model providers. Neither product is inherently malicious. Risks arise when vulnerable versions, excessive permissions or unnecessarily exposed endpoints make a deployment reachable and exploitable.

PoeLLM also affected Gotenberg, a document-conversion service, and Gitea, a code-hosting platform. The operator did not exclusively seek AI model servers: vulnerable systems could supply computing resources and a foothold for further attacks. [1]

A documented weakness in the LiteLLM gateway

One specific vulnerability examined in connection with the campaign was CVE-2026-42271. LiteLLM supports the Model Context Protocol (MCP), through which AI applications can communicate with external tools. Some MCP connections use standard input and output (stdio), which can require launching a local process.

The vulnerable LiteLLM implementation offered two test endpoints that accepted an MCP server configuration. That configuration could include a command, its arguments and environment variables. In certain cases the gateway spawned the specified command on its host. The endpoints checked for a valid API key but did not require the administrator role. A lower-privileged authenticated user could therefore cause command execution with the permissions of the LiteLLM process. [2]

This was an authorization failure in a tool-integration feature, not a model generating unsafe text. A gateway API key was insufficient protection if that key could access functions with administrative consequences.

The advisory covers LiteLLM versions 1.74.2 up to, but not including, 1.83.7. It lists a CVSS 4.0 score of 8.7 (High) and confirms a fix in 1.83.7. The fixed endpoints require the PROXY_ADMIN role. The advisory also describes a temporary gateway-level block of both MCP test endpoints for environments unable to upgrade immediately. [2]

Black Lotus Labs found an exploit reference to /mcp-rest/test/connection in a malware sample and described it as a likely exploitation route for some victims. It did not establish that every PoeLLM infection used this CVE. Other products and exposure paths were present in the campaign. [1]

What the malware did after gaining access

Black Lotus Labs examined a Linux executable identified as libgcrypt. It contained remote-shell capabilities, scanning and exploit functionality, and cryptocurrency miners including XMRig and Iron. The researchers observed infected hosts communicating with Kryptex mining infrastructure. [1]

Cryptomining allows attackers to use the victim’s computing resources for their own benefit. The effect may appear as sustained processor utilization, increased cloud costs or degraded service responsiveness. Not every infected server was confirmed to contain a high-end AI GPU, and the investigation does not show that every miner consumed GPU capacity.

The campaign also used compromised systems to search for additional victims. Machines already infected became scanners and exploit servers, extending the operator’s reach while hiding some activity behind infrastructure belonging to other organizations. The researchers saw possible experimentation with distributed attacks on SSH and other login services, but did not characterize that capability as fully established. [1]

A poem that led malware to its command server

Malware usually needs a command-and-control server (C2) from which its operator can send instructions or stage additional files. If the malware embeds one permanent server address, defenders may block that destination.

PoeLLM used a changeable address-discovery mechanism. The malware fetched text from a file called dash.css in a GitHub repository that resembled a fork of the Node.js website source. The file contained a poem titled On the Nature of Connection. The malicious file was not part of the legitimate Node.js project. [1]

The malware extracted four selected words or phrases from specific positions in the poem. Its internal dictionary mapped those selections to numbers, which were combined as the four components of an IPv4 address. When the operator changed those words, an infected system could calculate a different C2 address without needing a new malware binary.

Black Lotus Labs recorded 11 revisions of the poem and identified 12 C2 addresses used during the campaign. [1]

This was data encoding performed by ordinary malware code, not a prompt-injection technique. GitHub hosted the changing text. The public evidence does not show GitHub itself was compromised. The technique makes fixed-address blocking less durable, but does not make the traffic invisible to monitoring.

PoeLLM: observed campaign mechanismExplanatory schematic: an exposed service such as LiteLLM or another vulnerable AI or developer tool leads to a compromised host. The host runs malware with miners and scanning, which leads to cryptomining and a search for new targets. The host finds its command server through a dynamic discovery step that fetches a GitHub-hosted poem and converts selected words into an IP address. {“publisher”: “TechiesJournal”, “author”: “Prasad Kukkala”, “asset”: “poellm-ai-server-botnet-cryptomining-visual-1”, “role”: “diagram”, “creator”: “TechiesJournal, authored as programmatic SVG by Claude (AI agent), not a generative image model”, “generation_method”: “AI-assisted programmatic SVG from a shared visual vocabulary (tools/sdlc-vs-aidlc/vocab.py)”, “source_slug”: “poellm-ai-server-botnet-cryptomining”, “source_revision”: “poellm-final-copy-2026-10-14”, “created”: “2026-10-14”, “rights”: “Copyright 2026 TechiesJournal. All rights reserved.”, “external_licence”: “none, no third-party material”, “watermark”: “visible TechiesJournal wordmark, lower right, part of the SVG”, “language”: “language-neutral (English labels)”, “viewBox”: “0 0 1400 760”, “format”: “inline SVG”, “theme”: “light and dark via the theme switch”} PoeLLM: observed campaign mechanismAn explanatory schematic, not an exact replay of one victim’s infection1 Exposed serviceLiteLLM or other vulnerableAI or developer tools2 Compromised hostMalware executes,miners and scanning3 Downstream activityCryptomining andsearch for new targets4 Dynamic C2 discoveryFetch a GitHub-hosted poem,convert selected words to IPC2 locationSolid arrows show conceptual dependencies observed in the campaign. Specific initial exploits differed across hosts. TechiesJournal PoeLLM: observed campaign mechanismExplanatory schematic: an exposed service such as LiteLLM or another vulnerable AI or developer tool leads to a compromised host. The host runs malware with miners and scanning, which leads to cryptomining and a search for new targets. The host finds its command server through a dynamic discovery step that fetches a GitHub-hosted poem and converts selected words into an IP address. {“publisher”: “TechiesJournal”, “author”: “Prasad Kukkala”, “asset”: “poellm-ai-server-botnet-cryptomining-visual-2”, “role”: “diagram”, “creator”: “TechiesJournal, authored as programmatic SVG by Claude (AI agent), not a generative image model”, “generation_method”: “AI-assisted programmatic SVG from a shared visual vocabulary (tools/sdlc-vs-aidlc/vocab.py)”, “source_slug”: “poellm-ai-server-botnet-cryptomining”, “source_revision”: “poellm-final-copy-2026-10-14”, “created”: “2026-10-14”, “rights”: “Copyright 2026 TechiesJournal. All rights reserved.”, “external_licence”: “none, no third-party material”, “watermark”: “visible TechiesJournal wordmark, lower right, part of the SVG”, “language”: “language-neutral (English labels)”, “viewBox”: “0 0 400 560”, “format”: “inline SVG”, “theme”: “light and dark via the theme switch”} PoeLLM: observed campaign mechanismAn explanatory schematic, not an exact replay of one victim’s infection1 Exposed serviceLiteLLM or other vulnerableAI or developer tools2 Compromised hostMalware executes,miners and scanning3 Downstream activityCryptomining andsearch for new targetsHow the host finds its command server (C2):4 Dynamic C2 discoveryFetch a GitHub-hosted poem,convert selected words to IPThe result is the C2 location the host (2) uses.Solid arrows show conceptual dependencies observed in thecampaign. Specific initial exploits differed across hosts. TechiesJournal
Accessible text alternative for this figure

Four steps. Step 1, an exposed service such as LiteLLM or another vulnerable AI or developer tool. Step 2, a compromised host, where the malware executes, mines cryptocurrency and scans. Step 3, downstream activity: cryptomining and a search for new targets.

Step 4, dynamic command-server discovery: the malware fetches a GitHub-hosted poem and converts selected words into an IP address, which gives the compromised host the location of its command server. The schematic is explanatory and not an exact replay of one victim’s infection. The specific initial exploits differed across hosts.

Figure: Original explanatory reconstruction based on Black Lotus Labs findings. The vulnerable entry point varies by victim. The diagram is not a packet-level reconstruction of a specific infection.

Why standard security monitoring matters

This campaign shows why security teams should examine both how services are reached and what a server does after compromise.

An unnecessarily public AI gateway expands the attack surface. A vulnerable administrative or integration endpoint may permit a privilege boundary to be crossed. A process running with broad operating-system permissions increases the damage. If outgoing traffic is unmonitored, the server may contact C2 or mining infrastructure or probe other hosts before anyone notices.

Cryptomining may generate unusual resource use, but high CPU or GPU load alone proves nothing: legitimate inference can also be expensive. Investigators need process evidence, network records, access logs and current indicators of compromise.

Practical controls for exposed AI infrastructure
ControlPractical checkWhat it helps address
External exposureInventory AI gateways, model servers and support services, and remove unnecessary public accessInternet scanning and initial reachability
Patch managementReview affected products and versions against current advisoriesKnown exploitable software flaws
AuthorizationRestrict privileged administration and tool-execution endpointsLower-privilege access to dangerous operations
Runtime isolationUse least-privileged users, limited containers and scoped credentialsImpact of successful host-level execution
Egress monitoringInvestigate unexpected destinations, scanning and mining-pool connectionsPost-compromise activity
Process monitoringExamine unexplained executables and sustained compute activityMalware and resource abuse
Incident recoveryPreserve evidence, isolate affected workloads and rebuild from trusted sourcesContainment and eradication

For organizations running the affected LiteLLM versions, the most direct action is to update to 1.83.7 or a later fixed version, verify that the vulnerable endpoints are appropriately restricted, and investigate whether the system shows signs of compromise. A network block is a temporary mitigation, not a substitute for a patch and investigation. [2]

Black Lotus Labs published historical C2 indicators and links to its current threat-intelligence resources. Teams should use the latest available indicators, but should not treat a list of historical IP addresses as comprehensive: the campaign was designed to move between destinations. [1]

What the research cannot tell us

The 3,400-plus figure is the researcher-reported count of affected servers in the report’s key takeaways. The body of the report refers to almost 2,200 victim servers and does not reconcile the two counts, so they should not be added together. Neither figure establishes the number of organizations or end users affected. [1]

The public findings do not identify a confirmed exploitation chain for each victim. They do not establish that information was stolen from every affected server. Black Lotus Labs assessed a possible Italian-speaking operator, based on language artifacts and infrastructure observations, but did not establish the operator’s identity or nationality. [1]

The broader lesson for AI deployments

PoeLLM stands out because it hid its changing command-server address inside a poem. The weaknesses it exploited are more familiar: exposed applications, vulnerable features and inadequate security boundaries around production services.

Running a model on your own infrastructure gives an organization more control over where its workloads execute. It also makes the organization responsible for securing the surrounding software and network environment.

The model does not need to be fooled for its server to be compromised. AI infrastructure needs ordinary production security, restricted access, sound authorization, prompt patching, monitored outbound traffic and tested recovery, alongside AI-specific safeguards.

References and further reading

The advisory and the Lumen report were opened and checked on 14 October 2026. Indicator lists change, so use the current published indicators and do not treat a historical list as complete.

  1. Black Lotus Labs: Canto incognito: tracking the PoeLLM malware. Lumen, 2026. Primary campaign investigation, telemetry, malware analysis and indicators of compromise.
  2. GitHub Security Advisory GHSA-v4p8-mg3p-g94g and CVE-2026-42271. Published April 2026, updated June 2026. LiteLLM scope, versions, severity, patch and workaround.
  3. Gotenberg: Installation guidance. Official deployment and exposure guidance.
  4. Black Lotus Labs: Public threat-intelligence repositories. Additional campaign indicators, including the PoeLLM indicator file. Verify at release time.
Report a correction

Corrections go to the editor and are never published automatically. No account needed.