---
id: "CVE-2026-61826"
kind: "vulnerability"
aliases: ["CVE-2026-61826"]
title: "Bazarr: unauthenticated Plex endpoints let anyone change config and steal credentials"
severity: "critical"
cvss: 10.0
epss: null
exploited: false
status: "open"
category: "package"
products: []
ecosystems: []
tags: ["bazarr", "package", "plex", "radarr", "self-hosted", "sonarr"]
not_affected_if: ["auth-required", "managed-hosting", "plex-disabled"]
published_at: "2026-10-30T17:17:27+00:00"
first_seen_at: "2026-10-30T17:31:39+00:00"
updated_at: "2026-10-30T17:32:02+00:00"
sources: [{"source": "nvd", "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-61826", "first_seen_at": "2026-10-30T17:31:39+00:00"}]
---

# Bazarr: unauthenticated Plex endpoints let anyone change config and steal credentials

Bazarr, a companion app for Sonarr and Radarr, exposes Plex OAuth and server-configuration endpoints without authentication. An anonymous attacker can clear or replace the API key, bind their own Plex account, and make the server send its API key to attacker-chosen URLs.

_Summary, check and fix written by a model from the sources; labelled as such._

## How to check

- Check the installed Bazarr version; affected if it is earlier than `1.5.7-beta.14`
- Look for the Plex integration being reachable from untrusted networks, such as `POST /api/plex/oauth/logout` answering without an API key

## Fix

- Bazarr: move to `1.5.7-beta.14` or later, which adds authentication to these endpoints
- OAuth state validation is not fully fixed by that version according to the sources

## Timeline

- 2026-10-30T17:31:39+00:00 nvd https://nvd.nist.gov/vuln/detail/CVE-2026-61826

## From the sources

Bazarr is a companion application to Sonarr and Radarr. Prior to 1.5.7-beta.14, the `api_ns_plex` namespace in `bazarr/api/plex/oauth.py` omits `@authenticate` on its Resource handlers, while normal APIs require an API key and no global authentication hook compensates. Anonymous callers can invoke `POST /api/plex/oauth/logout` to clear credentials and disable the integration, or `POST /api/plex/apikey` to persist an attacker-selected key, without a PIN, account or state precondition. `POST /api/plex/oauth/pin` and `GET /api/plex/oauth/pin/<pin_id>/check` additionally allow an attacker who completes a PIN with an attacker-controlled Plex account to bind that account's token to the instance. `PlexPinCheck` skips state validation when `state_param` is absent and merely logs a mismatch without stopping execution. `POST /api/plex/select-server`, `POST /api/plex/oauth/servers`, `POST /api/plex/webhook/create`, `POST /api/plex/webhook/delete` and `POST /api/plex/encrypt-apikey` expose further `write_config()` operations. Attacker-controlled server URLs feed later outbound requests carrying the configured API key in `X-Plex-Token`, enabling server-side request forgery and credential exposure in addition to persistent configuration tampering and integration denial of service. Version 1.5.7-beta.14 closes the anonymous API-mutation path by adding authentication; complete OAuth state validation is not established and remains a separate residual for curator review.

---

_Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai_
