criticalAgent ThreatCode Execution

Omnigent Agent Bundle Arbitrary Code Execution via Unsanitized Tool Callable Path

First seen Aug 22, 2026 · Updated Aug 22, 2026 · CVSS 8.8

arbitrary-code-executioninsecure-deserializationtool-dispatchagent-bundledotted-path-injectionprivilege-escalationsupply-chainASI05 · Unsafe Code ExecutionAML.T0011AML.T0053Surface: Tool LayerPropagation: Single Hop

Omnigent, an open-source AI agent orchestration framework, fails to validate the dotted Python path an authenticated user supplies for a tool callable when uploading an agent bundle. This allows a low-privilege authenticated user to point a tool at dangerous built-ins like subprocess.check_output, achieving arbitrary command execution with the runner's permissions. The result is full compromise of the runner process, including credentials, environment variables, workspace data, and internal service access.

Technical Analysis

The entry point is the multipart POST /v1/sessions endpoint, which accepts an agent bundle from an authenticated user. The validation routine validate_agent_bundle in bundles.py does not restrict the tools[].callable field to an allowlist of safe, intended module paths. During execution, tool_dispatch.py's _resolve_spec_callable dynamically imports the attacker-specified module and _execute_spec_callable_tool invokes the resolved function directly, meaning any importable callable in the Python environment (including subprocess.check_output) can be selected and executed. This crosses the trust boundary between 'authenticated but untrusted user input' and 'runner process execution context,' effectively turning tool specification into arbitrary code execution rather than constrained tool invocation. The attacker gains code execution with the same permissions as the runner, enabling file exfiltration, credential theft, lateral movement to internal services, and denial of availability, all without requiring administrator privileges.

Affected Systems

Omnigent

Detection Signatures

  • Agent bundle tool specs referencing dotted paths outside an approved tool module namespace (e.g., subprocess.*, os.*, sys.*, builtins.*)
  • Unexpected imports of subprocess, os, or socket modules triggered by tool_dispatch resolution logs
  • POST /v1/sessions requests containing multipart bundles with tools[].callable fields pointing to standard library or non-tool packages
  • Runner process spawning unexpected child processes shortly after session creation
  • Logs showing _resolve_spec_callable importing modules never referenced in the framework's registered tool catalog

Remediation Steps

  1. 1

    Upgrade Omnigent

    Update to Omnigent version 0.3.0 or later, which fixes validate_agent_bundle to properly restrict callable paths.

  2. 2

    Enforce callable allowlisting

    Restrict tools[].callable values to a strict allowlist of vetted, namespaced tool modules; reject any path resolving to standard library or non-tool packages.

  3. 3

    Sandbox the runner process

    Run the tool execution runner in a least-privilege, isolated environment (container, gVisor, seccomp) so that even a resolved malicious callable cannot access host credentials or the broader network.

  4. 4

    Audit and monitor bundle submissions

    Log and alert on all agent bundle uploads and tool_dispatch resolutions, especially any callable outside expected module prefixes.

  5. 5

    Require re-authentication/approval for bundle execution

    Add an administrator review or signing step for agent bundles before they are executed by the runner, especially in multi-tenant deployments.

CVE / Advisory IDs

CVE-2026-62675

Industries Most Exposed

Software/TechnologyCloud ServicesAI/ML Platform ProvidersManaged Service ProvidersAny enterprise deploying multi-tenant AI agent orchestration

Sources

Respond to this threat

Pro subscribers get a full AI-generated incident-response playbook for this threat — detection, containment, eradication, and recovery steps — plus an unlimited AI Threat Advisor for questions about your environment.