Skip to content
Heist/ feed
Back to feed
Critical

Kestra: Unauthenticated Remote Code Execution via Authentication Bypass in `AuthenticationFilter`

Type: advisorySources: OSV

Kestra is an open-source, event-driven orchestration platform. Prior to 1.0.45 and 1.3.21, AuthenticationFilter in Kestra OSS uses request.getPath().endsWith("/configs") to whitelist the public configuration endpoint from Basic Auth. Because the check is a suffix match rather than an exact path match, any API path whose last segment is configs bypasses authentication entirely. An unauthenticated remote attacker can exploit this to create and execute arbitrary workflows without credentials. Because Kestra ships with script execution plugins (plugin-script-shell, plugin-script-python, etc.) enabled by default, this directly results in unauthenticated Remote Code Execution as root inside the Kestra worker container. This vulnerability is fixed in 1.0.45 and 1.3.21.

Products
Not specified
Affected versions
Not specified
Fixed versions
Not specified
CVEs
CVE-2026-49869
Confirmed fixed CVEs
Not specified
Updated in this feed
5 Nov 2026, 06:12 UTC · Revision 1

Source evidence

Kestra: Unauthenticated Remote Code Execution via Authentication Bypass in `AuthenticationFilter`

core-osv · Original source

Published 26 Jun 2026, 20:58 UTC

Kestra is an open-source, event-driven orchestration platform. Prior to 1.0.45 and 1.3.21, AuthenticationFilter in Kestra OSS uses request.getPath().endsWith("/configs") to whitelist the public configuration endpoint from Basic Auth. Because the check is a suffix match rather than an exact path match, any API path whose last segment is configs bypasses authentication entirely. An unauthenticated remote attacker can exploit this to create and execute arbitrary workflows without credentials. Because Kestra ships with script execution plugins (plugin-script-shell, plugin-script-python, etc.) enabled by default, this directly results in unauthenticated Remote Code Execution as root inside the Kestra worker container. This vulnerability is fixed in 1.0.45 and 1.3.21.

osv:CVE-2026-49869
Complete source record
{
  "id": "35742977addeb0987cd112c499c00816b30ea497bd96bb005ca41cfdc55889ac",
  "url": "https://osv.dev/vulnerability/CVE-2026-49869",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "Kestra: Unauthenticated Remote Code Execution via Authentication Bypass in `AuthenticationFilter`",
    "summary": "Kestra is an open-source, event-driven orchestration platform. Prior to 1.0.45 and 1.3.21, AuthenticationFilter in Kestra OSS uses request.getPath().endsWith(\"/configs\") to whitelist the public configuration endpoint from Basic Auth. Because the check is a suffix match rather than an exact path match, any API path whose last segment is configs bypasses authentication entirely. An unauthenticated remote attacker can exploit this to create and execute arbitrary workflows without credentials. Because Kestra ships with script execution plugins (plugin-script-shell, plugin-script-python, etc.) enabled by default, this directly results in unauthenticated Remote Code Execution as root inside the Kestra worker container. This vulnerability is fixed in 1.0.45 and 1.3.21.",
    "evidence": "osv:CVE-2026-49869",
    "products": [],
    "severity": "critical",
    "structured": {
      "id": "CVE-2026-49869",
      "aliases": [
        "CVE-2026-49869",
        "GHSA-5vc5-wxxq-3fjx"
      ],
      "metrics": [
        {
          "type": "CVSS_V3",
          "score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://github.com/kestra-io/kestra",
              "type": "GIT",
              "events": [
                {
                  "introduced": "0"
                },
                {
                  "fixed": "670b719eb5e0fc579ad9044551223642c24335dd"
                },
                {
                  "introduced": "1e670b5e7e92f89533ee17d564263578b0d5ec8c"
                },
                {
                  "fixed": "2541c53230388d76a9acc1b43245ebce31312a88"
                }
              ],
              "database_specific": {
                "extracted_events": [
                  {
                    "cpe": "cpe:2.3:a:kestra:kestra:*:*:*:*:*:*:*:*",
                    "range": [
                      {
                        "introduced": "0"
                      },
                      {
                        "fixed": "1.0.45"
                      }
                    ],
                    "source": "CPE_RANGE"
                  },
                  {
                    "cpe": "cpe:2.3:a:kestra:kestra:*:*:*:*:*:*:*:*",
                    "range": [
                      {
                        "introduced": "1.1.0"
                      },
                      {
                        "fixed": "1.3.21"
                      }
                    ],
                    "source": "CPE_RANGE"
                  }
                ]
              }
            }
          ],
          "versions": [
            "v1.0.44",
            "v1.3.20",
            "v1.0.43",
            "v1.3.19",
            "v1.0.42",
            "v1.3.18",
            "v1.0.41",
            "v1.3.17",
            "v1.0.40",
            "v1.3.16",
            "v1.0.39",
            "v1.3.15",
            "v1.0.38",
            "v1.3.14",
            "v1.3.13",
            "v1.0.37",
            "v1.3.11",
            "v1.0.36",
            "v1.3.9",
            "v1.0.35",
            "v1.3.8",
            "v1.3.7",
            "v1.0.34",
            "v1.3.6",
            "v1.3.5",
            "v1.3.4",
            "v1.0.33",
            "v1.3.3",
            "v1.3.2",
            "v1.0.32",
            "v1.0.31",
            "v1.3.1",
            "v1.0.30",
            "v1.3.0",
            "v1.3.0-rc1",
            "v1.0.29",
            "v1.3.0-rc0",
            "v1.0.28",
            "v1.0.27",
            "v1.0.26",
            "v1.0.25",
            "v1.0.24",
            "v1.0.23",
            "v1.0.22",
            "v1.0.21",
            "v1.0.20",
            "v1.0.19",
            "v1.0.18",
            "v1.0.17",
            "v1.0.16",
            "v1.0.15",
            "v1.0.14",
            "v1.0.13",
            "v1.0.12",
            "v1.0.11",
            "v1.0.10",
            "v1.0.9",
            "v1.0.8",
            "v1.0.7",
            "v1.0.6",
            "v1.0.5",
            "v1.0.4",
            "v1.0.3",
            "v1.0.2",
            "v1.0.1",
            "v1.0.0",
            "v0.0.1234",
            "v0.19.0",
            "v0.9.1",
            "v0.9.0",
            "v0.8.1",
            "v0.8.0",
            "v0.7.1",
            "v0.7.0"
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-49869.json"
          }
        }
      ],
      "modified": "2026-10-28T02:30:42.934502986Z",
      "provider": "osv",
      "references": [
        "https://www.cisa.gov/known-exploited-vulnerabilities-catalog?field_cve=CVE-2026-49869",
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/49xxx/CVE-2026-49869.json",
        "https://github.com/kestra-io/kestra/security/advisories/GHSA-5vc5-wxxq-3fjx",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-49869"
      ],
      "provider_metadata": {
        "cwe_ids": [
          "CWE-184",
          "CWE-287",
          "CWE-78",
          "CWE-918"
        ],
        "cna_assigner": "GitHub_M",
        "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/49xxx/CVE-2026-49869.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-49869",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 510986,
  "published_at": "2026-06-26T20:58:19.576+00:00"
}