CVE-2026-55236: LangGraph API: authz bypass leaks assistant config

GHSA-jfj5-wrj9-63x4 MEDIUM
Published August 19, 2026
CISO Take

A logic flaw in langgraph-api's run-creation path let it skip the same authorization check used everywhere else in the assistant lifecycle, so a request to create a run could silently reference another tenant's private assistant and return its metadata, config, and context — fields the runtime encrypts at rest precisely because they can hold secrets and business logic. This only bites deployments that wrote custom authorization handlers gating access via an assistants.search or assistants.read handler without a global fallback, which narrows exposure but is a common pattern for multi-tenant LangGraph Server / Agent Server deployments. There's no public exploit, no KEV listing, and CVSS 5.9 (AC:High, PR:Low) reflects that this requires an authenticated user and specific handler misconfiguration rather than a trivial remote bypass — but the confidentiality hit (C:H) is real given 3,763 downstream dependents on the package. Patch to langgraph-api 0.10.0, then re-verify: handlers gating only via assistants.search must add an equivalent assistants.read handler returning the same owner filter, or the run-creation path silently goes unchecked again post-upgrade. Audit run-creation logs for cross-tenant assistant references and rotate any credentials that may have lived in exposed assistant config.

Sources: NVD GitHub Advisory ATLAS

What is the risk?

Medium severity (CVSS 5.9) reflecting high confidentiality impact offset by high attack complexity and required low privileges — this is not a remote, unauthenticated bypass. Exploitability is conditional: only deployments with custom authorization handlers that gate assistant access exclusively through `assistants.read` (or `assistants.search`) without a global fallback handler are affected. No public exploit code, no Nuclei template, not in CISA KEV, and the vendor states no evidence of in-the-wild exploitation. The main risk driver is silent scope: teams may not realize their handler wiring has this specific gap until an authenticated user (possibly a legitimate but lower-trust tenant) probes for it.

How does the attack unfold?

Authenticated Access
Attacker obtains a legitimate but low-privilege account in a multi-tenant LangGraph Server deployment that uses a custom authorization handler covering only assistants.read.
AML.T0012
Target Identification
Attacker identifies or guesses the ID of a private assistant belonging to another tenant.
Authorization Bypass via Run Creation
Attacker submits a run-creation request referencing the victim's assistant ID; the request dispatches assistants.search instead of assistants.read, no handler is consulted, and the owner filter is omitted from the query.
AML.T0084
Configuration Disclosure and Unauthorized Execution
The server returns the victim assistant's metadata, config, and context to the attacker and executes the new run using that assistant's configuration, exposing potentially sensitive settings and credentials.
AML.T0083

What systems are affected?

Package Ecosystem Vulnerable Range Patched
LangGraph pip < 0.10.0 0.10.0
39.8K 3.8K dependents Pushed 3d ago 82% patched ~7d to patch Full package profile →

Do you use LangGraph? You're affected.

How severe is it?

CVSS 3.1
5.9 / 10
EPSS
N/A
Exploitation Status
No known exploitation
Sophistication
Moderate

What is the attack surface?

AV AC PR UI S C I A
AV Network
AC High
PR Low
UI None
S Unchanged
C High
I Low
A None

What should I do?

1 step
  1. Upgrade to langgraph-api 0.10.0 or later, which unifies run/cron creation onto the assistants.read event (matching direct reads) and stops forwarding client-supplied metadata into that authorization check. If you run custom authorization handlers, explicitly verify parity: any handler that previously gated assistant access only via assistants.search during run creation must be replaced or supplemented with an equivalent assistants.read handler returning the same owner-style filter — this is a breaking behavioral change, not just a patch-and-forget. Post-upgrade, audit application logs for run/cron-creation requests that reference assistant IDs outside the requesting user's ownership scope, and rotate any secrets embedded in assistant config/metadata/context fields for tenants who may have been exposed prior to patching.

How is it classified?

Which compliance frameworks are affected?

This CVE is relevant to:

EU AI Act
Article 15 - Accuracy, robustness and cybersecurity
ISO 42001
A.6.2 - AI system operational planning and access control
NIST AI RMF
MEASURE 2.7 - AI system security and resilience is evaluated
OWASP LLM Top 10
LLM02 - Sensitive Information Disclosure

Frequently Asked Questions

What is CVE-2026-55236?

A logic flaw in langgraph-api's run-creation path let it skip the same authorization check used everywhere else in the assistant lifecycle, so a request to create a run could silently reference another tenant's private assistant and return its metadata, config, and context — fields the runtime encrypts at rest precisely because they can hold secrets and business logic. This only bites deployments that wrote custom authorization handlers gating access via an assistants.search or assistants.read handler without a global fallback, which narrows exposure but is a common pattern for multi-tenant LangGraph Server / Agent Server deployments. There's no public exploit, no KEV listing, and CVSS 5.9 (AC:High, PR:Low) reflects that this requires an authenticated user and specific handler misconfiguration rather than a trivial remote bypass — but the confidentiality hit (C:H) is real given 3,763 downstream dependents on the package. Patch to langgraph-api 0.10.0, then re-verify: handlers gating only via assistants.search must add an equivalent assistants.read handler returning the same owner filter, or the run-creation path silently goes unchecked again post-upgrade. Audit run-creation logs for cross-tenant assistant references and rotate any credentials that may have lived in exposed assistant config.

Is CVE-2026-55236 actively exploited?

No confirmed active exploitation of CVE-2026-55236 has been reported, but organizations should still patch proactively.

How to fix CVE-2026-55236?

Upgrade to langgraph-api 0.10.0 or later, which unifies run/cron creation onto the `assistants.read` event (matching direct reads) and stops forwarding client-supplied metadata into that authorization check. If you run custom authorization handlers, explicitly verify parity: any handler that previously gated assistant access only via `assistants.search` during run creation must be replaced or supplemented with an equivalent `assistants.read` handler returning the same owner-style filter — this is a breaking behavioral change, not just a patch-and-forget. Post-upgrade, audit application logs for run/cron-creation requests that reference assistant IDs outside the requesting user's ownership scope, and rotate any secrets embedded in assistant `config`/`metadata`/`context` fields for tenants who may have been exposed prior to patching.

What systems are affected by CVE-2026-55236?

This vulnerability affects the following AI/ML architecture patterns: agent frameworks, multi-tenant SaaS agent platforms, authorization/access control layers.

What is the CVSS score for CVE-2026-55236?

CVE-2026-55236 has a CVSS v3.1 base score of 5.9 (MEDIUM).

What is the AI security impact?

Affected AI Architectures

agent frameworksmulti-tenant SaaS agent platformsauthorization/access control layers

MITRE ATLAS Techniques

AML.T0083 Credentials from AI Agent Configuration
AML.T0084 Discover AI Agent Configuration

Compliance Controls Affected

EU AI Act: Article 15
ISO 42001: A.6.2
NIST AI RMF: MEASURE 2.7
OWASP LLM Top 10: LLM02

What are the technical details?

Original Advisory

## Summary In affected versions of `langgraph-api` (the LangGraph Server runtime), the run-creation path authorized the assistant attached to a run using a different authorization event than the rest of the assistant-handling code paths. Direct assistant reads and cron creation dispatch the `assistants.read` authorization event; run creation dispatched `assistants.search` with an incomplete value. In deployments whose custom authorization handlers register only an `assistants.read` handler (without an `assistants.search` handler and without a global fallback handler), no handler was consulted on the run-creation path, the returned filter set was empty, and the owner constraint was omitted from the resulting query. As a result, in those deployments a request to create a run could reference a private assistant owned by another user, even where direct assistant reads, assistant search, and cron creation against that assistant were correctly denied. The run-creation response merged the referenced assistant's `metadata`, `config`, and `context` into fields returned to the requesting user. These fields can carry sensitive configuration; the runtime encrypts them at rest for that reason. We have no evidence of this behavior occurring in the wild. ## Affected users / systems You may be affected if you: - run `langgraph-api` (the LangGraph Server / Agent Server runtime, including via the LangGraph Platform Helm chart), and - use custom authorization handlers that gate assistant access through an `assistants.read` or `assistants.search` handler rather than a global handler covering all assistant events. Deployments without custom authorization handlers, or whose handlers apply an equivalent owner filter across all assistant events (for example through a global handler), are not affected. ## Impact - Confidentiality: exposure of another user's private assistant `metadata`, `config`, and `context` through the run-creation response. These fields can contain sensitive configuration. - Integrity: creation of a run associated with another user's private assistant, beyond the requesting user's authorization scope; the run is then carried out using that assistant's configuration. ## Patches / mitigation Run creation, and the parallel cron-creation path, now dispatch the `assistants.read` authorization event in both the in-memory and gRPC/Postgres runtimes, matching direct assistant reads. Client-supplied run and cron metadata is no longer forwarded into that authorization event, so handlers receive a consistent value shape and determine access by returning an owner filter that is applied server-side. Fixed in `langgraph-api` 0.10.0. This is a behavioral change for deployments with custom authorization handlers: - Handlers that gated assistant access only through `assistants.search` during run creation are no longer consulted on that path; provide an equivalent `assistants.read` handler that returns the same owner filter. - The metadata field on the `assistants.read` event during run and cron creation is no longer populated; handlers that read or stamped it should move that logic into the run/cron create handlers. ## Operational guidance - Register an `assistants.read` handler (or a global handler covering it) that returns an owner-style filter, and confirm parity across the assistant read, search, and run/cron creation paths. - Upgrade to a release containing this change.

Exploitation Scenario

In a multi-tenant SaaS platform built on LangGraph Server, Tenant A configures a private assistant whose `config` embeds a downstream API key and a proprietary system prompt. The platform's custom authorization layer only registers an `assistants.read` handler (a reasonable-looking implementation choice) without a matching `assistants.search` handler or global fallback. Tenant B, an authenticated but unrelated user, issues a run-creation request that references Tenant A's assistant ID — a value Tenant B could guess, enumerate, or obtain from a shared link. Because run creation dispatched `assistants.search` rather than `assistants.read`, no handler is consulted, no owner filter applies, and the platform both executes a run using Tenant A's assistant configuration and returns that configuration's `metadata`/`config`/`context` in the API response to Tenant B — exposing the embedded API key and prompt logic to an unauthorized party.

Weaknesses (CWE)

CWE-285 — Improper Authorization: The product does not perform or incorrectly performs an authorization check when an actor attempts to access a resource or perform an action.

  • [Architecture and Design] Divide the product into anonymous, normal, privileged, and administrative areas. Reduce the attack surface by carefully mapping roles with data and functionality. Use role-based access control (RBAC) to enforce the roles at the appropriate boundaries. Note that this approach may not protect against horizontal authorization, i.e., it will not protect a user from attacking others with the same role.
  • [Architecture and Design] Ensure that you perform access control checks related to your business logic. These checks may be different than the access control checks that you apply to more generic resources such as files, connections, processes, memory, and database records. For example, a database may restrict access for medical records to a specific database user, but each record might only be intended to be accessible to the patient and the patient's doctor.

Source: MITRE CWE corpus.

CVSS Vector

CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:L/A:N

Timeline

Published
August 19, 2026
Last Modified
August 19, 2026
First Seen
August 19, 2026

Related Vulnerabilities