<?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, 05 Oct 2026 21:23:29 +0000</lastBuildDate>
    <item>
      <title>EUVD-2026-339016</title>
      <link>https://cve.radiocsirt.org/vuln/euvd-2026-339016</link>
      <description>EUVD-2026-339016</description>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/euvd-2026-339016</guid>
    </item>
    <item>
      <title>fkie_cve-2026-46701</title>
      <link>https://cve.radiocsirt.org/vuln/fkie_cve-2026-46701</link>
      <description>&lt;p&gt;Network-AI is a TypeScript/Node.js multi-agent orchestrator. Prior to version 5.4.5, the MCP SSE server defaults to an empty secret (`process.env[&amp;#39;NETWORK_AI_MCP_SECRET&amp;#39;] ?? &amp;#39;&amp;#39;` at `bin/mcp-server.ts:89`), which causes `_isAuthorized` (`lib/mcp-transport-sse.ts:254`) to return `true` unconditionally for every request — no `Authorization` header is required. Simultaneously, `_handleRequest` sets `Access-Control-Allow-Origin: *` (`lib/mcp-transport-sse.ts:272`) on every response, so a cross-origin browser fetch can read the result without restriction. An unauthenticated attacker who can lure a user to a malicious web page can invoke all 22 exposed MCP tools — including `config_set`, `agent_spawn`, and `blackboard_write` — against a default-configured localhost server. Version 5.4.5 patches the issue.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;Network-AI is a TypeScript/Node.js multi-agent orchestrator. Prior to version 5.4.5, the MCP SSE server defaults to an empty secret (`process.env[&amp;#39;NETWORK_AI_MCP_SECRET&amp;#39;] ?? &amp;#39;&amp;#39;` at `bin/mcp-server.ts:89`), which causes `_isAuthorized` (`lib/mcp-transport-sse.ts:254`) to return `true` unconditionally for every request — no `Authorization` header is required. Simultaneously, `_handleRequest` sets `Access-Control-Allow-Origin: *` (`lib/mcp-transport-sse.ts:272`) on every response, so a cross-origin browser fetch can read the result without restriction. An unauthenticated attacker who can lure a user to a malicious web page can invoke all 22 exposed MCP tools — including `config_set`, `agent_spawn`, and `blackboard_write` — against a default-configured localhost server. Version 5.4.5 patches the issue.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/fkie_cve-2026-46701</guid>
    </item>
    <item>
      <title>GHSA-j3vx-cx2r-pvg8 — Network-AI: Unauthenticated Cross-Origin MCP Tool Invocation via Empty Default Secret</title>
      <link>https://cve.radiocsirt.org/vuln/ghsa-j3vx-cx2r-pvg8</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; npm: network-ai&lt;/p&gt;
&lt;p&gt;# Unauthenticated Cross-Origin MCP Tool Invocation via Empty Default Secret&lt;/p&gt;
&lt;p&gt;| Field            | Value |
| ---------------- | ----- |
| Repository       | Jovancoding/Network-AI |
| Affected version | v5.4.4 (commit c12686e181f231cf8d7bcf836a96d78f0f0877ac) |&lt;/p&gt;
&lt;p&gt;## Summary&lt;/p&gt;
&lt;p&gt;The MCP SSE server defaults to an empty secret (`process.env[&amp;#39;NETWORK_AI_MCP_SECRET&amp;#39;] ?? &amp;#39;&amp;#39;` at `bin/mcp-server.ts:89`), which causes `_isAuthorized` (`lib/mcp-transport-sse.ts:254`) to return `true` unconditionally for every request — no `Authorization` header is required. Simultaneously, `_handleRequest` sets `Access-Control-Allow-Origin: *` (`lib/mcp-transport-sse.ts:272`) on every response, so a cross-origin browser fetch can read the result without restriction. An unauthenticated attacker who can lure a user to a malicious web page can invoke all 22 exposed MCP tools — including `config_set`, `agent_spawn`, and `blackboard_write` — against a default-configured localhost server.&lt;/p&gt;
&lt;p&gt;## Affected Code&lt;/p&gt;
&lt;p&gt;`bin/mcp-server.ts:89` — default secret resolves to empty string, enabling open access&lt;/p&gt;
&lt;p&gt;```typescript
    secret: process.env[&amp;#39;NETWORK_AI_MCP_SECRET&amp;#39;] ?? &amp;#39;&amp;#39;,
```&lt;/p&gt;
&lt;p&gt;`lib/mcp-transport-sse.ts:254` — auth guard short-circuits to `true` when secret is falsy&lt;/p&gt;
&lt;p&gt;```typescript
  private _isAuthorized(req: http.IncomingMessage): boolean {
    if (!this._opts.secret) return true;
    const authHeader = req.headers[&amp;#39;authorization&amp;#39;];
    if (typeof authHeader !== &amp;#39;string&amp;#39;) return false;
    const parts = authHeader.split(&amp;#39;…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; npm: network-ai&lt;/p&gt;
&lt;p&gt;# Unauthenticated Cross-Origin MCP Tool Invocation via Empty Default Secret&lt;/p&gt;
&lt;p&gt;| Field            | Value |
| ---------------- | ----- |
| Repository       | Jovancoding/Network-AI |
| Affected version | v5.4.4 (commit c12686e181f231cf8d7bcf836a96d78f0f0877ac) |&lt;/p&gt;
&lt;p&gt;## Summary&lt;/p&gt;
&lt;p&gt;The MCP SSE server defaults to an empty secret (`process.env[&amp;#39;NETWORK_AI_MCP_SECRET&amp;#39;] ?? &amp;#39;&amp;#39;` at `bin/mcp-server.ts:89`), which causes `_isAuthorized` (`lib/mcp-transport-sse.ts:254`) to return `true` unconditionally for every request — no `Authorization` header is required. Simultaneously, `_handleRequest` sets `Access-Control-Allow-Origin: *` (`lib/mcp-transport-sse.ts:272`) on every response, so a cross-origin browser fetch can read the result without restriction. An unauthenticated attacker who can lure a user to a malicious web page can invoke all 22 exposed MCP tools — including `config_set`, `agent_spawn`, and `blackboard_write` — against a default-configured localhost server.&lt;/p&gt;
&lt;p&gt;## Affected Code&lt;/p&gt;
&lt;p&gt;`bin/mcp-server.ts:89` — default secret resolves to empty string, enabling open access&lt;/p&gt;
&lt;p&gt;```typescript
    secret: process.env[&amp;#39;NETWORK_AI_MCP_SECRET&amp;#39;] ?? &amp;#39;&amp;#39;,
```&lt;/p&gt;
&lt;p&gt;`lib/mcp-transport-sse.ts:254` — auth guard short-circuits to `true` when secret is falsy&lt;/p&gt;
&lt;p&gt;```typescript
  private _isAuthorized(req: http.IncomingMessage): boolean {
    if (!this._opts.secret) return true;
    const authHeader = req.headers[&amp;#39;authorization&amp;#39;];
    if (typeof authHeader !== &amp;#39;string&amp;#39;) return false;
    const parts = authHeader.split(&amp;#39;…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/ghsa-j3vx-cx2r-pvg8</guid>
    </item>
  </channel>
</rss>
