CVE-2025-64439

N/A Unknown

📋 TL;DR

LangGraph SQLite Checkpoint versions 2.1.2 and below contain a Remote Code Execution vulnerability in the JsonPlusSerializer. When illegal Unicode surrogate values cause msgpack serialization to fail, the system falls back to insecure JSON deserialization, allowing attackers to execute arbitrary code. This affects all systems using the vulnerable LangGraph checkpointing library.

💻 Affected Systems

Products:
  • LangGraph SQLite Checkpoint
Versions: Versions 2.1.2 and below
Operating Systems: All platforms running Python
Default Config Vulnerable: ⚠️ Yes
Notes: Vulnerability exists in default JsonPlusSerializer configuration when msgpack serialization fails and falls back to JSON mode.

⚠️ Manual Verification Required

This CVE does not have specific version information in our database, so automatic vulnerability detection cannot determine if your system is affected.

Why? The CVE database entry doesn't specify which versions are vulnerable (no version ranges provided by the vendor/NVD).

🔒 Custom verification scripts are available for registered users. Sign up free to download automated test scripts.

Recommended Actions:
  1. Review the CVE details at NVD
  2. Check vendor security advisories for your specific version
  3. Test if the vulnerability is exploitable in your environment
  4. Consider updating to the latest version as a precaution

⚠️ Risk & Real-World Impact

🔴

Worst Case

Full system compromise allowing attackers to execute arbitrary commands, access sensitive data, install malware, or pivot to other systems.

🟠

Likely Case

Remote code execution leading to data theft, service disruption, or unauthorized system access.

🟢

If Mitigated

Limited impact if proper input validation and network segmentation are in place, but still significant risk.

🌐 Internet-Facing: HIGH - If vulnerable systems are exposed to untrusted input from the internet, exploitation is straightforward.
🏢 Internal Only: MEDIUM - Internal systems could still be exploited via malicious payloads from compromised internal sources.

🎯 Exploit Status

Public PoC: ✅ No
Weaponized: UNKNOWN
Unauthenticated Exploit: ⚠️ Yes
Complexity: LOW

Exploitation requires triggering the fallback to JSON mode with malicious payloads, which appears straightforward based on the vulnerability description.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 3.0.0

Vendor Advisory: https://github.com/langchain-ai/langgraph/security/advisories/GHSA-wwqv-p2pp-99h5

Restart Required: Yes

Instructions:

1. Update LangGraph checkpoint library to version 3.0.0 or higher. 2. Run: pip install 'langgraph-checkpoint>=3.0.0'. 3. Restart all services using the library. 4. Test functionality to ensure compatibility.

🔧 Temporary Workarounds

Disable JSON fallback mode

all

Configure serializer to not fall back to JSON mode when msgpack fails

Configure JsonPlusSerializer with strict_mode=True to prevent fallback

Input validation

all

Implement strict input validation to prevent illegal Unicode surrogate values

Implement custom validation before data reaches serializer

🧯 If You Can't Patch

  • Implement strict network controls to limit access to vulnerable systems
  • Deploy application-level firewalls to filter malicious payloads targeting the serializer

🔍 How to Verify

Check if Vulnerable:

Check installed version: pip show langgraph-checkpoint | grep Version

Check Version:

pip show langgraph-checkpoint | grep Version

Verify Fix Applied:

Confirm version is 3.0.0 or higher and test that illegal Unicode inputs no longer trigger JSON fallback

📡 Detection & Monitoring

Log Indicators:

  • Error logs showing msgpack serialization failures
  • Unusual process executions following serialization errors
  • Stack traces involving JsonPlusSerializer

Network Indicators:

  • Unusual outbound connections from checkpointing services
  • Payloads containing Unicode surrogate values

SIEM Query:

source="application.logs" AND ("msgpack serialization failed" OR "JsonPlusSerializer" OR "Unicode surrogate")

🔗 References

📤 Share & Export