{"id":"CVE-2026-49869","kind":"vulnerability","aliases":["CVE-2026-49869"],"related":[],"title":"Kestra is an open-source, event-driven orchestration platform","description":"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.","summary":"Kestra OSS AuthenticationFilter whitelists any API path ending in /configs, bypassing Basic Auth. An unauthenticated attacker can create and run a flow with the default shell/python script plugins, giving root RCE inside the worker container. The official docker-compose mounts docker.sock, so the host Docker daemon may be reachable too. CISA KEV lists it as exploited since 2026-09-02, and a public PoC exists.","severity":"critical","cvss":10.0,"epss":null,"exploited":true,"exploited_at":"2026-09-02T00:00:00+00:00","products":[{"name":"Kestra Kestra OSS","fixed":[],"affected":"","ecosystem":"vendor"},{"name":"Kestra OSS","fixed":["1.0.45","1.3.21"],"affected":"< 1.0.45; >= 1.1.0, <= 1.3.20","ecosystem":"maven"},{"name":"kestra","fixed":["1.0.45"],"affected":"< 1.0.45","ecosystem":"vendor"},{"name":"kestra","fixed":["1.3.21"],"affected":">= 1.1.0, < 1.3.21","ecosystem":"vendor"}],"ecosystems":["maven","vendor"],"tags":["auth-bypass","docker","exploited","kestra","rce","runtime","self-hosted","workflow-orchestration"],"not_affected_if":["managed-hosting","patched-1.0.45","patched-1.3.21"],"how_to_check":"Check the running Kestra version (UI footer or GET /api/v1/configs). Vulnerable if <= 1.3.20, i.e. < 1.0.45 on the 1.0 line or 1.1.0-1.3.20. Look for unexpected flows (e.g. one named 'configs') and unfamiliar executions or shell tasks. Check whether port 8080 is reachable, and whether docker.sock is mounted in the container.","fix":"Upgrade to 1.0.45 (1.0 line) or 1.3.21 (1.3 line) or later, and confirm the version after restart. Until then, block network access to the Kestra API port. If the instance was exposed, rotate secrets and cloud credentials held in flows and the secret store, and do a forensic review.","status":"open","published_at":"2026-06-26T22:16:32+00:00","first_seen_at":"2026-10-23T19:11:51+00:00","triaged_at":"2026-10-23T20:31:42+00:00","updated_at":"2026-10-23T23:44:52+00:00","category":"runtime","confidence":0.9,"triage":{"at":"2026-10-23T20:31:42Z","model":"claude-haiku-5-5","output":{"fix":"Apply the vendor's mitigation or patch per CISA BOD 26-04 guidance; affected and fixed versions are not stated in the sources. If no mitigation exists, discontinue use of the product.","summary":"Kestra OSS has an OS command injection flaw that lets an unauthenticated remote attacker create and run arbitrary workflows without credentials. CISA lists it as actively exploited in the wild.","category":"runtime","who_cares":["kestra","self-hosted","workflow-orchestration"],"confidence":0.6,"analyst_note":"Find affected/fixed Kestra OSS versions and vendor advisory; check CISA KEV entry for CVE-2026-49869 and the Kestra GitHub security advisory.","how_to_check":"unknown","needs_analyst":true,"not_affected_if":["managed-hosting"],"severity_if_unknown":"critical"},"cost_usd":0.000373,"input_tokens":2197,"output_tokens":307,"severity_before":"unknown"},"analyst_status":"done","analyst_note":"Find affected/fixed Kestra OSS versions and vendor advisory; check CISA KEV entry for CVE-2026-49869 and the Kestra GitHub security advisory.","search":"'-02':99B '-09':98B '-2026':13A,16A '-49869':14A,17A '/configs':48B,128C '1.0.45':118C,216C '1.3.21':120C,218C '2026':97B 'api':44B,152C 'arbitrari':173C 'attack':54B,165C 'auth':26B,51B,137C 'auth-bypass':25B 'authent':160C 'authenticationfilt':41B,121C 'basic':50B,136C 'bypass':27B,49B,159C 'check':140C 'cisa':90B 'code':202C 'compos':78B 'config':158C 'configur':133C 'contain':73B,210C 'creat':56B,170C 'credenti':176C 'cve':12A,15A 'daemon':85B 'default':63B,195C 'direct':197C 'docker':28B,77B,84B 'docker-compos':76B 'docker.sock':80B 'driven':9A,113C 'enabl':193C 'end':46B 'endpoint':134C 'endswith':127C 'entir':161C 'etc':192C 'event':8A,112C 'event-driven':7A,111C 'exact':148C 'execut':172C,182C,203C 'exist':104B 'exploit':29B,95B,167C 'fix':214C 'flow':60B 'give':67B 'host':35B,83B 'insid':70B,206C 'kestra':1A,18A,19A,21A,23A,24A,30B,39B,105C,123C,178C,208C 'kev':91B 'last':155C 'list':92B 'match':144C,150C 'may':86B 'mount':79B 'offici':75B 'open':5A,109C 'open-sourc':4A,108C 'orchestr':10A,38B,114C 'oss':20A,22A,40B,124C 'path':45B,149C,153C 'platform':11A,115C 'plugin':66B,183C,185C,189C 'plugin-script-python':188C 'plugin-script-shel':184C 'poc':103B 'prior':116C 'public':102B,132C 'python':191C 'rather':145C 'rce':31B,69B 'reachabl':88B 'remot':164C,201C 'request.getpath':126C 'result':198C 'root':68B,205C 'run':58B 'runtim':32B 'script':65B,181C,186C,190C 'segment':156C 'self':34B 'self-host':33B 'shell':187C 'shell/python':64B 'ship':179C 'sinc':96B 'sourc':6A,110C 'suffix':143C 'unauthent':53B,163C,200C 'use':125C 'vulner':212C 'whitelist':42B,130C 'whose':154C 'without':175C 'worker':72B,209C 'workflow':37B,174C 'workflow-orchestr':36B","nicknames":[],"mitigations":[],"who_affected":null,"tier":null,"verified":{},"analyst_revisit_at":null,"first_public_at":"2026-06-26T22:16:32+00:00","kev":{"dateAdded":"2026-09-02","dueDate":"2026-09-05","requiredAction":"Apply mitigations in accordance with vendor instructions, ensuring compliance with CISA’s BOD 26-04 Prioritizing Security Updates Based on Risk (see URL in Notes) guidance and CISA’s “Forensics Triage Requirements” (see URL in Notes). Follow applicable BOD 26-04 guidance for cloud services or discontinue use of the product if mitigations are unavailable. Stakeholders are responsible for evaluating each asset's internet exposure and ensuring adherence to BOD 26-04 patching guidelines.","knownRansomwareCampaignUse":"Unknown"},"cvss_vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H","cvss_by":"security-advisories@github.com","poc_count":1,"sources":[{"source":"kev","external_id":"CVE-2026-49869","url":"https://www.cisa.gov/known-exploited-vulnerabilities-catalog?search_api_fulltext=CVE-2026-49869","severity":null,"published_at":"2026-09-02T00:00:00+00:00","modified_at":null,"first_seen_at":"2026-10-23T19:11:51+00:00","fetched_at":"2026-10-25T11:39:13+00:00","note":null},{"source":"analyst","external_id":"CVE-2026-49869:91","url":null,"severity":null,"published_at":"2026-10-23T21:30:35+00:00","modified_at":"2026-10-23T21:30:35+00:00","first_seen_at":"2026-10-23T21:30:35+00:00","fetched_at":"2026-10-23T21:30:35+00:00","note":"Read Kestra GHSA-2q47-568g-9h4f/GHSA-5vc5-wxxq-3fjx and NVD: /configs suffix-match auth bypass (CVSS 10.0), fixed 1.0.45 and 1.3.21; KEV added 2026-09-02; public PoC (EQSTLab). X/HN not searched."},{"source":"nvd","external_id":"CVE-2026-49869","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-49869","severity":null,"published_at":"2026-06-26T22:16:32+00:00","modified_at":"2026-09-03T13:05:55+00:00","first_seen_at":"2026-10-23T23:44:52+00:00","fetched_at":"2026-10-23T23:44:52+00:00","note":null}],"documents":[{"id":1042,"url":"https://github.com/kestra-io/kestra/security/advisories/GHSA-2q47-568g-9h4f","title":"Kestra GHSA-2q47-568g-9h4f: Unauthenticated RCE via /configs auth-filter bypass","kind":"advisory","source":"analyst","text":null,"published_at":null,"relation":"advisory","confidence":null,"note":null},{"id":1043,"url":"https://github.com/kestra-io/kestra/security/advisories/GHSA-5vc5-wxxq-3fjx","title":"Kestra GHSA-5vc5-wxxq-3fjx: AuthenticationFilter auth bypass","kind":"advisory","source":"analyst","text":null,"published_at":null,"relation":"fix","confidence":null,"note":null},{"id":1044,"url":"https://github.com/EQSTLab/CVE-2026-49869","title":"EQSTLab PoC and Docker lab for CVE-2026-49869","kind":"poc","source":"analyst","text":null,"published_at":null,"relation":"poc","confidence":null,"note":null},{"id":1045,"url":"https://nulltap.com/p/kestra-auth-bypass-rce/","title":"Attackers Exploit Kestra Login Bypass That Reaches Root (nulltap)","kind":"blog","source":"analyst","text":null,"published_at":null,"relation":"discussion","confidence":null,"note":null},{"id":1046,"url":"https://nvd.nist.gov/vuln/detail/cve-2026-49869","title":"NVD CVE-2026-49869","kind":"other","source":"analyst","text":null,"published_at":null,"relation":"describes","confidence":null,"note":null}],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}