Vulnerability Details CVE-2026-58482
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.
Exploit prediction scoring system (EPSS) score
EPSS Score 0.002
EPSS Ranking 5.5%
CVSS Severity
CVSS v3 Score 5.9
Products affected by CVE-2026-58482
-
cpe:2.3:a:network-ai:network-ai:5.0.0
-
cpe:2.3:a:network-ai:network-ai:5.1.0
-
cpe:2.3:a:network-ai:network-ai:5.1.1
-
cpe:2.3:a:network-ai:network-ai:5.1.2
-
cpe:2.3:a:network-ai:network-ai:5.1.3
-
cpe:2.3:a:network-ai:network-ai:5.1.4
-
cpe:2.3:a:network-ai:network-ai:5.10.0
-
cpe:2.3:a:network-ai:network-ai:5.10.1
-
cpe:2.3:a:network-ai:network-ai:5.10.2
-
cpe:2.3:a:network-ai:network-ai:5.11.0
-
cpe:2.3:a:network-ai:network-ai:5.12.0
-
cpe:2.3:a:network-ai:network-ai:5.12.1
-
cpe:2.3:a:network-ai:network-ai:5.2.0
-
cpe:2.3:a:network-ai:network-ai:5.2.1
-
cpe:2.3:a:network-ai:network-ai:5.2.12
-
cpe:2.3:a:network-ai:network-ai:5.2.2
-
cpe:2.3:a:network-ai:network-ai:5.3.0
-
cpe:2.3:a:network-ai:network-ai:5.3.1
-
cpe:2.3:a:network-ai:network-ai:5.3.2
-
cpe:2.3:a:network-ai:network-ai:5.4.0
-
cpe:2.3:a:network-ai:network-ai:5.4.1
-
cpe:2.3:a:network-ai:network-ai:5.4.2
-
cpe:2.3:a:network-ai:network-ai:5.4.3
-
cpe:2.3:a:network-ai:network-ai:5.4.4
-
cpe:2.3:a:network-ai:network-ai:5.4.5
-
cpe:2.3:a:network-ai:network-ai:5.5.0
-
cpe:2.3:a:network-ai:network-ai:5.5.1
-
cpe:2.3:a:network-ai:network-ai:5.5.2
-
cpe:2.3:a:network-ai:network-ai:5.5.3
-
cpe:2.3:a:network-ai:network-ai:5.5.4
-
cpe:2.3:a:network-ai:network-ai:5.5.5
-
cpe:2.3:a:network-ai:network-ai:5.5.6
-
cpe:2.3:a:network-ai:network-ai:5.5.7
-
cpe:2.3:a:network-ai:network-ai:5.5.8
-
cpe:2.3:a:network-ai:network-ai:5.5.9
-
cpe:2.3:a:network-ai:network-ai:5.6.0
-
cpe:2.3:a:network-ai:network-ai:5.6.1
-
cpe:2.3:a:network-ai:network-ai:5.7.0
-
cpe:2.3:a:network-ai:network-ai:5.7.1
-
cpe:2.3:a:network-ai:network-ai:5.7.2
-
cpe:2.3:a:network-ai:network-ai:5.8.0
-
cpe:2.3:a:network-ai:network-ai:5.8.1
-
cpe:2.3:a:network-ai:network-ai:5.8.2
-
cpe:2.3:a:network-ai:network-ai:5.8.3
-
cpe:2.3:a:network-ai:network-ai:5.8.4
-
cpe:2.3:a:network-ai:network-ai:5.8.5
-
cpe:2.3:a:network-ai:network-ai:5.8.6
-
cpe:2.3:a:network-ai:network-ai:5.8.7
-
cpe:2.3:a:network-ai:network-ai:5.8.8
-
cpe:2.3:a:network-ai:network-ai:5.8.9
-
cpe:2.3:a:network-ai:network-ai:5.9.0
-
cpe:2.3:a:network-ai:network-ai:5.9.1