{"id":15184,"date":"2026-09-04T19:02:29","date_gmt":"2026-09-04T11:02:29","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-54051"},"modified":"2026-09-04T19:02:29","modified_gmt":"2026-09-04T11:02:29","slug":"cve-2026-54051","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-54051","title":{"rendered":"CVE-2026-54051 [CRITICAL] &#8211; Network-AI is a TypeScript\/Node.js multi-agent orchestrator. Prior to version 5.9.1, the a"},"content":{"rendered":"<p>Network-AI is a TypeScript\/Node.js multi-agent orchestrator. Prior to version 5.9.1, 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; `, and a scoped command becomes arbitrary execution. The issue is fixed in v5.9.1. `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 (`; &amp; | $ ` ` ` ( )  { }` newline) or unterminated quote before the allowlist glob match; quoted metacharacters are preserved as literal argument data. Users should 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.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Network-AI is a TypeScript\/Node.js multi-agent orchestrator. Prior to version 5.9.1, the agent sandbox gates shell commands behind an allowlist (`SandboxPolicy.isCommandAllowed`), which THREAT_MODEL.m<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-15184","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/15184","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln"}],"about":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/types\/vuln"}],"wp:attachment":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=15184"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=15184"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=15184"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}