CSIRTS // UNIFIED SECURITY ADVISORY FEEDSYS ● ONLINE · POWERED BY INTELFUSIONS.COM

CVE-2026-33760

highCVSS 8.8covered by 1 sourcefirst seen 2026-06-16
Summary Langflow's /api/v1/monitor router exposes 7 endpoints that perform read, write, and delete operations on user-owned resources — messages, sessions, build artifacts, and LLM transaction logs — without verifying that the authenticated requester owns the targeted resource. Any authenticated user can read, modify, rename, or permanently delete another user's data by supplying the target's resource ID or flow_id. This is a classic IDOR/BOLA vulnerability. Notably, the same source file (monitor.py) contains one correctly-implemented endpoint that uses an ownership check, demonstrating the correct pattern was known but inconsistently applied. Details Source file: src/backend/base/langflow/api/v1/monitor.py The correct pattern (used only in GET /monitor/messages, lines 77–80): stmt = select(MessageTable) stmt = stmt.join(Flow, MessageTable.flow_id == Flow.id) stmt = stmt.where(Flow.user_id == current_user.id) # ownership enforced All 7 vulnerable endpoints are missing this guard: 1. GET /api/v1/monitor/builds (lines 27–33) — reads build data for any flow_id: @router.get("/builds", dependencies=[Depends(get_current_active_user)]) async def get_vertex_builds(flow_id: Annotated[UUID, Query()], session: DbSession): vertex_builds = await get_vertex_builds_by_flow_id(session, flow_id) # no ownership check return VertexBuildMapModel.from_list_of_dicts(vertex_builds) 2. DELETE /api/v1/monitor/messages (lines 102–107) — deletes any message by UUID: @router.delete("/messages", status_code=204, dependencies=[Depends(get_current_active_user)]) async def delete_messages(message_ids: list[UUID], session: DbSession): await session.exec(delete(MessageTable).where(MessageTable.id.in_(message_ids))) message_ids accepted verbatim, no ownership check **3. PUT /api/v1/monitor/messages/{message_id} (lines 110–134)** — overwrites any message: db_message = await session.get(MessageTable, message_id) no check: db_message.flow_id → Flow.user_id == current_user.id db_message.sql

⚡ Watch CVE-2026-33760

Get an email if CVE-2026-33760 is added to CISA KEV, gains public exploit code, or a new advisory cites it — max one per day, one-click unsubscribe.

Exploitation outlook

Advisory coverage (1)

External references

NVD record for CVE-2026-33760

CVE.org record

Embed the live status

CVE-2026-33760 live status badge — this badge updates automatically when the KEV or exploit status changes. How to embed it →

[![CVE-2026-33760 status](https://www.csirts.com/badge/CVE-2026-33760)](https://www.csirts.com/cve/CVE-2026-33760)