{"items":[{"id":"NVI-00017502","kind":"vulnerability","title":"Suspended Coder users retain access to AI Bridge LLM proxy endpoints","revision":1,"unknowns":["Customer inventory, deployment, reachability and exploitation have not been inspected."],"lifecycle":"active","identifiers":["GHSA-wqxv-w64v-5wh6","CVE-2026-55435"],"plain_summary":"GitHub lists this reviewed advisory for github.com/coder/coder/v2, github.com/coder/coder/v2, github.com/coder/coder/v2. Published version ranges and source prerequisites are shown below; this is not an inspection of a visitor’s application.","review_status":"source_listed","control_topics":[],"public_actions":[{"summary":"Identify the exact component and deployed version, examine the linked publisher’s conditions, and retain evidence of any mitigation.","source_ids":["sr-0bdd5e08ff3d18366779c3f986898f86"],"action_type":"investigate","limitations":"Confirm current vendor support, compatibility and deployment evidence. This report has not tested a fix in your system.","current_supported_target":null}],"schema_version":"1.1.0","source_metrics":[{"kind":"CVSS","as_of":"2026-07-07T22:17:57.000Z","value":"5.4 medium","meaning":"GitHub source severity; exploitability and local consequence require separate evidence.","source_id":"sr-0bdd5e08ff3d18366779c3f986898f86"}],"why_it_matters":"Published affected context helps an owner decide what evidence to gather. This report has not examined your application.","related_sources":[{"id":"sr-0bdd5e08ff3d18366779c3f986898f86","url":"https://github.com/advisories/GHSA-wqxv-w64v-5wh6","basis":"vendor_advisory","notes":"GitHub Advisory Database; CC-BY-4.0. Each advisory links its original attribution. Null normalizes fields.","title":"GHSA-wqxv-w64v-5wh6","publisher":"GitHub Advisory Database","observed_at":"2026-11-04T23:34:51.634Z"}],"affected_context":[{"certainty":"source_listed","source_ids":["sr-0bdd5e08ff3d18366779c3f986898f86"],"technology":"github.com/coder/coder/v2","known_exclusions":[],"conditions_summary":"### Summary\n\nAI Bridge proxy endpoints authenticate via `Server.IsAuthorized` in `coderd/aibridgedserver`, which validates key format, expiry, secret and deleted or system users but does not check whether the account is suspended. Because suspension does not revoke existing API keys, a suspended user's unexpired token keeps working.\n\n> **Note:** Practical impact is limited to already-issued API keys of suspended users until those keys are deleted.\n\n### Impact\n\nA suspended user with a previously issued long-lived token could continue calling AI Bridge LLM proxy endpoints, consuming paid provider resources billed to the deployment and, if injected MCP tools are enabled, invoking those tools. Access persists until the token expires, which may be months after suspension.\n\n### Patches\n\nThe fix makes AI Bridge authorization reject non-active users like the standard API key middleware. AI Bridge was introduced in v2.30.0. The v2.29 ESR line is not affected.\n\nThe fix is available in the following releases:\n\n| Release line | Patched version |\n|---|---|\n| 2.34 | v2.34.2 |\n| 2.33 | [v2.33.8](https://github.com/coder/coder/releases/tag/v2.","public_affected_ranges":[">= 2.34.0, < 2.34.2"]},{"certainty":"source_listed","source_ids":["sr-0bdd5e08ff3d18366779c3f986898f86"],"technology":"github.com/coder/coder/v2","known_exclusions":[],"conditions_summary":"### Summary\n\nAI Bridge proxy endpoints authenticate via `Server.IsAuthorized` in `coderd/aibridgedserver`, which validates key format, expiry, secret and deleted or system users but does not check whether the account is suspended. Because suspension does not revoke existing API keys, a suspended user's unexpired token keeps working.\n\n> **Note:** Practical impact is limited to already-issued API keys of suspended users until those keys are deleted.\n\n### Impact\n\nA suspended user with a previously issued long-lived token could continue calling AI Bridge LLM proxy endpoints, consuming paid provider resources billed to the deployment and, if injected MCP tools are enabled, invoking those tools. Access persists until the token expires, which may be months after suspension.\n\n### Patches\n\nThe fix makes AI Bridge authorization reject non-active users like the standard API key middleware. AI Bridge was introduced in v2.30.0. The v2.29 ESR line is not affected.\n\nThe fix is available in the following releases:\n\n| Release line | Patched version |\n|---|---|\n| 2.34 | v2.34.2 |\n| 2.33 | [v2.33.8](https://github.com/coder/coder/releases/tag/v2.","public_affected_ranges":[">= 2.33.0, < 2.33.8"]},{"certainty":"source_listed","source_ids":["sr-0bdd5e08ff3d18366779c3f986898f86"],"technology":"github.com/coder/coder/v2","known_exclusions":[],"conditions_summary":"### Summary\n\nAI Bridge proxy endpoints authenticate via `Server.IsAuthorized` in `coderd/aibridgedserver`, which validates key format, expiry, secret and deleted or system users but does not check whether the account is suspended. Because suspension does not revoke existing API keys, a suspended user's unexpired token keeps working.\n\n> **Note:** Practical impact is limited to already-issued API keys of suspended users until those keys are deleted.\n\n### Impact\n\nA suspended user with a previously issued long-lived token could continue calling AI Bridge LLM proxy endpoints, consuming paid provider resources billed to the deployment and, if injected MCP tools are enabled, invoking those tools. Access persists until the token expires, which may be months after suspension.\n\n### Patches\n\nThe fix makes AI Bridge authorization reject non-active users like the standard API key middleware. AI Bridge was introduced in v2.30.0. The v2.29 ESR line is not affected.\n\nThe fix is available in the following releases:\n\n| Release line | Patched version |\n|---|---|\n| 2.34 | v2.34.2 |\n| 2.33 | [v2.33.8](https://github.com/coder/coder/releases/tag/v2.","public_affected_ranges":[">= 2.30.0, < 2.32.7"]}],"null_published_at":"2026-11-05T19:10:21.399Z","source_updated_at":"2026-07-07T22:17:57.000Z","source_disclosed_at":"2026-07-06T21:11:20.000Z","is_synthetic_fixture":false,"null_last_reviewed_at":null,"public_change_summary":"First indexed by Null; source disclosure date is shown separately.","null_first_observed_at":"2026-11-04T23:34:51.634Z"}],"next_cursor":null,"snapshot_revision":"42594"}