Release
v5.15.5 - Security fixes: path traversal, fail-closed network surfaces, Node 18/20 CLI
Four privately reported vulnerabilities, all reported by zx (@manus-pi):
Read the release here or open the original release on GitHub.
Security
Four privately reported vulnerabilities, all reported by zx (@manus-pi):
- GHSA-5mm5-4mh4-6gm6 (High, CWE-22):
InputSanitizer.sanitizePath()accepted sibling directories that share the base directory's name prefix (/data/project-evilfor base/data/project). Containment is now checked on path-segment boundaries; NUL bytes are rejected. - GHSA-v64j-mc7x-c7x7 (High, CWE-23):
FileJobStorejob IDs allowed../traversal to read or delete arbitrary.jsonfiles. - GHSA-mfxv-jg44-xj48 (High, CWE-23):
AgentVCRcassette names allowed../traversal to read or write arbitrary.jsonfiles. Both now use the newInputSanitizer.safeChildPath(). - GHSA-qvf5-9prv-7r9c (High, CWE-306):
A2AServertask routes were unauthenticated when nosecretwas configured (the default).
Same-class hardening from a follow-up audit:
ApprovalInbox(HTTP API) andSwarmTransportServernow require a secret;allowUnauthenticated: trueis an explicit, loopback-only opt-out.SwarmTransportServersignatures now cover the request id, source node, timestamp, and TTL, are verified in constant time, and stale or replayed requests are rejected. A listedsourceNodeis required whenallowedNodesis set.ControlPlaneandWorkTreeDashboardgained the GHSA-hr6v-mfxm-4438 Host/Origin checks (DNS rebinding, cross-site WebSocket hijacking).
Breaking changes
A2AServer,ApprovalInbox(HTTP), andSwarmTransportServerthrow without a non-empty secret. Pass a secret, orallowUnauthenticated: truefor loopback-only local development.- Swarm transport clients and servers must both run 5.15.5 (the signed payload changed).
FileJobStoreIDs andAgentVCRcassette names must match[A-Za-z0-9_.-]{1,128}without..; other values throwSecurityError.
Fixed
- CodeQL #183 (
py/mixed-returns) inscripts/context_manager.py. - ClawHub skill 5.15.4 scan follow-up: reworded inject preamble and capability declarations, declared
blackboard.pyarchive writes, moved scan-findings history toSECURITY.md.
Tests
3,738 tests across 41 suites; test-phase20.ts reproduces all four advisory PoCs. Local HOL plugin-scanner: 95/100, no high findings.
Full changelog: https://github.com/Jovancoding/Network-AI/compare/v5.15.4...v5.15.5