Description
Network-AI, a TypeScript/Node.js multi-agent orchestrator, has a shipped, exported, documented feature called `ApprovalInbox` (`lib/approval-inbox.ts`). It is the network surface of the human-in-the-loop Approval Gate, which `ApprovalGate` uses to require explicit human approval for high-risk operations. The HTTP server it exposes has no authentication of any kind and sets `Access-Control-Allow-Origin: *` on every route, including the state-changing `POST /approvals/:id/approve` and `/deny`. As a result, in versions 5.0.0 through 5.12.1, any party who can send an HTTP request to the inbox port — a co-located process, a container/SSRF on the same host, a remote client when the operator binds a non-loopback address, or any website the operator visits in a browser (via the wildcard CORS) — can enumerate pending approvals and approve them, defeating the entire human-in-the-loop control and causing the gated high-risk action (e.g. a shell command the agent was holding for review) to execute without consent. This issue is fixed in v5.12.2. `ApprovalInbox` now accepts a `secret` option. When set, the mutating endpoints `POST /:id/approve` and `POST /:id/deny` require an `Authorization: Bearer <secret>` header, validated in constant time with `crypto.timingSafeEqual`. `startServer()` already binds to `127.0.0.1` by default; operators exposing the inbox on a network must set a secret.
Published: 2026-07-20
Score: 5.9 Medium
EPSS: < 1% Very Low
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

Network‑AI includes an HTTP server called ApprovalInbox that exposes a human‑in‑the‑loop approval gate. The server implements no authentication and allows all origins by sending Access‑Control‑Allow‑Origin: *, including the mutating endpoints POST /:id/approve and POST /:id/deny. As a result, any client that can reach the inbox port—whether a local process, a container facing the host, a remote connection to a non‑loopback binding, or a browser tricked via CORS—can list pending approvals and approve or deny them. This allows an attacker to bypass the intended approval procedure and trigger high‑risk operations such as queued shell commands without manual consent.

Affected Systems

Jovancoding’s Network‑AI product is affected in all releases from 5.0.0 up to and including 5.12.1. The vulnerability is fixed in version 5.12.2 where the ApprovalInbox server requires a bearer token on POST requests and defaults to binding on 127.0.0.1; operators that expose the inbox on a network must configure a secret token.

Risk and Exploitability

The CVSS score of 5.9 classifies the flaw as moderate severity. The EPSS score is listed as <1%, indicating a very low probability of exploitation, and the vulnerability is not listed in the CISA KEV catalog. The attack vector requires network or local access to the inbox HTTP server. With the server exposed on a non‑loopback address, any remote client can reach it; otherwise, a local or container process can exploit the default localhost binding or leverage an SSRF. Successful exploitation permits enumeration of pending approvals and manipulation of their state, effectively allowing the queued high‑risk operation to run without authorization.

Generated by OpenCVE AI on July 30, 2026 at 19:00 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade Network‑AI to version 5.12.2 or newer, where the ApprovalInbox HTTP server requires a secret token for POST endpoints and defaults to a localhost binding.
  • If the application must remain on an older release or needs external accessibility, configure the ApprovalInbox server with a strong secret and enforce the Authorization: Bearer <secret> header on all mutating requests.
  • Additionally, restrict network exposure of the inbox port by binding the server to 127.0.0.1 or applying firewall rules to limit connections to trusted hosts.

Generated by OpenCVE AI on July 30, 2026 at 19:00 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Mon, 20 Jul 2026 23:30:00 +0000

Type Values Removed Values Added
First Time appeared Jovancoding
Jovancoding network-ai
Vendors & Products Jovancoding
Jovancoding network-ai

Mon, 20 Jul 2026 18:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'poc', 'Technical Impact': 'partial'}, 'version': '2.0.3'}


Mon, 20 Jul 2026 17:15:00 +0000

Type Values Removed Values Added
Description Network-AI, a TypeScript/Node.js multi-agent orchestrator, has a shipped, exported, documented feature called `ApprovalInbox` (`lib/approval-inbox.ts`). It is the network surface of the human-in-the-loop Approval Gate, which `ApprovalGate` uses to require explicit human approval for high-risk operations. The HTTP server it exposes has no authentication of any kind and sets `Access-Control-Allow-Origin: *` on every route, including the state-changing `POST /approvals/:id/approve` and `/deny`. As a result, in versions 5.0.0 through 5.12.1, any party who can send an HTTP request to the inbox port — a co-located process, a container/SSRF on the same host, a remote client when the operator binds a non-loopback address, or any website the operator visits in a browser (via the wildcard CORS) — can enumerate pending approvals and approve them, defeating the entire human-in-the-loop control and causing the gated high-risk action (e.g. a shell command the agent was holding for review) to execute without consent. This issue is fixed in v5.12.2. `ApprovalInbox` now accepts a `secret` option. When set, the mutating endpoints `POST /:id/approve` and `POST /:id/deny` require an `Authorization: Bearer <secret>` header, validated in constant time with `crypto.timingSafeEqual`. `startServer()` already binds to `127.0.0.1` by default; operators exposing the inbox on a network must set a secret.
Title Network-AI: ApprovalInbox HTTP server has no authentication — anyone can approve pending agent actions
Weaknesses CWE-352
CWE-862
References
Metrics cvssV3_1

{'score': 5.9, 'vector': 'CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:L/I:H/A:N'}


Subscriptions

Jovancoding Network-ai
cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-07-20T17:33:23.241Z

Reserved: 2026-06-30T20:21:25.811Z

Link: CVE-2026-58482

cve-icon Vulnrichment

Updated: 2026-07-20T17:33:11.687Z

cve-icon NVD

No data.

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-07-30T19:15:04Z

Weaknesses
  • CWE-352

    Cross-Site Request Forgery (CSRF)

  • CWE-862

    Missing Authorization