<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0">
  <channel>
    <title>Most recent entries from all</title>
    <link>https://cve.radiocsirt.org</link>
    <description>Contains only the most 10 recent entries.</description>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>python-feedgen</generator>
    <language>en</language>
    <lastBuildDate>Sat, 03 Oct 2026 09:33:14 +0000</lastBuildDate>
    <item>
      <title>CVE-2026-33760 — Langflow: IDOR/BOLA in Monitor API — Missing Ownership Enforcement on 7 Endpoints</title>
      <link>https://cve.radiocsirt.org/vuln/cve-2026-33760</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; langflow-ai langflow&lt;/p&gt;
&lt;p&gt;Langflow is a tool for building and deploying AI-powered agents and workflows. Prior to 1.9.0, Langflow&amp;#39;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&amp;#39;s data by supplying the target&amp;#39;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. This vulnerability is fixed in 1.9.0.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; langflow-ai langflow&lt;/p&gt;
&lt;p&gt;Langflow is a tool for building and deploying AI-powered agents and workflows. Prior to 1.9.0, Langflow&amp;#39;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&amp;#39;s data by supplying the target&amp;#39;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. This vulnerability is fixed in 1.9.0.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/cve-2026-33760</guid>
    </item>
    <item>
      <title>GHSA-9c59-2mvc-vfr8 — Langflow: IDOR/BOLA in Monitor API — Missing Ownership Enforcement on 7 Endpoints</title>
      <link>https://cve.radiocsirt.org/vuln/ghsa-9c59-2mvc-vfr8</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: langflow&lt;/p&gt;
&lt;p&gt;### Summary&lt;/p&gt;
&lt;p&gt;Langflow&amp;#39;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&amp;#39;s data by supplying the target&amp;#39;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.&lt;/p&gt;
&lt;p&gt;### Details&lt;/p&gt;
&lt;p&gt;**Source file: `src/backend/base/langflow/api/v1/monitor.py`**&lt;/p&gt;
&lt;p&gt;The correct pattern (used only in `GET /monitor/messages`, lines 77–80):
```python
stmt = select(MessageTable)
stmt = stmt.join(Flow, MessageTable.flow_id == Flow.id)
stmt = stmt.where(Flow.user_id == current_user.id)  # ownership enforced
```&lt;/p&gt;
&lt;p&gt;All 7 vulnerable endpoints are missing this guard:&lt;/p&gt;
&lt;p&gt;**1. `GET /api/v1/monitor/builds` (lines 27–33)** — reads build data for any `flow_id`:
```python
@router.get(&amp;#34;/builds&amp;#34;, 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)
```&lt;/p&gt;
&lt;p&gt;**2. `DELETE /api/v1/monitor/messages` (l…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: langflow&lt;/p&gt;
&lt;p&gt;### Summary&lt;/p&gt;
&lt;p&gt;Langflow&amp;#39;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&amp;#39;s data by supplying the target&amp;#39;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.&lt;/p&gt;
&lt;p&gt;### Details&lt;/p&gt;
&lt;p&gt;**Source file: `src/backend/base/langflow/api/v1/monitor.py`**&lt;/p&gt;
&lt;p&gt;The correct pattern (used only in `GET /monitor/messages`, lines 77–80):
```python
stmt = select(MessageTable)
stmt = stmt.join(Flow, MessageTable.flow_id == Flow.id)
stmt = stmt.where(Flow.user_id == current_user.id)  # ownership enforced
```&lt;/p&gt;
&lt;p&gt;All 7 vulnerable endpoints are missing this guard:&lt;/p&gt;
&lt;p&gt;**1. `GET /api/v1/monitor/builds` (lines 27–33)** — reads build data for any `flow_id`:
```python
@router.get(&amp;#34;/builds&amp;#34;, 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)
```&lt;/p&gt;
&lt;p&gt;**2. `DELETE /api/v1/monitor/messages` (l…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/ghsa-9c59-2mvc-vfr8</guid>
    </item>
  </channel>
</rss>
