Skip to content
MediumVulnerability

GHSA-47pj-3jcm-6whg: LangGraph: Namespace prefix matching crosses segment boundaries in Postgres and SQLite stores

Published
Record updated
View JSON
Affected
  • langgraph-checkpoint-sqlite < 3.1.1
  • langgraph-checkpoint-postgres < 3.1.1
Fixed in
3.1.1
  • langgraph-checkpoint-sqlite 3.1.1 released July 30, 2026, 7 days before disclosure
  • langgraph-checkpoint-postgres 3.1.1 released July 30, 2026, 7 days before disclosure
Known exploitation
Not listed in the CISA Known Exploited Vulnerabilities catalog at the last check.
EPSS
0.4%

Summary

The Postgres and SQLite stores in LangGraph matched scoped namespace reads with LIKE on a dot-joined string, so a scoped search or list_namespaces could also return items from sibling namespaces that share leading characters, such as foo and foobar. Namespace labels containing _ or % were also interpreted as pattern metacharacters, letting user_1 match userX1, and the list_namespaces suffix condition could match sibling leaves like users.malice. The flaw is a confidentiality issue in read paths only where namespaces serve as a tenant or user boundary, and the source reports no evidence of exploitation in the wild.

Mitigation

Upgrade to langgraph-checkpoint-postgres 3.1.1 or langgraph-checkpoint-sqlite 3.1.1. Callers relying on multi-segment * matching in list_namespaces can express it by combining prefix and suffix conditions, for example list_namespaces(prefix=["uid"], suffix=["alice"]). The source also recommends fixed-length namespace labels such as UUIDs and validating user-supplied labels at the boundary.