{"id":"CVE-2026-116634","kind":"vulnerability","aliases":["CVE-2026-116634"],"related":[],"title":"OmniRoute: missing auth lets anyone steal provider API keys","description":"OmniRoute 3.8.50 before 3.8.52 contains a missing authentication vulnerability that allows unauthenticated attackers to issue sync tokens via POST /api/sync/tokens when requireLogin is disabled. Attackers can use the issued token against GET /api/sync/bundle to retrieve decrypted provider credentials and plaintext API keys, with tokens persisting after login is re-enabled.","summary":"OmniRoute before 3.8.52 lets an unauthenticated attacker request a sync token from POST /api/sync/tokens when requireLogin is disabled. That token then retrieves decrypted provider credentials and plaintext API keys from GET /api/sync/bundle, and it keeps working after login is re-enabled.","severity":"high","cvss":8.2,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["ai-tooling","llm-gateway","self-hosted"],"not_affected_if":["auth-required","default-config"],"how_to_check":"- Check the installed OmniRoute version; versions from 3.8.50 up to but not including `3.8.52` are affected\n- Check whether `requireLogin` is disabled in the OmniRoute configuration\n- Look in access logs for requests to `/api/sync/tokens` or `/api/sync/bundle` from unknown sources","fix":"- Upgrade OmniRoute to `3.8.52` or later\n- Rotate all provider API keys and credentials stored in OmniRoute\n- Revoke any sync tokens issued while `requireLogin` was disabled","status":"open","published_at":"2026-10-26T18:17:45+00:00","first_seen_at":"2026-10-26T18:31:44+00:00","triaged_at":"2026-10-26T18:33:43+00:00","updated_at":"2026-10-26T18:33:43+00:00","category":"ai-tooling","confidence":0.7,"triage":{"at":"2026-10-26T18:33:43Z","model":"claude-haiku-5-5","output":{"fix":"- Upgrade OmniRoute to `3.8.52` or later\n- Rotate all provider API keys and credentials stored in OmniRoute\n- Revoke any sync tokens issued while `requireLogin` was disabled","reach":"internet","title":"OmniRoute: missing auth lets anyone steal provider API keys","impact":"high","summary":"OmniRoute before 3.8.52 lets an unauthenticated attacker request a sync token from POST /api/sync/tokens when requireLogin is disabled. That token then retrieves decrypted provider credentials and plaintext API keys from GET /api/sync/bundle, and it keeps working after login is re-enabled.","category":"ai-tooling","nicknames":[],"who_cares":["ai-tooling","self-hosted","llm-gateway"],"confidence":0.7,"needs_auth":"no","worst_case":"Attacker reads all provider credentials and plaintext API keys","analyst_note":"Confirm the default value of requireLogin and whether the vendor advisory lists exposed-by-default deployments; the NVD entry alone does not say.","how_to_check":"- Check the installed OmniRoute version; versions from 3.8.50 up to but not including `3.8.52` are affected\n- Check whether `requireLogin` is disabled in the OmniRoute configuration\n- Look in access logs for requests to `/api/sync/tokens` or `/api/sync/bundle` from unknown sources","needs_analyst":true,"not_affected_if":["auth-required","default-config"],"who_is_affected":"Teams running OmniRoute from 3.8.50 up to but not including 3.8.52 that have requireLogin disabled at any point, since the issued tokens persist after login is re-enabled. Instances with login enforced throughout are not exposed through this path. Deployments on 3.8.52 or later are not affected.","user_interaction":"no","needs_special_setup":"yes","severity_if_unknown":"high"},"cost_usd":0.000672,"input_tokens":3364,"output_tokens":672,"severity_before":"high"},"analyst_status":null,"analyst_note":null,"search":"'-116634':12A,15A '-2026':11A,14A '/api/sync/bundle':56B,99C '/api/sync/tokens':38B,86C '3.8.50':68C '3.8.52':27B,70C 'ai':17B 'ai-tool':16B 'allow':77C 'anyon':5A 'api':8A,52B,107C 'attack':31B,79C,91C 'auth':3A 'authent':74C 'contain':71C 'credenti':49B,104C 'cve':10A,13A 'decrypt':47B,102C 'disabl':42B,90C 'enabl':66B,117C 'gateway':21B 'get':55B,98C 'host':24B 'issu':81C,95C 'keep':59B 'key':9A,53B,108C 'let':4A,28B 'llm':20B 'llm-gateway':19B 'login':62B,113C 'miss':2A,73C 'omnirout':1A,25B,67C 'persist':111C 'plaintext':51B,106C 'post':37B,85C 'provid':7A,48B,103C 're':65B,116C 're-en':64B,115C 'request':32B 'requirelogin':40B,88C 'retriev':46B,101C 'self':23B 'self-host':22B 'steal':6A 'sync':34B,82C 'token':35B,44B,83C,96C,110C 'tool':18B 'unauthent':30B,78C 'use':93C 'via':84C 'vulner':75C 'work':60B","nicknames":[],"mitigations":[],"who_affected":"Teams running OmniRoute from 3.8.50 up to but not including 3.8.52 that have requireLogin disabled at any point, since the issued tokens persist after login is re-enabled. Instances with login enforced throughout are not exposed through this path. Deployments on 3.8.52 or later are not affected.","tier":"B","verified":{},"analyst_revisit_at":null,"first_public_at":"2026-10-26T18:17:45+00:00","kev":null,"cvss_vector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:N/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-116634","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-116634","severity":null,"published_at":"2026-10-26T18:17:45+00:00","modified_at":"2026-10-26T18:17:45+00:00","first_seen_at":"2026-10-26T18:31:44+00:00","fetched_at":"2026-10-26T18:31:44+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"}