CVE Tools
Back to blog

Kestra's Login Bypass Was One Line of Code. Attackers Mined Crypto With It for Two Months Before CISA Noticed.

CVE-2026-49869 exists because a Java filter checks whether a path ends in "/configs" instead of matching it exactly. Microsoft traced a threat actor exploiting it since late June — root shell execution, Docker socket enumeration, an XMRig miner, and exfiltration hidden inside Kestra's own key-value store.

A tangled workflow-pipeline diagram on a dark terminal screen, one node glowing red where an unlocked padlock sits at the end of a path labeled "/configs", with faint cryptocurrency mining icons bleed
A tangled workflow-pipeline diagram on a dark terminal screen, one node glowing red where an unlocked padlock sits at the end of a path labeled "/configs", with faint cryptocurrency mining icons bleed

A single misplaced string check in Kestra's login filter let anyone on the network create and run arbitrary workflows without a password. Microsoft's threat-intel team says someone found it in late June 2026 — and used it to mine Monero and rifle through other containers' secrets for roughly two months before CISA added the bug to its Known Exploited Vulnerabilities catalog on September 2.

10.0CVSS scoreMaximum possible severity, scope changed
1.9%EPSS (our DB)78.5th percentile — despite months of confirmed active exploitation
3 daysFederal remediation deadlineSept 2 → Sept 5, under CISA's new risk-tiered BOD 26-04

One endsWith() call

Kestra is an open-source, event-driven workflow orchestrator — the kind of tool that sits in front of data and AI pipelines, wiring together scripts, triggers, and scheduled jobs. Its AuthenticationFilter is supposed to let one endpoint, the public config page, skip login. According to Kestra's own GitHub Security Advisory (GHSA-5vc5-wxxq-3fjx), the whitelist check in AuthenticationFilter.java looks like this:

// AuthenticationFilter.java, webserver module, line 49
boolean isConfigEndpoint = request.getPath().endsWith("/configs");

From bypass to root shell

Per the advisory, an attacker can PUT a malicious flow to a path like /flows/{namespace}/configs, then POST to /executions/{namespace}/configs to run it — no credentials required. Kestra ships script-execution plugins (shell, Python, Node) enabled by default, so that execution runs as root inside the worker container.

CVE-2026-49869: from an unauthenticated PUT to a cryptominer

  1. Unauthenticated PUT to /flows/{ns}/configs
  2. Unauthenticated POST to /executions/{ns}/configs
  3. Shell/Python plugin runs as root
  4. Worker's Docker socket queried for container Env arrays
  5. Secrets harvested from other running containers
  6. XMRig miner + curl-pipe-shell output stored via Kestra's own KV API

What Microsoft watched happen since June

Microsoft published a forensic writeup on August 26, 2026, assessing with high confidence that a threat actor's initial access ran through this exact bug starting in late June — months before CISA's KEV listing. The telemetry shows a four-stage compromise.

The Kestra compromise, per Microsoft's telemetry

  1. Two closely timed shell sessions from the workflow engine
    The first produced shell initialization activity; the second performed the main follow-on actions.
  2. Docker socket queried, container secrets exposed
    The attacker inspected Config.Env arrays across all running containers, collecting embedded cloud, database, and API credentials from other workloads on the host.
  3. XMRig v6.26.0 deployed with RandomX MSR tuning
    Miner binary retrieved from a public release source, renamed, and run in the background with CPU-tuning behavior toward a Monero mining pool; restrictive permissions and immutable-file attributes were set on temp paths for defense evasion.
  4. curl-pipe-shell data harvesting
    A script (referenced as harvest.sh in Microsoft's detection table) collected host data; output was encoded and stored through Kestra's own key-value interface instead of written to disk.
  5. Microsoft publishes the forensic writeup
    "When AI infrastructure becomes the target: Securing gateways and control points."
  6. CISA adds CVE-2026-49869 to KEV
    One of seven vulnerabilities added that day; federal agencies given a 3-day remediation window under BOD 26-04, due September 5.
The Kestra compromise exposed four impact paths: shell execution through the workflow engine, container-environment exposure through Docker socket access, host resource hijacking through miner deployment, and follow-on collection through workflow task execution.
— Microsoft Security Blog, August 26, 2026
IndicatorTypeRole
172.232.38.92:32991IP:port (Linode VPS)Reverse-shell C2
auto.c3pool.org:443DomainXMRig Monero mining pool
2001:41d0:701:1100::adfdIPv6 addressc3pool mining endpoint
47.86.197.116IPv4 addressc3pool mining endpoint

Three of the seven target AI infrastructure

CVE-2026-49869 didn't ship alone. It was one of seven vulnerabilities CISA added to KEV on September 2, and three of the seven sit in AI/ML-adjacent infrastructure — Kestra (data/AI pipeline orchestration), LiteLLM (an AI gateway), and Starlette (the ASGI framework underlying vLLM, LiteLLM, and MCP servers). Reporting on the batch called it the first KEV wave where AI components made up nearly half the additions.

CVEVendor / productCVSSOur priority
CVE-2026-49869Kestra OSS10.0critical
CVE-2026-9586Sangoma Switchvox9.8critical
CVE-2026-82329JFrog Artifactory9.8critical
CVE-2026-83548SonicWall SMA1000 (SSRF)10.0critical
CVE-2026-83549SonicWall SMA1000 (OS command injection)7.8high
CVE-2026-59822BerriAI LiteLLM8.2high
CVE-2026-48710Kludex Starlette6.5medium

Our own signals still lag the reality

What to do

  1. Upgrade to Kestra 1.0.45 or 1.3.21 — there is no configuration-level workaround for this bug.
  2. Audit worker containers for flows or executions you don't recognize, particularly any created via routes ending in /configs.
  3. Check whether your Kestra worker has the Docker socket mounted; if it does, assume any secret in another container's environment on that host may have been read.
  4. Rotate credentials that were reachable from the worker container's environment during the exposure window.
  5. Inspect your Kestra key-value store for unexpected entries — this actor used it as an exfiltration channel, not just workflow state.
  6. Hunt for the IOCs above (the C2 IP and c3pool mining infrastructure) in outbound connection logs.

CVE and KEV data as of 2026-09-10live record →

We use analytics cookies to see which pages and articles actually help people. Decline and none of them run — the site works the same. What we store