CVE-2026-81735
nicheUnauthenticated RCE via exposed MCP transports in UI-TARS-desktop mcp-http-server
The mcp-http-server package in UI-TARS-desktop defaulted its listen address to '::' (all interfaces) and applied authentication middleware only when a caller explicitly supplied it, leaving the Streamable HTTP and SSE MCP transports unauthenticated in the default and common configurations. The @agent-infra/mcp-server-commands and @agent-infra/mcp-server-filesystem entry points call the server with only a host and port and no middleware, so any unauthenticated client that can reach the port can invoke the servers' tools without credentials. Through the commands server's run_command tool, which passes the caller-supplied string to child_process.exec, an attacker gains arbitrary command execution as the user running the server, and the filesystem server allows unauthenticated file reads and writes. Anyone running these MCP servers with the HTTP/SSE transport bound to a network-reachable interface is affected; the fix (a 127.0.0.1 listen default) landed in commit c2ad42e3eb9b27830db41a3e6f51ca7179d9b168 while the package version remained 1.2.4, so the affected boundary is that commit rather than a release number. No public proof-of-concept is known, EPSS is 0.5% (43rd percentile), and the issue is not in CISA KEV, so no exploitation is currently known.
What to do: Update mcp-http-server (and dependents @agent-infra/mcp-server-commands and @agent-infra/mcp-server-filesystem) to a build that includes commit c2ad42e3eb9b27830db41a3e6f51ca7179d9b168 or a release containing it, since the 1.2.4 version number alone does not indicate the fix. Until patched, do not expose the MCP HTTP/SSE port to untrusted networks: pass an explicit 127.0.0.1 host, supply authentication middleware to startSseAndStreamableHttpMcpServer, and firewall the port. Check listening sockets on hosts running these servers for bindings on '::' or 0.0.0.0 to identify exposed instances.
| ByteDance (UI-TARS-desktop) mcp-http-server (npm) | all builds through 1.2.4 prior to commit c2ad42e3eb9b27830db41a3e6f51ca7179d9b168 (version stayed at 1.2.4 across the fix, so the boundary is the commit, not a |
| ByteDance (agent-infra) @agent-infra/mcp-server-commands (npm) | versions calling startSseAndStreamableHttpMcpServer with no middleware against vulnerable mcp-http-server builds (no version range given in the advisory) |
| ByteDance (agent-infra) @agent-infra/mcp-server-filesystem (npm) | versions calling startSseAndStreamableHttpMcpServer with no middleware against vulnerable mcp-http-server builds (no version range given in the advisory) |
Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.
startServer.ts in the mcp-http-server package of UI-TARS-desktop defaulted its listen address to '::' when no host was given, so startSseAndStreamableHttpMcpServer bound the Streamable HTTP and SSE MCP transports to every interface, and its authentication middleware was optional: middlewares are applied only when a caller supplies them. The @agent-infra/mcp-server-commands and @agent-infra/mcp-server-filesystem entry points call startSseAndStreamableHttpMcpServer with a host and port alone and pass no middleware, so neither server required a credential. The commands server exposes a run_command tool that hands its caller-supplied command string to promisify(child_process.exec), so any unauthenticated client able to reach the port could run arbitrary commands as the user running the server, and the filesystem server exposed its file read and write tools on the same terms. The listen default became 127.0.0.1 in commit c2ad42e3eb9b27830db41a3e6f51ca7179d9b168; the package version stayed at 1.2.4 across that change, so the boundary is the commit rather than a release.
- Weakness
- CWE-306
- Vector
- CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
In the news0 stories
No ingested article mentions this CVE yet.