CVE-2026-55235: langgraph-api: loopback webhook bypasses cross-user auth

GHSA-2c9q-c2q9-qgqv MEDIUM
Published August 19, 2026
CISO Take

A flaw in langgraph-api (the LangGraph Server runtime that underpins many production AI agent deployments) lets a webhook target set to a relative or loopback URL route back into the server's own API through an internal transport that the authentication middleware never checks, because it treats loopback traffic as trusted. In multi-tenant deployments that authorize threads and runs per owner, this lets one user's webhook reach another user's thread routes and create a run on it or alter its state, with limited thread metadata bleeding into the attacker-visible run record — even though the same request made directly from outside would have been correctly denied. With 3,763 downstream dependents, the blast radius spans a meaningful share of production LangGraph deployments, though there's no EPSS score, no CISA KEV listing, and no public exploit or Nuclei template, so this reads as a real but currently unweaponized multi-tenant integrity issue rather than an active threat. Patch to langgraph-api 0.10.0 or later, where `webhooks.url.disable_loopback` now defaults to enabled; if you've explicitly re-enabled loopback delivery, confirm the routes it reaches enforce their own authorization, and audit run/cron records for webhook targets pointing at relative paths or loopback-resolving hostnames as a detection signal.

Sources: NVD GitHub Advisory CISA KEV ATLAS

What is the risk?

CVSS 5.9 (medium) reflects high attack complexity (AC:H) and the requirement for low privileges (PR:L) — an attacker needs an authenticated account on the same LangGraph Server instance and must understand the loopback webhook delivery mechanism, which isn't obvious from the public API surface. There's no evidence of in-the-wild exploitation, no EPSS score published, it's absent from CISA KEV, and no public PoC or scanner template exists, so near-term opportunistic exploitation is unlikely. The real risk is concentrated in multi-tenant SaaS or shared-platform deployments of LangGraph Server where tenant isolation is a compliance or contractual requirement — there, even a single successful cross-tenant run creation is a material integrity and confidentiality finding, not just a technical curiosity.

How does the attack unfold?

Setup: malicious webhook target
An authenticated low-privilege user creates a run or cron job in LangGraph Server and sets its webhook target to a relative path or loopback-resolving hostname.
AML.T0049
Delivery via unauthenticated loopback
When the webhook fires, the server routes it through its in-process loopback transport, which the authentication middleware treats as internal and does not authenticate.
Cross-tenant authorization bypass
The unauthenticated internal request reaches API routes for threads and runs, letting it create a run on or modify the state of a thread owned by a different user.
Impact: integrity and metadata exposure
The victim's thread state is altered by an unauthorized run, and limited thread metadata is incorporated into the newly created run record, exposing it to the attacker.

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 None
I High
A Low

What should I do?

1 step
  1. Upgrade to langgraph-api 0.10.0 or later, which flips webhooks.url.disable_loopback to enabled by default, blocking relative webhook targets, localhost-style hostnames, loopback address ranges, and hostnames that resolve into the loopback range. If your deployment legitimately needs loopback webhook delivery (e.g., internal same-process callbacks), only re-enable it via webhooks.url.disable_loopback: false in langgraph.json (or LANGGRAPH_WEBHOOKS) for routes you fully control, and add explicit authorization checks inside those routes since loopback-delivered requests arrive unauthenticated. For detection, audit existing run and cron records for webhook URLs that are relative paths, localhost/127.0.0.1/::1, or hostnames resolving into loopback ranges, and review run creation logs for runs on a thread whose owner doesn't match the API caller that scheduled the originating webhook.

How is it classified?

Auth Bypass Privacy Violation Framework Agent API AML.T0049

Which compliance frameworks are affected?

This CVE is relevant to:

EU AI Act
Article 15 - Accuracy, robustness and cybersecurity
ISO 42001
A.6.2.6 - AI system security
NIST AI RMF
MEASURE 2.7 - AI system security and resilience

Frequently Asked Questions

What is CVE-2026-55235?

A flaw in langgraph-api (the LangGraph Server runtime that underpins many production AI agent deployments) lets a webhook target set to a relative or loopback URL route back into the server's own API through an internal transport that the authentication middleware never checks, because it treats loopback traffic as trusted. In multi-tenant deployments that authorize threads and runs per owner, this lets one user's webhook reach another user's thread routes and create a run on it or alter its state, with limited thread metadata bleeding into the attacker-visible run record — even though the same request made directly from outside would have been correctly denied. With 3,763 downstream dependents, the blast radius spans a meaningful share of production LangGraph deployments, though there's no EPSS score, no CISA KEV listing, and no public exploit or Nuclei template, so this reads as a real but currently unweaponized multi-tenant integrity issue rather than an active threat. Patch to langgraph-api 0.10.0 or later, where `webhooks.url.disable_loopback` now defaults to enabled; if you've explicitly re-enabled loopback delivery, confirm the routes it reaches enforce their own authorization, and audit run/cron records for webhook targets pointing at relative paths or loopback-resolving hostnames as a detection signal.

Is CVE-2026-55235 actively exploited?

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

How to fix CVE-2026-55235?

Upgrade to langgraph-api 0.10.0 or later, which flips `webhooks.url.disable_loopback` to enabled by default, blocking relative webhook targets, localhost-style hostnames, loopback address ranges, and hostnames that resolve into the loopback range. If your deployment legitimately needs loopback webhook delivery (e.g., internal same-process callbacks), only re-enable it via `webhooks.url.disable_loopback: false` in `langgraph.json` (or `LANGGRAPH_WEBHOOKS`) for routes you fully control, and add explicit authorization checks inside those routes since loopback-delivered requests arrive unauthenticated. For detection, audit existing run and cron records for webhook URLs that are relative paths, `localhost`/`127.0.0.1`/`::1`, or hostnames resolving into loopback ranges, and review run creation logs for runs on a thread whose owner doesn't match the API caller that scheduled the originating webhook.

What systems are affected by CVE-2026-55235?

This vulnerability affects the following AI/ML architecture patterns: agent frameworks, multi-tenant agent orchestration, webhook/callback pipelines.

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

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

What is the AI security impact?

Affected AI Architectures

agent frameworksmulti-tenant agent orchestrationwebhook/callback pipelines

MITRE ATLAS Techniques

AML.T0049 Exploit Public-Facing Application

Compliance Controls Affected

EU AI Act: Article 15
ISO 42001: A.6.2.6
NIST AI RMF: MEASURE 2.7

What are the technical details?

Original Advisory

## Summary In affected versions of `langgraph-api` (the LangGraph Server runtime), a run or cron could be created with a relative webhook target. When the server later delivers such a webhook, it routes the request back into the same application through an in-process loopback transport that the authentication middleware treats as internal and does not authenticate. As a result, a relative webhook target could reach the server's own routes that operate on threads and runs without the authentication context that applies to ordinary external requests. In deployments that scope threads and runs by owner, this could allow a request associated with one user to reach routes operating on another user's thread, resulting in creation of a run on (or modification of the state of) a thread owned by another user, even where the corresponding direct external requests were correctly denied. Limited metadata from the targeted thread may be incorporated into the created run record. 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), - allow runs or crons to specify webhook targets, and - rely on per-user authorization to separate threads and runs between users. ## Impact - Integrity: creation of a run on, or modification of the state of, a thread owned by another user, beyond the requesting user's authorization scope. - Confidentiality: limited exposure of another user's thread metadata, incorporated into the created run record. ## Patches / mitigation The webhook URL policy now denies loopback delivery by default: the `webhooks.url.disable_loopback` policy defaults to enabled. This covers relative webhook targets routed through the in-process transport, as well as localhost-style hostnames, loopback address ranges, and hostnames that resolve into the loopback range. Deployments that legitimately deliver webhooks to a route hosted on the same process can opt back in by setting `webhooks.url.disable_loopback: false` in `langgraph.json` (or the equivalent `LANGGRAPH_WEBHOOKS` configuration); do so only when you control the routes those webhooks reach, as they are delivered without authentication. Fixed in `langgraph-api` 0.10.0. ## Operational guidance - Upgrade to a release containing this change and keep loopback webhook delivery disabled unless required. - If loopback delivery is enabled, restrict it to routes you control and apply authorization within those routes.

Exploitation Scenario

An attacker with a valid low-privilege account on a shared LangGraph Server instance creates a run or cron job and sets its webhook target to a relative path (or a loopback-resolving hostname) pointing at an internal API route that operates on threads and runs. When the server later fires that webhook, it delivers the callback through its in-process loopback transport, which the authentication middleware implicitly trusts and does not re-authenticate — unlike an equivalent external HTTP request, which the same middleware would correctly reject. Because the delivered request lacks the authorization context tying it to the attacker's own tenant scope, it can land on API routes governing a different user's thread, letting the attacker trigger creation of a new run against that thread (or mutate its state) and capture whatever thread metadata gets echoed back into the resulting run record — all without ever directly querying the victim's thread through a normal, correctly-authorized request.

Weaknesses (CWE)

CWE-287 — Improper Authentication: When an actor claims to have a given identity, the product does not prove or insufficiently proves that the claim is correct.

  • [Architecture and Design] Use an authentication framework or library such as the OWASP ESAPI Authentication feature.

Source: MITRE CWE corpus.

CVSS Vector

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

Timeline

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

Related Vulnerabilities