{"id":"CVE-2026-119129","kind":"vulnerability","aliases":["CVE-2026-119129"],"related":[],"title":"ZITADEL: missing authorization in Login V2 lets attackers take victims' OAuth tokens","description":"ZITADEL 3.0.0 through 3.4.15 and 4.0.0 before 4.19.5 contains a missing authorization vulnerability in Login V2 that allows attackers to approve OAuth 2.0 device authorizations using a victim's existing session without consent. Attackers can send a signed-in user a link carrying the attacker's user code to obtain the victim's tokens, and can bypass project access settings via the OIDC device authorization API.","summary":"ZITADEL's Login V2 approves OAuth 2.0 device authorizations using a victim's existing session without asking for consent. An attacker who sends a signed-in user a link with the attacker's user code can obtain that user's tokens, and can bypass project access settings through the OIDC device authorization API.","severity":"high","cvss":8.6,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["identity","infrastructure","oauth","oidc","self-hosted","zitadel"],"not_affected_if":["version-outside-affected-ranges"],"how_to_check":"- Check the ZITADEL version running in production: versions 3.0.0 through 3.4.15 and 4.0.0 before 4.19.5 are affected.\n- Confirm whether the OAuth 2.0 device authorization flow is enabled for your instance (unknown from sources how to check this).","fix":"- ZITADEL 4.x: move to a release at or after `4.19.5`.\n- ZITADEL 3.x: the sources give no fixed 3.x version; upgrade path unknown.","status":"open","published_at":"2026-10-29T16:18:05+00:00","first_seen_at":"2026-10-29T16:25:58+00:00","triaged_at":"2026-10-29T16:29:26+00:00","updated_at":"2026-10-29T16:29:26+00:00","category":"infrastructure","confidence":0.6,"triage":{"at":"2026-10-29T16:29:26Z","model":"claude-haiku-5-5","output":{"fix":"- ZITADEL 4.x: move to a release at or after `4.19.5`.\n- ZITADEL 3.x: the sources give no fixed 3.x version; upgrade path unknown.","reach":"internet","title":"ZITADEL: missing authorization in Login V2 lets attackers take victims' OAuth tokens","impact":"high","summary":"ZITADEL's Login V2 approves OAuth 2.0 device authorizations using a victim's existing session without asking for consent. An attacker who sends a signed-in user a link with the attacker's user code can obtain that user's tokens, and can bypass project access settings through the OIDC device authorization API.","audience":"businesses","category":"infrastructure","nicknames":[],"who_cares":["zitadel","self-hosted","oauth","oidc","identity"],"confidence":0.6,"fix_status":"unknown","needs_auth":"unknown","worst_case":"attacker obtains signed-in user's tokens and bypasses project access","analyst_note":"Confirm the 3.x fixed version and whether device flow is on by default; source is https://nvd.nist.gov/vuln/detail/CVE-2026-119129.","how_to_check":"- Check the ZITADEL version running in production: versions 3.0.0 through 3.4.15 and 4.0.0 before 4.19.5 are affected.\n- Confirm whether the OAuth 2.0 device authorization flow is enabled for your instance (unknown from sources how to check this).","plain_action":"","needs_analyst":true,"not_affected_if":["version-outside-affected-ranges"],"who_is_affected":"Teams that self-host or operate ZITADEL as their identity provider with Login V2 and the OAuth 2.0 device authorization flow. Instances on versions before the fixed ranges are exposed; instances outside the affected ranges can skip it. Sources do not say whether the device flow must be enabled by default.","user_interaction":"yes","needs_special_setup":"unknown","severity_if_unknown":"high"},"cost_usd":0.000765,"input_tokens":4193,"output_tokens":692,"severity_before":"high"},"analyst_status":null,"analyst_note":null,"search":"'-119129':15A,18A '-2026':14A,17A '2.0':33B,103C '3.0.0':82C '3.4.15':84C '4.0.0':86C '4.19.5':88C 'access':73B,140C 'allow':98C 'api':80B,147C 'approv':31B,101C 'ask':43B 'attack':8A,47B,59B,99C,114C,126C 'author':3A,35B,79B,92C,105C,146C 'bypass':71B,138C 'carri':124C 'code':62B,129C 'consent':45B,113C 'contain':89C 'cve':13A,16A 'devic':34B,78B,104C,145C 'exist':40B,110C 'host':25B 'ident':19B 'infrastructur':20B 'let':7A 'link':56B,123C 'login':5A,29B,95C 'miss':2A,91C 'oauth':11A,21B,32B,102C 'obtain':64B,131C 'oidc':22B,77B,144C 'project':72B,139C 'self':24B 'self-host':23B 'send':49B,116C 'session':41B,111C 'set':74B,141C 'sign':52B,119C 'signed-in':51B,118C 'take':9A 'token':12A,68B,135C 'use':36B,106C 'user':54B,61B,66B,121C,128C 'v2':6A,30B,96C 'via':142C 'victim':10A,38B,108C,133C 'vulner':93C 'without':42B,112C 'zitadel':1A,26B,27B,81C","nicknames":[],"mitigations":[],"who_affected":"Teams that self-host or operate ZITADEL as their identity provider with Login V2 and the OAuth 2.0 device authorization flow. Instances on versions before the fixed ranges are exposed; instances outside the affected ranges can skip it. Sources do not say whether the device flow must be enabled by default.","tier":"B","verified":{},"analyst_revisit_at":null,"fix_status":"unknown","audience":"businesses","plain_action":null,"first_public_at":"2026-10-29T16:18:05+00:00","kev":null,"cvss_vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X","cvss_by":"disclosure@vulncheck.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-119129","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-119129","severity":null,"published_at":"2026-10-29T16:18:05+00:00","modified_at":"2026-10-29T16:18:05+00:00","first_seen_at":"2026-10-29T16:25:58+00:00","fetched_at":"2026-10-29T16:25:58+00:00","note":null}],"documents":[],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}