Skip to content
Heist/ feed
Back to feed
Medium

@langchain/langgraph-checkpoint-mongodb: NoSQL parameter injection in MongoDBSaver allows cross-tenant state access

Type: advisorySources: OSV

@langchain/langgraph-checkpoint-mongodb provides a LangGraph.js CheckpointSaver implementation that uses MongoDB for storage. Versions 1.3.0 and below are vulnerable to NoSQL injection: checkpoint identifiers (thread_id, checkpoint_ns, checkpoint_id) from config.configurable are passed into MongoDB find() queries in MongoDBSaver.getTuple() without type enforcement. If an attacker supplies an object payload (such as MongoDB operators $gt or $ne) instead of a string, it can be interpreted as a query operator, bypassing thread scoping and leaking checkpoints, including pending writes, across tenants. Applications are at risk if they forward untrusted input into config.configurable without coercing it to strings or validating it against a schema, particularly in multi-tenant or user-isolated setups. Apps that only use server-issued, string-typed identifiers with schema validation rejecting non-string fields are not affected. This issue has been fixed in version 1.3.1.

Products
Not specified
Affected versions
Not specified
Fixed versions
Not specified
CVEs
CVE-2026-48121
Confirmed fixed CVEs
Not specified
Updated in this feed
7 Nov 2026, 03:05 UTC · Revision 1

Source evidence

@langchain/langgraph-checkpoint-mongodb: NoSQL parameter injection in MongoDBSaver allows cross-tenant state access

core-osv · Original source

Published 4 Aug 2026, 16:49 UTC

@langchain/langgraph-checkpoint-mongodb provides a LangGraph.js CheckpointSaver implementation that uses MongoDB for storage. Versions 1.3.0 and below are vulnerable to NoSQL injection: checkpoint identifiers (thread_id, checkpoint_ns, checkpoint_id) from config.configurable are passed into MongoDB find() queries in MongoDBSaver.getTuple() without type enforcement. If an attacker supplies an object payload (such as MongoDB operators $gt or $ne) instead of a string, it can be interpreted as a query operator, bypassing thread scoping and leaking checkpoints, including pending writes, across tenants. Applications are at risk if they forward untrusted input into config.configurable without coercing it to strings or validating it against a schema, particularly in multi-tenant or user-isolated setups. Apps that only use server-issued, string-typed identifiers with schema validation rejecting non-string fields are not affected. This issue has been fixed in version 1.3.1.

osv:CVE-2026-48121
Complete source record
{
  "id": "14623757ad124d1026d58bbb662ecbac95106740c50bf3dc00290225dde529f0",
  "url": "https://osv.dev/vulnerability/CVE-2026-48121",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "@langchain/langgraph-checkpoint-mongodb: NoSQL parameter injection in MongoDBSaver allows cross-tenant state access",
    "summary": "@langchain/langgraph-checkpoint-mongodb provides a LangGraph.js CheckpointSaver implementation that uses MongoDB for storage. Versions 1.3.0 and below are vulnerable to NoSQL injection: checkpoint identifiers (thread_id, checkpoint_ns, checkpoint_id) from config.configurable are passed into MongoDB find() queries in MongoDBSaver.getTuple() without type enforcement. If an attacker supplies an object payload (such as MongoDB operators $gt or $ne) instead of a string, it can be interpreted as a query operator, bypassing thread scoping and leaking checkpoints, including pending writes, across tenants. Applications are at risk if they forward untrusted input into config.configurable without coercing it to strings or validating it against a schema, particularly in multi-tenant or user-isolated setups. Apps that only use server-issued, string-typed identifiers with schema validation rejecting non-string fields are not affected. This issue has been fixed in version 1.3.1.",
    "evidence": "osv:CVE-2026-48121",
    "products": [],
    "severity": "medium",
    "structured": {
      "id": "CVE-2026-48121",
      "aliases": [
        "CVE-2026-48121",
        "GHSA-98xf-r82g-9mhx"
      ],
      "metrics": [
        {
          "type": "CVSS_V3",
          "score": "CVSS:3.1/AV:A/AC:L/PR:L/UI:R/S:U/C:H/I:H/A:N"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://github.com/langchain-ai/langgraphjs",
              "type": "GIT",
              "events": [
                {
                  "introduced": "0"
                },
                {
                  "fixed": "1b5ce0fca0808c194eff45d1201aec728775a2c7"
                },
                {
                  "fixed": "284226c7ca164b3c81fe2d9e32b10f1fc6b99a3c"
                }
              ],
              "database_specific": {
                "extracted_events": [
                  {
                    "range": [
                      {
                        "introduced": "0"
                      },
                      {
                        "fixed": "1.3.1"
                      }
                    ],
                    "source": "AFFECTED_FIELD",
                    "strategy": "StringRangeExpression"
                  },
                  {
                    "range": [
                      {
                        "fixed": "284226c7ca164b3c81fe2d9e32b10f1fc6b99a3c"
                      }
                    ],
                    "source": "REFERENCES_COMMIT"
                  }
                ]
              }
            }
          ],
          "versions": [
            "@langchain/vue@0.4.7",
            "@langchain/svelte@0.4.7",
            "@langchain/react@0.3.5",
            "@langchain/angular@0.4.7",
            "@langchain/vue@1.0.2",
            "@langchain/svelte@1.0.2",
            "@langchain/react@1.0.2",
            "@langchain/langgraph-sdk@1.9.2",
            "@langchain/angular@1.0.2",
            "@langchain/vue@1.0.1",
            "@langchain/angular@1.0.1",
            "@langchain/vue@1.0.0",
            "@langchain/react@1.0.0",
            "@langchain/langgraph-cli@1.2.0",
            "@langchain/langgraph-api@1.2.0",
            "@langchain/angular@1.0.0",
            "@langchain/vue@0.4.6",
            "@langchain/svelte@0.4.6",
            "@langchain/react@0.3.4",
            "@langchain/langgraph-sdk@1.8.10",
            "@langchain/angular@0.4.6",
            "@langchain/langgraph-checkpoint-mongodb@1.3.0",
            "@langchain/langgraph@1.2.9",
            "@langchain/langgraph-sdk@1.8.9",
            "@langchain/langgraph@1.2.8",
            "@langchain/vue@0.4.5",
            "@langchain/svelte@0.4.5",
            "@langchain/react@0.3.3",
            "@langchain/langgraph-sdk@1.8.8",
            "@langchain/angular@0.4.5",
            "@langchain/vue@0.4.4",
            "@langchain/svelte@0.4.4",
            "@langchain/angular@0.4.4",
            "@langchain/vue@0.4.3",
            "@langchain/svelte@0.4.3",
            "@langchain/angular@0.4.3",
            "@langchain/vue@0.4.2",
            "@langchain/svelte@0.4.2",
            "@langchain/react@0.3.2",
            "@langchain/langgraph-sdk@1.8.7",
            "@langchain/angular@0.4.2",
            "@langchain/vue@0.4.1",
            "@langchain/svelte@0.4.1",
            "@langchain/react@0.3.1",
            "@langchain/langgraph-sdk@1.8.6",
            "@langchain/angular@0.4.1",
            "@langchain/vue@0.4.0",
            "@langchain/svelte@0.4.0",
            "@langchain/react@0.3.0",
            "@langchain/langgraph@1.2.7",
            "@langchain/angular@0.4.0",
            "@langchain/vue@0.3.4",
            "@langchain/svelte@0.3.2",
            "@langchain/react@0.2.4",
            "@langchain/langgraph-sdk@1.8.5",
            "@langchain/angular@0.3.3",
            "@langchain/vue@0.3.3",
            "@langchain/langgraph-sdk@1.8.4",
            "@langchain/vue@0.3.2",
            "@langchain/langgraph-sdk@1.8.3",
            "@langchain/angular@0.3.2",
            "@langchain/langgraph-ui@1.1.17",
            "@langchain/langgraph-cli@1.1.17",
            "@langchain/langgraph-api@1.1.17",
            "@langchain/react@0.2.3",
            "@langchain/langgraph-sdk@1.8.2",
            "@langchain/vue@0.3.1",
            "@langchain/svelte@0.3.1",
            "@langchain/react@0.2.2",
            "@langchain/langgraph@1.2.6",
            "@langchain/langgraph-sdk@1.8.1",
            "@langchain/angular@0.3.1",
            "@langchain/vue@0.3.0",
            "@langchain/svelte@0.3.0",
            "@langchain/react@0.2.1",
            "@langchain/langgraph@1.2.5",
            "@langchain/langgraph-sdk@1.8.0",
            "@langchain/angular@0.3.0",
            "@langchain/vue@0.2.0",
            "@langchain/svelte@0.2.0",
            "@langchain/react@0.2.0",
            "@langchain/langgraph@1.2.4",
            "@langchain/langgraph-sdk@1.7.5",
            "@langchain/angular@0.2.0",
            "@langchain/langgraph-sdk@1.7.4",
            "@langchain/langgraph@1.2.3",
            "@langchain/langgraph-ui@1.1.16",
            "@langchain/langgraph-sdk@1.7.3",
            "@langchain/langgraph-cli@1.1.16",
            "@langchain/langgraph-checkpoint@1.0.1",
            "@langchain/langgraph-checkpoint-redis@1.0.4",
            "@langchain/langgraph-api@1.1.16",
            "@langchain/langgraph-sdk@1.7.2",
            "@langchain/vue@0.1.3",
            "@langchain/svelte@0.1.3",
            "@langchain/react@0.1.3",
            "@langchain/langgraph-sdk@1.7.1",
            "@langchain/angular@0.1.3",
            "@langchain/vue@0.1.2",
            "@langchain/svelte@0.1.2",
            "@langchain/react@0.1.2",
            "@langchain/angular@0.1.2",
            "@langchain/langgraph@1.2.1",
            "@langchain/langgraph-ui@1.1.15",
            "@langchain/langgraph-cli@1.1.15",
            "@langchain/langgraph-checkpoint-redis@1.0.3",
            "@langchain/langgraph-api@1.1.15",
            "@langchain/langgraph@1.2.0",
            "@langchain/langgraph-ui@1.1.14",
            "@langchain/langgraph-sdk@1.6.5",
            "@langchain/langgraph-cli@1.1.14",
            "@langchain/langgraph-checkpoint-mongodb@1.2.0",
            "@langchain/langgraph-api@1.1.14",
            "@langchain/langgraph-sdk@1.6.4",
            "@langchain/langgraph-checkpoint-postgres@1.0.1",
            "@langchain/langgraph-ui@1.1.13",
            "@langchain/langgraph-sdk@1.6.2",
            "@langchain/langgraph-cli@1.1.13",
            "@langchain/langgraph-api@1.1.13",
            "@langchain/langgraph-sdk@1.6.3",
            "@langchain/langgraph@1.1.5",
            "@langchain/langgraph-ui@2.0.0",
            "@langchain/langgraph-sdk@2.0.0",
            "@langchain/langgraph-cli@2.0.0",
            "@langchain/langgraph-api@2.0.0",
            "@langchain/langgraph-sdk@1.6.1",
            "@langchain/langgraph@1.1.4",
            "@langchain/langgraph-sdk@1.6.0",
            "@langchain/langgraph-ui@1.1.12",
            "@langchain/langgraph-sdk@1.5.6",
            "@langchain/langgraph-cli@1.1.12",
            "@langchain/langgraph-checkpoint-redis@1.0.2",
            "@langchain/langgraph-checkpoint-mongodb@1.1.7",
            "@langchain/langgraph-api@1.1.12",
            "@langchain/langgraph@1.1.3",
            "@langchain/langgraph-checkpoint-sqlite@1.0.1",
            "@langchain/langgraph@1.1.2",
            "@langchain/langgraph@1.1.1",
            "@langchain/langgraph-sdk@1.5.5",
            "@langchain/langgraph@1.1.0",
            "@langchain/langgraph-sdk@1.5.4",
            "@langchain/langgraph-sdk@1.5.3",
            "@langchain/langgraph-checkpoint-validation@1.0.9",
            "@langchain/langgraph-sdk@1.5.2",
            "@langchain/langgraph-sdk@1.5.1",
            "@langchain/langgraph@1.0.15",
            "@langchain/langgraph-ui@1.1.11",
            "@langchain/langgraph-sdk@1.5.0",
            "@langchain/langgraph-cli@1.1.11",
            "@langchain/langgraph-api@1.1.11",
            "create-langgraph@1.1.5",
            "@langchain/langgraph@1.0.14",
            "@langchain/langgraph-ui@1.1.10",
            "@langchain/langgraph-sdk@1.4.6",
            "@langchain/langgraph-cli@1.1.10",
            "@langchain/langgraph-checkpoint-validation@1.0.8",
            "@langchain/langgraph-checkpoint-mongodb@1.1.6",
            "@langchain/langgraph-api@1.1.10",
            "create-langgraph@1.1.4",
            "@langchain/langgraph@1.0.13",
            "@langchain/langgraph-ui@1.1.9",
            "@langchain/langgraph-sdk@1.4.5",
            "@langchain/langgraph-cli@1.1.9",
            "@langchain/langgraph-checkpoint-validation@1.0.7",
            "@langchain/langgraph-checkpoint-mongodb@1.1.5",
            "@langchain/langgraph-api@1.1.9",
            "create-langgraph@1.1.3",
            "@langchain/langgraph@1.0.12",
            "@langchain/langgraph-ui@1.1.8",
            "@langchain/langgraph-sdk@1.4.4",
            "@langchain/langgraph-cli@1.1.8",
            "@langchain/langgraph-checkpoint-validation@1.0.6",
            "@langchain/langgraph-checkpoint-mongodb@1.1.4",
            "@langchain/langgraph-api@1.1.8",
            "@langchain/langgraph-ui@0.0.43",
            "@langchain/langgraph-cli@0.0.43",
            "@langchain/langgraph-api@0.0.43",
            "@langchain/langgraph-ui@0.0.42",
            "@langchain/langgraph-cli@0.0.42",
            "@langchain/langgraph-api@0.0.42",
            "@langchain/langgraph-sdk@0.0.90",
            "0.3.6",
            "0.3.1",
            "0.3.0",
            "checkpoint==0.0.18",
            "swarm==0.0.4",
            "supervisor==0.0.13",
            "cua==0.0.6",
            "0.2.74",
            "0.2.73",
            "0.2.68",
            "0.2.65",
            "0.2.64",
            "supervisor==0.0.11",
            "supervisor==0.0.10",
            "0.2.63",
            "swarm==0.0.3",
            "supervisor==0.0.9",
            "0.2.53",
            "0.2.52",
            "swarm==0.0.1",
            "supervisor==0.0.6",
            "supervisor==0.0.5",
            "0.2.44",
            "0.2.37",
            "0.2.31",
            "0.2.30",
            "0.2.26",
            "0.2.24",
            "0.2.22",
            "0.2.21",
            "0.2.18",
            "0.2.17",
            "0.2.15",
            "0.2.12",
            "0.2.11",
            "0.2.10",
            "0.2.9",
            "0.2.8",
            "0.2.7",
            "0.2.6",
            "0.2.4",
            "0.2.3",
            "0.1.5",
            "0.1.1",
            "0.1.0",
            "0.0.29",
            "0.0.28",
            "0.0.22",
            "0.0.8",
            "0.0.7",
            "0.0.6",
            "0.0.5",
            "0.0.4"
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-48121.json"
          }
        }
      ],
      "modified": "2026-10-28T02:30:49.144000855Z",
      "provider": "osv",
      "references": [
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/48xxx/CVE-2026-48121.json",
        "https://github.com/langchain-ai/langgraphjs/security/advisories/GHSA-98xf-r82g-9mhx",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-48121",
        "https://github.com/langchain-ai/langgraphjs/issues/2351",
        "https://github.com/langchain-ai/langgraphjs/commit/284226c7ca164b3c81fe2d9e32b10f1fc6b99a3c"
      ],
      "provider_metadata": {
        "cwe_ids": [
          "CWE-943"
        ],
        "cna_assigner": "GitHub_M",
        "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/48xxx/CVE-2026-48121.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-48121",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 517610,
  "published_at": "2026-08-04T16:49:57.68+00:00"
}