{"answers":{"affected":"4 open source packages ship an affected version, including langgraph-checkpoint-postgres and langgraph-checkpoint-sqlite.","exploited":"There is no known exploitation of CVE-2026-115883 in the wild and no public exploit code.","fix":"Upgrade langgraph-checkpoint-postgres to 3.1.3 or later.","what":"CVE-2026-115883 is a medium-severity vulnerability in langchain-ai langgraph, published on 23 Oct 2026."},"fix_prompt":"Check this codebase for CVE-2026-115883 and fix it if it is affected.\n\nWhat it is: CVE-2026-115883 is a medium-severity vulnerability in langchain-ai langgraph, published on 23 Oct 2026. \nExploitation: There is no known exploitation of CVE-2026-115883 in the wild and no public exploit code.\n\nAffected packages and fixed versions:\n- langgraph-checkpoint-postgres (PyPI): affected all versions; fixed in 3.1.3\n- langgraph-checkpoint-postgres (PyPI): affected all versions; fixed in 3.1.3\n- langgraph-checkpoint-sqlite (PyPI): affected all versions; fixed in 3.1.2\n- langgraph-checkpoint-sqlite (PyPI): affected all versions; fixed in 3.1.2\n\nTask:\n1. Search the dependency manifests and lockfiles (for example package.json, package-lock.json, requirements.txt, poetry.lock, uv.lock, pom.xml, build.gradle, go.mod, Cargo.lock, Gemfile.lock) and any Dockerfiles for the affected packages, including transitive dependencies.\n2. If an affected version is in use, upgrade it to the fixed version for its release line with the project's package manager, so the lockfile is regenerated. Prefer the smallest upgrade that fixes it.\n3. If there is no fix, or the upgrade would break the build, do not guess: explain the risk and the safest workaround instead.\n4. Run the tests and summarise what changed and why.\n5. If nothing in the project is affected, say so and change nothing.\n\nReference: https://insights.sbomify.com/CVE-2026-115883/ (Markdown: https://insights.sbomify.com/CVE-2026-115883/index.md)","id":"CVE-2026-115883","markdown":"https://insights.sbomify.com/CVE-2026-115883/index.md","name":"CVE-2026-115883","record":{"aliases":["GHSA-6hmw-9432-67qq"],"analysis":null,"analysis_generated_by":null,"assigner":"GitHub_M","cpe":[],"cvss":{"score":6,"severity":"medium","source":"cna","vector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:N/VC:H/VI:L/VA:N/SC:N/SI:N/SA:N","version":"4.0"},"cwes":[{"id":"CWE-863","name":"Incorrect Authorization"},{"id":"CWE-20","name":"Improper Input Validation"}],"description":"LangGraph checkpoint savers provide Postgres- and SQLite-backed state persistence for LangGraph workflows and agents. Prior to langgraph-checkpoint-postgres 3.1.3 and langgraph-checkpoint-sqlite 3.1.2, PostgresStore, AsyncPostgresStore, SqliteStore, and AsyncSqliteStore flatten namespace labels with \".\".join(namespace), while BaseStore validates labels only for put and aput. Unvalidated dotted labels passed through get, search, delete, list_namespaces, their asynchronous equivalents, or direct batch and abatch operations can resolve to another tenant's stored namespace, allowing cross-namespace reads, overwrites, or deletion. InMemoryStore is not affected because it compares namespace tuples. This issue is fixed in langgraph-checkpoint-postgres 3.1.3 and langgraph-checkpoint-sqlite 3.1.2.","ecosystems":["PyPI"],"exploits":{"exploitdb":0,"first_seen":null,"github_poc":0,"max_poc_stars":null,"metasploit":0,"nuclei":0,"refs":[],"tier":"none_known"},"has_fix":true,"headline":"LangGraph: Namespace labels containing `.` reach other namespaces in Postgres and SQLite stores","id":"CVE-2026-115883","indexable":true,"kev":null,"kind":"cve","links":{"ecosystem":"PyPI","product":null,"products":[],"type":null,"year":"2026"},"n_packages":4,"n_references":3,"next":{"headline":"LangGraph CLI prints the registry push token in `langgraph deploy --verbose` output","id":"CVE-2026-115885"},"packages":[{"ecosystem":"PyPI","fixed":["3.1.3"],"introduced":["0"],"last_affected":[],"package":"langgraph-checkpoint-postgres","purl":null,"source":"GHSA-6hmw-9432-67qq"},{"ecosystem":"PyPI","fixed":["3.1.3"],"introduced":["0"],"last_affected":[],"package":"langgraph-checkpoint-postgres","purl":"pkg:pypi/langgraph-checkpoint-postgres","source":"GHSA-6hmw-9432-67qq"},{"ecosystem":"PyPI","fixed":["3.1.2"],"introduced":["0"],"last_affected":[],"package":"langgraph-checkpoint-sqlite","purl":null,"source":"GHSA-6hmw-9432-67qq"},{"ecosystem":"PyPI","fixed":["3.1.2"],"introduced":["0"],"last_affected":[],"package":"langgraph-checkpoint-sqlite","purl":"pkg:pypi/langgraph-checkpoint-sqlite","source":"GHSA-6hmw-9432-67qq"}],"prev":{"headline":"Twisted: HTTP Request Smuggling in twisted.web via a Bare CR or LF in a Header Value","id":"CVE-2026-115877"},"products":["langgraph","langgraph-checkpoint-postgres","langgraph-checkpoint-sqlite"],"published":"2026-10-23","related":[],"sources":[{"class":"attribution","licence":"CVE Terms of Use (MITRE)","name":"CVE List","prefix":"CVE"},{"class":"attribution","licence":"CC BY 4.0","name":"GitHub Advisory Database","prefix":"GHSA"},{"class":"attribution","licence":"CWE Terms of Use","name":"CWE (MITRE)"},{"class":"attribution","licence":"FIRST CVSS licence","name":"CVSS (FIRST)"}],"ssvc":{"automatable":"no","exploitation":"none","technical_impact":"partial"},"state":"PUBLISHED","updated":"2026-10-26","vendors":["langchain-ai"]},"summary":null,"url":"https://insights.sbomify.com/CVE-2026-115883/"}