<?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://vulnerability.circl.lu</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>Fri, 02 Oct 2026 21:35:37 +0000</lastBuildDate>
    <item>
      <title>CVE-2026-57123 — PraisonAI: MCP SSE transport binds 0.0.0.0 with no authentication and no Origin validation; bundled SecurityConfig is n…</title>
      <link>https://vulnerability.circl.lu/vuln/cve-2026-57123</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; MervinPraison praisonaiagents&lt;/p&gt;
&lt;p&gt;PraisonAI is a multi-agent teams system. Prior to praisonaiagents 1.6.59, ToolsMCPServer.run_sse and launch_tools_mcp_server bind to 0.0.0.0 and create /sse and /messages/ routes without invoking the available SecurityConfig authentication, origin-validation, or DNS-rebinding controls. Any reachable client can list and invoke registered tools, and a browser can target a local instance through DNS rebinding, with impact determined by the registered file, shell, and code-execution tools. This vulnerability is fixed in praisonaiagents 1.6.59.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; MervinPraison praisonaiagents&lt;/p&gt;
&lt;p&gt;PraisonAI is a multi-agent teams system. Prior to praisonaiagents 1.6.59, ToolsMCPServer.run_sse and launch_tools_mcp_server bind to 0.0.0.0 and create /sse and /messages/ routes without invoking the available SecurityConfig authentication, origin-validation, or DNS-rebinding controls. Any reachable client can list and invoke registered tools, and a browser can target a local instance through DNS rebinding, with impact determined by the registered file, shell, and code-execution tools. This vulnerability is fixed in praisonaiagents 1.6.59.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/cve-2026-57123</guid>
    </item>
    <item>
      <title>GHSA-x227-pf99-vffg — PraisonAI: MCP SSE transport binds 0.0.0.0 with no authentication and no Origin validation; bundled SecurityConfig is n…</title>
      <link>https://vulnerability.circl.lu/vuln/ghsa-x227-pf99-vffg</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: praisonaiagents&lt;/p&gt;
&lt;p&gt;The MCP SSE server started via ToolsMCPServer.run_sse() / launch_tools_mcp_server(transport=&amp;#34;sse&amp;#34;)
binds to 0.0.0.0 by default and builds its Starlette application with no authentication middleware
and no Origin-header validation. The module mcp/mcp_security.py provides exactly the needed controls
(origin validation, DNS-rebinding detection, auth-header enforcement, a SecurityConfig), but none of
these functions are ever called by any transport — they are dead code. Any host that can reach the
port can list and invoke every registered tool with no credentials, and a victim&amp;#39;s browser can drive
the same calls against a localhost instance via DNS rebinding.&lt;/p&gt;
&lt;p&gt;Affected code: src/praisonai-agents/praisonaiagents/mcp/mcp_server.py
- run_sse defaults host to all interfaces (line 245) and builds the app with only `debug` and `routes`
  - no `middleware=` and no per-route auth/origin gate (lines ~271-289):
      app = Starlette(debug=self._debug, routes=[
          Route(sse_path, endpoint=handle_sse),                          # &amp;#34;/sse&amp;#34;
          Mount(messages_path, app=sse_transport.handle_post_message),   # &amp;#34;/messages/&amp;#34;
      ])
      uvicorn.run(app, host=host, port=port)
- launch_tools_mcp_server also defaults host=&amp;#34;0.0.0.0&amp;#34; (line 301).&lt;/p&gt;
&lt;p&gt;src/praisonai-agents/praisonaiagents/mcp/mcp_security.py defines but the transports never call:
- is_valid_origin (line 30), is_potential_dns_rebinding (line 110), validate_auth_header (line 167),
  SecurityConfig.is_origin_allowed (line 236). The…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: praisonaiagents&lt;/p&gt;
&lt;p&gt;The MCP SSE server started via ToolsMCPServer.run_sse() / launch_tools_mcp_server(transport=&amp;#34;sse&amp;#34;)
binds to 0.0.0.0 by default and builds its Starlette application with no authentication middleware
and no Origin-header validation. The module mcp/mcp_security.py provides exactly the needed controls
(origin validation, DNS-rebinding detection, auth-header enforcement, a SecurityConfig), but none of
these functions are ever called by any transport — they are dead code. Any host that can reach the
port can list and invoke every registered tool with no credentials, and a victim&amp;#39;s browser can drive
the same calls against a localhost instance via DNS rebinding.&lt;/p&gt;
&lt;p&gt;Affected code: src/praisonai-agents/praisonaiagents/mcp/mcp_server.py
- run_sse defaults host to all interfaces (line 245) and builds the app with only `debug` and `routes`
  - no `middleware=` and no per-route auth/origin gate (lines ~271-289):
      app = Starlette(debug=self._debug, routes=[
          Route(sse_path, endpoint=handle_sse),                          # &amp;#34;/sse&amp;#34;
          Mount(messages_path, app=sse_transport.handle_post_message),   # &amp;#34;/messages/&amp;#34;
      ])
      uvicorn.run(app, host=host, port=port)
- launch_tools_mcp_server also defaults host=&amp;#34;0.0.0.0&amp;#34; (line 301).&lt;/p&gt;
&lt;p&gt;src/praisonai-agents/praisonaiagents/mcp/mcp_security.py defines but the transports never call:
- is_valid_origin (line 30), is_potential_dns_rebinding (line 110), validate_auth_header (line 167),
  SecurityConfig.is_origin_allowed (line 236). The…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/ghsa-x227-pf99-vffg</guid>
    </item>
  </channel>
</rss>
