<?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, 10 Oct 2026 02:12:13 +0000</lastBuildDate>
    <item>
      <title>EUVD-2026-339406</title>
      <link>https://cve.radiocsirt.org/vuln/euvd-2026-339406</link>
      <description>EUVD-2026-339406</description>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/euvd-2026-339406</guid>
    </item>
    <item>
      <title>fkie_cve-2026-47416</title>
      <link>https://cve.radiocsirt.org/vuln/fkie_cve-2026-47416</link>
      <description>&lt;p&gt;PraisonAI Platform is the platform layer for the PraisonAI multi-agent teams system. Versions prior to 0.1.4 are vulnerable to vertical privilege escalation. The `PATCH /workspaces/{workspace_id}/members/{user_id}` endpoint is gated by `require_workspace_member(workspace_id)`, which defaults to `min_role=&amp;#34;member&amp;#34;` and is never overridden by the route. The handler then calls `MemberService.update_role(workspace_id, user_id, body.role)` which sets the target member&amp;#39;s role to whatever the request body specifies, with no check that the caller has owner-or-admin privilege, no check that the new role is not higher than the caller&amp;#39;s own, and no check that the caller is not silently promoting themselves. PraisonAI Platform version 0.1.4 patches the issue.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;PraisonAI Platform is the platform layer for the PraisonAI multi-agent teams system. Versions prior to 0.1.4 are vulnerable to vertical privilege escalation. The `PATCH /workspaces/{workspace_id}/members/{user_id}` endpoint is gated by `require_workspace_member(workspace_id)`, which defaults to `min_role=&amp;#34;member&amp;#34;` and is never overridden by the route. The handler then calls `MemberService.update_role(workspace_id, user_id, body.role)` which sets the target member&amp;#39;s role to whatever the request body specifies, with no check that the caller has owner-or-admin privilege, no check that the new role is not higher than the caller&amp;#39;s own, and no check that the caller is not silently promoting themselves. PraisonAI Platform version 0.1.4 patches the issue.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/fkie_cve-2026-47416</guid>
    </item>
    <item>
      <title>GHSA-c2m8-4gcg-v22g — praisonai-platform: Any workspace member can promote themselves or others to owner via PATCH /workspaces/{id}/members/{…</title>
      <link>https://cve.radiocsirt.org/vuln/ghsa-c2m8-4gcg-v22g</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: praisonai-platform&lt;/p&gt;
&lt;p&gt;## Summary&lt;/p&gt;
&lt;p&gt;**Type:** Vertical privilege escalation. The `PATCH /workspaces/{workspace_id}/members/{user_id}` endpoint is gated by `require_workspace_member(workspace_id)`, which defaults to `min_role=&amp;#34;member&amp;#34;` and is never overridden by the route. The handler then calls `MemberService.update_role(workspace_id, user_id, body.role)` which sets the target member&amp;#39;s role to whatever the request body specifies, with no check that the caller has owner-or-admin privilege, no check that the new role is not higher than the caller&amp;#39;s own, and no check that the caller is not silently promoting themselves.
**File:** `src/praisonai-platform/praisonai_platform/api/routes/workspaces.py`, lines 115-127; `services/member_service.py`, lines 55-69; `api/deps.py`, lines 54-73.
**Root cause:** `require_workspace_member` exists with a `min_role` parameter (deps.py:58) but FastAPI&amp;#39;s `Depends(require_workspace_member)` cannot pass arguments, so every route uses the default `&amp;#34;member&amp;#34;`. The route then passes the URL-supplied `user_id` and the body-supplied `role` directly to `MemberService.update_role`, which contains zero permission checks: it loads the member by composite key and assigns `member.role = new_role`. A user with the lowest possible privilege (&amp;#34;member&amp;#34;) thus sets their own role to &amp;#34;owner&amp;#34; with one HTTP PATCH, completing a member-to-owner privilege escalation in a single request.&lt;/p&gt;
&lt;p&gt;## Affected Code&lt;/p&gt;
&lt;p&gt;**File 1:** `src/praisonai-platform/praisonai_platform/api/routes/workspaces.py`, lines 115…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: praisonai-platform&lt;/p&gt;
&lt;p&gt;## Summary&lt;/p&gt;
&lt;p&gt;**Type:** Vertical privilege escalation. The `PATCH /workspaces/{workspace_id}/members/{user_id}` endpoint is gated by `require_workspace_member(workspace_id)`, which defaults to `min_role=&amp;#34;member&amp;#34;` and is never overridden by the route. The handler then calls `MemberService.update_role(workspace_id, user_id, body.role)` which sets the target member&amp;#39;s role to whatever the request body specifies, with no check that the caller has owner-or-admin privilege, no check that the new role is not higher than the caller&amp;#39;s own, and no check that the caller is not silently promoting themselves.
**File:** `src/praisonai-platform/praisonai_platform/api/routes/workspaces.py`, lines 115-127; `services/member_service.py`, lines 55-69; `api/deps.py`, lines 54-73.
**Root cause:** `require_workspace_member` exists with a `min_role` parameter (deps.py:58) but FastAPI&amp;#39;s `Depends(require_workspace_member)` cannot pass arguments, so every route uses the default `&amp;#34;member&amp;#34;`. The route then passes the URL-supplied `user_id` and the body-supplied `role` directly to `MemberService.update_role`, which contains zero permission checks: it loads the member by composite key and assigns `member.role = new_role`. A user with the lowest possible privilege (&amp;#34;member&amp;#34;) thus sets their own role to &amp;#34;owner&amp;#34; with one HTTP PATCH, completing a member-to-owner privilege escalation in a single request.&lt;/p&gt;
&lt;p&gt;## Affected Code&lt;/p&gt;
&lt;p&gt;**File 1:** `src/praisonai-platform/praisonai_platform/api/routes/workspaces.py`, lines 115…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/ghsa-c2m8-4gcg-v22g</guid>
    </item>
    <item>
      <title>PYSEC-2026-481 — praisonai-platform: Any workspace member can promote themselves or others to owner via PATCH /workspaces/{id}/members/{…</title>
      <link>https://cve.radiocsirt.org/vuln/pysec-2026-481</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: praisonai-platform&lt;/p&gt;
&lt;p&gt;## Summary&lt;/p&gt;
&lt;p&gt;**Type:** Vertical privilege escalation. The `PATCH /workspaces/{workspace_id}/members/{user_id}` endpoint is gated by `require_workspace_member(workspace_id)`, which defaults to `min_role=&amp;#34;member&amp;#34;` and is never overridden by the route. The handler then calls `MemberService.update_role(workspace_id, user_id, body.role)` which sets the target member&amp;#39;s role to whatever the request body specifies, with no check that the caller has owner-or-admin privilege, no check that the new role is not higher than the caller&amp;#39;s own, and no check that the caller is not silently promoting themselves.
 **File:** `src/praisonai-platform/praisonai_platform/api/routes/workspaces.py`, lines 115-127; `services/member_service.py`, lines 55-69; `api/deps.py`, lines 54-73.
 **Root cause:** `require_workspace_member` exists with a `min_role` parameter (deps.py:58) but FastAPI&amp;#39;s `Depends(require_workspace_member)` cannot pass arguments, so every route uses the default `&amp;#34;member&amp;#34;`. The route then passes the URL-supplied `user_id` and the body-supplied `role` directly to `MemberService.update_role`, which contains zero permission checks: it loads the member by composite key and assigns `member.role = new_role`. A user with the lowest possible privilege (&amp;#34;member&amp;#34;) thus sets their own role to &amp;#34;owner&amp;#34; with one HTTP PATCH, completing a member-to-owner privilege escalation in a single request.&lt;/p&gt;
&lt;p&gt;## Affected Code&lt;/p&gt;
&lt;p&gt;**File 1:** `src/praisonai-platform/praisonai_platform/api/routes/workspaces.py`, lines 1…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: praisonai-platform&lt;/p&gt;
&lt;p&gt;## Summary&lt;/p&gt;
&lt;p&gt;**Type:** Vertical privilege escalation. The `PATCH /workspaces/{workspace_id}/members/{user_id}` endpoint is gated by `require_workspace_member(workspace_id)`, which defaults to `min_role=&amp;#34;member&amp;#34;` and is never overridden by the route. The handler then calls `MemberService.update_role(workspace_id, user_id, body.role)` which sets the target member&amp;#39;s role to whatever the request body specifies, with no check that the caller has owner-or-admin privilege, no check that the new role is not higher than the caller&amp;#39;s own, and no check that the caller is not silently promoting themselves.
 **File:** `src/praisonai-platform/praisonai_platform/api/routes/workspaces.py`, lines 115-127; `services/member_service.py`, lines 55-69; `api/deps.py`, lines 54-73.
 **Root cause:** `require_workspace_member` exists with a `min_role` parameter (deps.py:58) but FastAPI&amp;#39;s `Depends(require_workspace_member)` cannot pass arguments, so every route uses the default `&amp;#34;member&amp;#34;`. The route then passes the URL-supplied `user_id` and the body-supplied `role` directly to `MemberService.update_role`, which contains zero permission checks: it loads the member by composite key and assigns `member.role = new_role`. A user with the lowest possible privilege (&amp;#34;member&amp;#34;) thus sets their own role to &amp;#34;owner&amp;#34; with one HTTP PATCH, completing a member-to-owner privilege escalation in a single request.&lt;/p&gt;
&lt;p&gt;## Affected Code&lt;/p&gt;
&lt;p&gt;**File 1:** `src/praisonai-platform/praisonai_platform/api/routes/workspaces.py`, lines 1…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/pysec-2026-481</guid>
    </item>
  </channel>
</rss>
