/

CVE-2026-67348

Severity:

HIGH RISK

(8.1)

IDOR (CWE-639) in Julep execution details API

CVE-2026-67348

Deferred

Vulnerability type

Category:

Insecure Direct Object Reference

CWE:

CWE-639

Impact:

Cross-tenant Data Exposure

Severity:

HIGH RISK

(8.1)

CVSS version:

3.1

Catch this CVE while code is being written

Detect vulnerable code directly in pull requests, so CVEs are fixed before merge.

Summary

Julep exposes an insecure direct object reference in its get_execution_details endpoint, allowing authenticated tenants to access other tenants' execution records.

By supplying arbitrary execution_id values, attackers can retrieve sensitive task inputs, outputs, metadata, and temporal task tokens belonging to different tenants.

Julep exposes an insecure direct object reference in its get_execution_details endpoint, allowing authenticated tenants to access other tenants' execution records.

By supplying arbitrary execution_id values, attackers can retrieve sensitive task inputs, outputs, metadata, and temporal task tokens belonging to different tenants.

Affected context

This vulnerability occurs in multi-tenant Julep deployments where the get_execution_details API is exposed to authenticated users.

The issue is present when the endpoint uses execution_id as the primary lookup key but does not enforce proper tenant scoping or ownership checks on the requested resource.

It is most relevant in environments where execution records contain sensitive task payloads, workflow metadata, and temporal tokens that may be reused to interact with background systems.

This vulnerability occurs in multi-tenant Julep deployments where the get_execution_details API is exposed to authenticated users.

The issue is present when the endpoint uses execution_id as the primary lookup key but does not enforce proper tenant scoping or ownership checks on the requested resource.

It is most relevant in environments where execution records contain sensitive task payloads, workflow metadata, and temporal tokens that may be reused to interact with background systems.

Exploit preconditions

  • Attack surface: Julep HTTP API, specifically the get_execution_details endpoint
  • Required access: Authenticated access as any tenant user capable of calling the endpoint
  • Trigger point: Supplying an execution_id belonging to another tenant in the API request
  • Why exploitation is possible: The endpoint authorizes based solely on user authentication and assumes the provided execution_id is valid for that tenant, without enforcing ownership or tenant-bound filters.
  • Attack surface: Julep HTTP API, specifically the get_execution_details endpoint
  • Required access: Authenticated access as any tenant user capable of calling the endpoint
  • Trigger point: Supplying an execution_id belonging to another tenant in the API request
  • Why exploitation is possible: The endpoint authorizes based solely on user authentication and assumes the provided execution_id is valid for that tenant, without enforcing ownership or tenant-bound filters.

Why this happens

The underlying bug is a classic insecure direct object reference (IDOR), mapped to CWE-639.

The application exposes a direct identifier (execution_id) for internal objects and relies on it for data retrieval, but fails to bind access control decisions to the resource's tenant or owner.

As a result, any authenticated user who can guess, enumerate, or intercept execution_id values can access records that should be confined to other tenants.

This reflects an authorization logic flaw where authentication is performed, but fine-grained, object-level authorization is missing or incorrectly implemented.

The underlying bug is a classic insecure direct object reference (IDOR), mapped to CWE-639.

The application exposes a direct identifier (execution_id) for internal objects and relies on it for data retrieval, but fails to bind access control decisions to the resource's tenant or owner.

As a result, any authenticated user who can guess, enumerate, or intercept execution_id values can access records that should be confined to other tenants.

This reflects an authorization logic flaw where authentication is performed, but fine-grained, object-level authorization is missing or incorrectly implemented.

Potential impact

  • Unauthorized access to task inputs and outputs from other tenants
  • Exposure of sensitive workflow metadata and business logic details
  • Leakage of temporal task tokens that could be abused to interact with background systems
  • Cross-tenant privacy violations and potential regulatory non-compliance
  • Reconnaissance for further attacks based on observed execution behavior
  • Unauthorized access to task inputs and outputs from other tenants
  • Exposure of sensitive workflow metadata and business logic details
  • Leakage of temporal task tokens that could be abused to interact with background systems
  • Cross-tenant privacy violations and potential regulatory non-compliance
  • Reconnaissance for further attacks based on observed execution behavior

General mitigation guidance

Effective mitigation focuses on enforcing robust, resource-level authorization rather than relying solely on user authentication.

Common defensive patterns include:

  • Binding every execution record to a tenant or owner identifier and verifying this relationship on every read operation.
  • Implementing centralized authorization checks that validate whether the caller is permitted to access the specific execution_id, not just any execution record.
  • Avoiding the use of globally visible or easily enumerable identifiers; where possible, use opaque or random identifiers with sufficient entropy.
  • Designing multi-tenant data access layers that always scope queries by tenant context, making cross-tenant access impossible by default.
  • Applying least privilege to API roles, ensuring that only appropriately scoped users can access detailed execution data.

Effective mitigation focuses on enforcing robust, resource-level authorization rather than relying solely on user authentication.

Common defensive patterns include:

  • Binding every execution record to a tenant or owner identifier and verifying this relationship on every read operation.
  • Implementing centralized authorization checks that validate whether the caller is permitted to access the specific execution_id, not just any execution record.
  • Avoiding the use of globally visible or easily enumerable identifiers; where possible, use opaque or random identifiers with sufficient entropy.
  • Designing multi-tenant data access layers that always scope queries by tenant context, making cross-tenant access impossible by default.
  • Applying least privilege to API roles, ensuring that only appropriately scoped users can access detailed execution data.

How teams detect issues like this

Detection typically relies on a combination of application security review, automated checks, and operational monitoring.

Useful approaches include:

  • Static analysis or authorization linting rules that flag data access patterns lacking tenant or ownership filters.
  • Code reviews that focus on multi-tenant boundaries, verifying that every query involving execution_id also enforces tenant scoping.
  • Centralized authorization middleware or policy engines that log and audit access decisions for sensitive resources.
  • Runtime monitoring and anomaly detection to identify unusual access patterns, such as a single tenant accessing large numbers of execution records across different ID ranges.
  • Periodic security testing (including API-focused penetration tests) to probe endpoints for IDOR behavior with cross-tenant identifiers.

Detection typically relies on a combination of application security review, automated checks, and operational monitoring.

Useful approaches include:

  • Static analysis or authorization linting rules that flag data access patterns lacking tenant or ownership filters.
  • Code reviews that focus on multi-tenant boundaries, verifying that every query involving execution_id also enforces tenant scoping.
  • Centralized authorization middleware or policy engines that log and audit access decisions for sensitive resources.
  • Runtime monitoring and anomaly detection to identify unusual access patterns, such as a single tenant accessing large numbers of execution records across different ID ranges.
  • Periodic security testing (including API-focused penetration tests) to probe endpoints for IDOR behavior with cross-tenant identifiers.

Sources

SourceLink
github.comgithub.com/julep-ai/julep/issues/1615
vulncheck.comvulncheck.com/advisories/julep-insecure-direct-object-reference-via-get-executions-execution-id

Frequently asked

questions

Exploitation requires an authenticated user account in Julep, but any tenant user with access to the get_execution_details endpoint can potentially abuse the flaw to read other tenants' data.

The attacker needs standard API access as a legitimate tenant user; no special administrative privileges are required if the endpoint is broadly available.

The most reliable fix is to enforce strict resource-level authorization by binding each execution record to a tenant or owner and validating that the caller's tenant context matches before returning data.

Adopt a consistent access control strategy that treats object-level authorization as a first-class concern, including centralized policy enforcement, tenant-scoped data access layers, thorough code reviews of all resource lookup endpoints, and use of automated checks to detect missing ownership validation.

Exploitation requires an authenticated user account in Julep, but any tenant user with access to the get_execution_details endpoint can potentially abuse the flaw to read other tenants' data.

The attacker needs standard API access as a legitimate tenant user; no special administrative privileges are required if the endpoint is broadly available.

The most reliable fix is to enforce strict resource-level authorization by binding each execution record to a tenant or owner and validating that the caller's tenant context matches before returning data.

Adopt a consistent access control strategy that treats object-level authorization as a first-class concern, including centralized policy enforcement, tenant-scoped data access layers, thorough code reviews of all resource lookup endpoints, and use of automated checks to detect missing ownership validation.

Find out what's already
exploitable in your codebase.