Skip to main content

ToolUniverse CVE-2026-81096

| EUVDEUVD-2026-67024 CRITICAL
Code Injection (CWE-94)
2026-08-27 VulnCheck GHSA-rg68-wg77-c3wm
9.3
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

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

  1. Access
    Discover exposed ToolUniverse port
  2. Delivery
    Send python_code_executor request
  3. Exploit
    Bypass deny-list via dunder subclass walk
  4. Execution
    Reach subprocess module
  5. Persist
    Execute arbitrary code as server process
  6. Impact
    Full host compromise

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Code injection prevention, sandbox exec
MITRE ATT&CK

2 techniques across 2 tactics: Execution, Initial Access

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Exploitation requires network reachability to the ToolUniverse HTTP API (http_api_server.py) or SMCP/MCP server (smcp_server.py) with the python_code_executor tool available. In vulnerable versions (through 1.2.6) these servers bind to every interface (0.0.0.0) with debugging enabled and no authentication, so on a default network-exposed deployment there are no special conditions - remote unauthenticated exploitation succeeds against any reachable instance. The sandbox escape itself needs no privileged input: the deny-list inspection is bypassed through dunder attributes reached via string/attribute lookup and via a per-call argument that widens the import allow-list. What LIMITS exploitation is deployment posture: an instance bound only to loopback (the 1.3.0 default) or protected by the new TOOLUNIVERSE_API_TOKEN bearer authentication is not reachable/executable by an unauthenticated remote attacker, and instances never exposed beyond localhost are not remotely exploitable.

Impact

This is a genuine top-priority issue, not an inflated CVSS number. The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:N/UI:N with VC:H/VI:H/VA:H) is consistent with the description: network-reachable, low complexity, no privileges, no user interaction, and full compromise of confidentiality, integrity, and availability. The combination of an escapable sandbox and a server that binds to every interface without authentication means exploitation collapses to 'reach the port, get code execution as the server process,' which is directly automatable. No EPSS score or CISA KEV status was provided in the input, and no public exploit code is identified at time of analysis, so there is no confirmation of active exploitation - the severity rests on the design flaw and VulnCheck's report rather than observed in-the-wild activity. The main mitigating factor is real-world exposure: ToolUniverse is a niche research toolkit, so the population of internet-reachable instances is likely small, favoring targeted opportunistic scanning over mass exploitation. Any operator running an exposed instance should treat patching as urgent regardless of that low footprint.

Exploit ScenarioDerived

An attacker scans for ToolUniverse HTTP/MCP ports exposed on 0.0.0.0 and, without any credentials, submits a python_code_executor request whose source uses ().__class__.__base__.__subclasses__() to reach subprocess and run OS commands. Because AV:N/AC:L/PR:N/UI:N applies, a single crafted request to the open port yields code execution as the server process; no public exploit code is identified, but the escape technique is described in the VulnCheck advisory.

Act Now Prioritize within 24-48h. Why: CRITICAL severity.
No patch listed yet 0.6% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Aug 27, 2026

Unauthenticated remote code execution affects mims-harvard ToolUniverse through 1.2.6, where the python_code_executor tool runs caller-supplied Python in a sandbox that can be escaped and the HTTP/MCP servers listen on all interfaces with no authentication. Any attacker who can reach the exposed port executes arbitrary code as the server process, since the deny-list source inspection can be bypassed via dunder attribute traversal and a per-call flag that widens the import allow-list. No public exploit code is identified at time of analysis, but the flaw is reported by VulnCheck and carries a CVSS 4.0 base score of 9.3; it is fixed in version 1.3.0.

RemediationAI

Upgrade to ToolUniverse 1.3.0, which adds bearer-token authentication, defaults the bind address to loopback (127.0.0.1), and hardens the attribute checks in the executor (Vendor-released patch: 1.3.0; see GHSA-pxwq-22vf-87fm and PR 251). If you cannot upgrade immediately, do not expose the HTTP or MCP servers on a non-loopback interface: bind them to 127.0.0.1 only and reach them via SSH tunnel or a localhost-only reverse proxy, accepting the trade-off that remote clients lose direct access. Place any exposed instance behind a network layer that enforces authentication (an authenticating reverse proxy or firewall rule restricting the port to trusted hosts), and disable debug mode. Where the python_code_executor tool is not required, disable or remove that tool entirely to eliminate the primary code-execution path, at the cost of losing dynamic Python execution features. In 1.3.0 the server refuses to bind to a non-loopback address unless TOOLUNIVERSE_API_TOKEN is set, so set a strong random token (e.g. python -c 'import secrets; print(secrets.token_urlsafe(32))') before any network exposure.

Affected VersionsENISA

ToolUniverse 0 ≤1.2.6

Affected Packages

euvd tooluniverse no fix

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

ToolUniverse is a Python toolkit (mims-harvard, CPE cpe:2.3:a:mims-harvard:tooluniverse) that exposes callable 'tools' to AI agents over HTTP and MCP transports. The vulnerable component is the executor behind the python_code_executor tool in python_executor_tool.py, which attempts to sandbox untrusted Python by scanning submitted source for a deny-list of attribute names and calls. This is a classic CWE-94 (Improper Control of Generation of Code / code injection) root cause: static blacklisting of a dynamic language is incomplete because attribute-lookup builtins (getattr and dunder access via string lookup) remain reachable. An attacker walks the standard object graph - from a literal's __class__ to __bases__ (object) and enumerating __subclasses__() - to reach process/subprocess objects, and a per-call argument lets the caller expand the import allow-list before inspection runs. Compounding this, http_api_server.py and smcp_server.py bound to 0.0.0.0 with debugging enabled and no authentication.

Know when Tooluniverse 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 (VulnCheck) PRIMARY 9.3 CRITICAL
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
vuln.today AI 9.8 CRITICAL

Network-reachable server with no authentication or user interaction and low-complexity sandbox escape gives AV:N/AC:L/PR:N/UI:N; arbitrary code as the server process yields full C:H/I:H/A:H, scope unchanged.

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

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
None
User Interaction
None
Vulnerable system: Confidentiality
High
Vulnerable system: Integrity
High
Vulnerable system: Availability
High
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

DescriptionCVE.org

ToolUniverse ran caller-supplied Python inside a sandbox that could be escaped, on a server that required no authentication. The executor behind the python_code_executor tool, in python_executor_tool.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 http_api_server.py and smcp_server.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.

Executive ViewAI

Why It Matters

mims-harvard ToolUniverse versions 1.2.6 and earlier contain a critical vulnerability allowing any attacker with network access to gain complete control of the affected server without credentials. The vulnerability could result in unauthorized access to research data, system compromise, and potential data theft across Harvard research operations.

Business Impact: Severe
Compensating Controls

Apply vendor patch to version 1.3.0 or later. Until patching is complete, restrict network access to ToolUniverse ports to trusted internal networks only; disable Python code execution features if not critical to ongoing research; and monitor server process logs for suspicious activity.

Threat Intelligence Overview

EPSS Score
0.6%
Top 55% exploitable
Prevalence
Low
niche Harvard research/agent toolkit, limited production deployment
Data Quality
6 sources
Confidence: High

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.6%
Patch available No
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
Out-of-Cycle
Exploitation
None
System Exposure· derived
Open
Automatable
Yes
Human Impact
Very High
Technical Impact
Total

Priority Score

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

Attack Technique

Code Injection CRITICAL

Code injection occurs when an application accepts user input and passes it directly into a language interpreter or evaluator without proper sanitization.

Remote Code Execution represents the critical moment when an attacker successfully runs arbitrary code on a target system without physical access.

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