Fetching from the wire…
Public story · 2026-08-23 · high
A filter injection bug let one tenant's caller read another thread's checkpoints, and the fix landed in both the Python and JS packages.
Why now: Both the GitHub and npm advisories now list fixed versions, which is the signal to check pinned checkpointer versions against them.
LangGraph's MongoDB checkpointer shipped a bug that let a caller read another tenant's agent state. GHSA-533j-2v4q-mw5h, tracked as CVE-2026-55253 with a CVSS of 7.7, covers MongoDBSaver.list() and MongoDBStore.search() accepting a filter without rejecting $-prefixed MongoDB operator keys. Send an operator instead of a plain value and the query steps outside its thread scope.
That matters if you're running LangGraph with MongoDB as the backing store for more than one tenant or user. It gives a caller a way to read state that isn't theirs, not a crash or a denial of service. The fix landed in langgraph-checkpoint-mongodb 0.3.0 and langgraph-store-mongodb 0.4.0.
A parallel npm advisory, CVE-2026-48121, covers the same bug class in the JS packages. Unenforced identifier types let $gt and $ne bypass thread scoping there too, fixed in 1.3.1. Same shape of bug, two ecosystems, two separate patch numbers to track if you're running both.
The advisory doesn't say how long the bug was live or whether anyone found evidence of it being exploited before the fix. It also doesn't say whether other LangGraph checkpointer backends, like Postgres or Redis, share the same filter-handling pattern.
I've built on LangGraph. The checkpointer is exactly the kind of code path nobody reviews for injection, because it feels like internal plumbing, not a query boundary. The moment agent state serves more than one tenant, every filter parameter it accepts is untrusted input and needs to be treated that way. Check your version now. The list() and search() calls built from caller-supplied filters are the ones to audit first.
Each link below shares sources, entities, or timing with this story.
LangChain released LangGraph / Shared entities / Shared topic / Earlier coverage
Linked by a graph relationship (LangChain released LangGraph); both cover CVE, CVSS; overlapping topics (agent, class).
Check Point criticizes LangGraph / Shared entity: LangGraph / Shared topic / Earlier coverage
Linked by a graph relationship (Check Point criticizes LangGraph); both cover LangGraph; overlapping topics (agent, class).
LangChain released LangGraph / Shared entity: LangGraph / Same source domain / Earlier coverage
Linked by a graph relationship (LangChain released LangGraph); both cover LangGraph; reported by the same outlet (github.com).
LangChain released LangGraph / Shared entity: Agent / Shared topic / Earlier coverage
Linked by a graph relationship (LangChain released LangGraph); both cover Agent; overlapping topics (agent, control).
LangGraph benchmarked against CrewAI / Same source domain / Shared topic
Linked by a graph relationship (LangGraph benchmarked against CrewAI); reported by the same outlet (github.com); overlapping topics (agent, bypass, injection).
LangGraph uses OpenAI / Shared entities / Earlier coverage
Linked by a graph relationship (LangGraph uses OpenAI); both cover Agent, CVE, CVSS, Fixed; earlier Agent coverage from 2026-08-09.
LangChain released LangGraph / Shared entity: Agent / Earlier coverage
Linked by a graph relationship (LangChain released LangGraph); both cover Agent; earlier Agent coverage from 2026-08-17.
LangChain released LangGraph / Shared entity: LangGraph / Earlier coverage
Linked by a graph relationship (LangChain released LangGraph); both cover LangGraph; earlier LangGraph coverage from 2026-07-26.