CVE-2026-81096: ToolUniverse through 1.2.6 Unauthenticated Remote Code Execution via python_code_executor Sandbox Escape

Published Aug 27, 2026
·
Updated

ToolUniverse ran caller-supplied Python inside a sandbox that could be escaped, on a server that required no authentication. The executor behind the pythoncodeexecutor tool, in pythonexecutortool.py, inspected the submitted source for a denied list of attribute names and calls but left the attribute-lookup builtins available and did not stop a dunder attribute reached through a string lookup or through a module already permitted, so a caller could walk from a literal's class to its base and enumerate subclasses to obtain a reference to the process and subprocess modules. A per-call argument also let the caller widen the import allow-list before the inspection ran. The HTTP and MCP servers in httpapiserver.py and smcpserver.py bound to every interface with debugging enabled and no authentication, so any caller able to reach the port executed code as the server process. Version 1.3.0 adds bearer-token authentication, defaults the bind address to loopback, and hardens the attribute checks.

Affected Software

1 affected component
ToolUniverse<=1.2.6

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Upgrade

    Upgrade ToolUniverse to a version that resolves this vulnerability.

    Fixed in 1.3.0
  2. Configuration

    Update ToolUniverse to v1.3.0 so the HTTP server binds to the loopback address by default instead of every interface.

    ToolUniverse HTTP server (http_api_server.py) bind address = loopback only
  3. Configuration

    Update ToolUniverse to v1.3.0 so the MCP server binds to the loopback address by default instead of every interface.

    ToolUniverse MCP server (smcp_server.py) bind address = loopback only
  4. Configuration

    Update ToolUniverse to v1.3.0 to add bearer-token authentication for requests to prevent unauthenticated remote access.

    ToolUniverse HTTP and MCP servers (http_api_server.py, smcp_server.py) authentication = bearer-token enabled

Event History

Aug 27, 2026
CVE Published
via MITRE·02:50 PM
Data Sourced
via MITRE·02:50 PM
DescriptionSeverityWeakness
Data Sourced
via NVD·05:20 PM
DescriptionSeverityWeakness
Nov 30, 58624
Event
via NVD·04:22 AM

Frequently Asked Questions

1

Which deployments are exposed to unauthenticated exploitation?

ToolUniverse deployments through 1.2.6 are exposed when their HTTP or MCP server port is reachable by an attacker. Those servers bound to every interface, enabled debugging, and required no authentication, so any reachable caller could execute code as the server process.

2

Does exploitation require credentials, user interaction, or a special server configuration?

No. The affected servers required no authentication, and the vulnerability has no stated user-interaction or privilege requirement. The default network binding exposed the services on every interface with debugging enabled.

3

What changes in version 1.3.0 reduce the risk?

Version 1.3.0 adds bearer-token authentication, changes the default bind address to loopback, and hardens the sandbox attribute checks. Upgrading addresses both the unauthenticated network exposure and the Python sandbox escape paths described.

4

What can be done if an immediate upgrade is not possible?

Restrict access to the HTTP and MCP server ports so untrusted callers cannot reach them, preferably limiting exposure to localhost or trusted network paths. Do not allow untrusted users to submit Python to python_code_executor.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203