CVE-2026-75607 Overview
CVE-2026-75607 is a missing authorization flaw [CWE-862] in Frigate, an open source network video recorder. Versions prior to 0.17.2 accept attacker-selected message topics through the WebSocket handler in frigate/comms/ws.py and forward them to the dispatcher without validating the authenticated user's role. The nginx authentication subrequest confirms identity but does not communicate role information to the handler. Any authenticated viewer can invoke admin-only topics, including restart, notifications/set, and camera detection, recording, snapshot, audio, motion, and enablement toggles. The maintainers fixed the issue in Frigate 0.17.2.
Critical Impact
Low-privilege viewers can restart the Frigate service and disable core security monitoring functions such as recording, motion detection, and notifications.
Affected Products
- Frigate versions prior to 0.17.2
- Frigate deployments with authentication enabled and viewer accounts provisioned
- Deployments relying on the nginx authentication subrequest for WebSocket authorization
Discovery Timeline
- 2026-09-22 - CVE-2026-75607 published to NVD
- 2026-09-22 - Last updated in NVD database
Technical Details for CVE-2026-75607
Vulnerability Analysis
Frigate exposes a WebSocket interface that dispatches control messages to internal components. The handler in frigate/comms/ws.py treats any authenticated session as authorized to publish arbitrary topics. Authentication is enforced through an nginx auth_request subrequest, which validates the session token but does not return the user's role to the application layer. As a result, the dispatcher processes admin-only topics submitted by viewer accounts.
A viewer session can publish restart to force a service restart, notifications/set to disable alerting, or per-camera topics to toggle detect, record, snapshots, audio, motion, and enabled states. Disabling these functions blinds the recorder while leaving the service running, which undermines the integrity and availability of the surveillance workflow.
Root Cause
The root cause is a broken access control gap between the authentication proxy and the WebSocket handler. Role-aware authorization is not evaluated per message topic, so identity is conflated with privilege. The handler additionally exposes internal IPC topics that were never intended to be reachable from external clients.
Attack Vector
An attacker needs valid viewer credentials and network reachability to the Frigate WebSocket endpoint. After establishing an authenticated session, the attacker sends JSON messages with restricted topic names. The dispatcher accepts the payload and executes the requested action without further checks.
# Source: https://github.com/blakeblackshear/frigate/commit/0371b60c715b8e53deed419f742f69d08ccef491
# Patch in frigate/comms/ws.py — restricts admin-only WebSocket topics for viewers
from frigate.comms.base_communicator import Communicator
from frigate.config import FrigateConfig
from frigate.const import (
CLEAR_ONGOING_REVIEW_SEGMENTS,
EXPIRE_AUDIO_ACTIVITY,
INSERT_MANY_RECORDINGS,
INSERT_PREVIEW,
NOTIFICATION_TEST,
REQUEST_REGION_GRID,
UPDATE_AUDIO_ACTIVITY,
UPDATE_AUDIO_TRANSCRIPTION_STATE,
UPDATE_BIRDSEYE_LAYOUT,
UPDATE_CAMERA_ACTIVITY,
UPDATE_EMBEDDINGS_REINDEX_PROGRESS,
UPDATE_EVENT_DESCRIPTION,
UPDATE_MODEL_STATE,
UPDATE_REVIEW_DESCRIPTION,
UPSERT_REVIEW_SEGMENT,
)
logger = logging.getLogger(__name__)
# Internal IPC topics — NEVER allowed from WebSocket, regardless of role
_WS_BLOCKED_TOPICS = frozenset(
{
INSERT_MANY_RECORDINGS,
INSERT_PREVIEW,
REQUEST_REGION_GRID,
UPSERT_REVIEW_SEGMENT,
}
)
The patch introduces an explicit blocklist for internal IPC topics and adds role-aware checks so viewer sessions can no longer publish admin-scoped messages. See the GitHub commit and pull request #22710 for the full change.
Detection Methods for CVE-2026-75607
Indicators of Compromise
- Unexpected Frigate service restarts recorded in container or systemd logs without a matching administrative action.
- Configuration state changes to camera detect, record, snapshots, audio, motion, or enabled toggles initiated by non-admin accounts.
- WebSocket sessions from viewer accounts publishing topics such as restart or notifications/set.
Detection Strategies
- Enable verbose logging on the Frigate dispatcher and correlate WebSocket topic publications with the authenticated user role.
- Alert on any WebSocket message where the topic matches an admin-only action but the session belongs to a viewer role.
- Baseline expected administrative activity and flag deviations, particularly outside change-management windows.
Monitoring Recommendations
- Forward nginx access logs and Frigate application logs to a central log platform for retention and correlation.
- Monitor for repeated authentication attempts against viewer accounts, which may indicate credential compromise preceding exploitation.
- Track camera state transitions and generate alerts when monitoring features are disabled unexpectedly.
How to Mitigate CVE-2026-75607
Immediate Actions Required
- Upgrade Frigate to version 0.17.2 or later, which enforces role-aware authorization on WebSocket topics.
- Rotate credentials for all viewer accounts and audit the account list for unnecessary or stale users.
- Review recent camera configuration changes and restore any settings altered without authorization.
Patch Information
The fix is available in Frigate v0.17.2. Technical context is documented in GHSA-r5fm-h944-8chq and the patch commit.
Workarounds
- If patching is not immediately possible, disable viewer accounts and restrict Frigate access to administrators only.
- Place the Frigate WebSocket endpoint behind a network access control list that limits it to trusted management hosts.
- Require multi-factor authentication on the reverse proxy fronting Frigate to reduce the risk of viewer credential abuse.
# Upgrade Frigate container to the patched release
docker pull ghcr.io/blakeblackshear/frigate:0.17.2
docker stop frigate && docker rm frigate
docker run -d --name frigate \
--restart=unless-stopped \
-v /path/to/config.yml:/config/config.yml \
-v /path/to/storage:/media/frigate \
ghcr.io/blakeblackshear/frigate:0.17.2
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.