LangGraph Checkpointer Flaws Could Enable Remote Code Execution

· Original article ↗

Summary

Check Point researchers detail three LangGraph checkpointer vulnerabilities, including SQL injection flaws and unsafe MessagePack deserialization that can chain to remote code execution under specific conditions. LangChain has patched the issues.

Key points

  • Researchers identified SQL injection in LangGraph's SQLite checkpointer (CVE-2025-67644) and Redis checkpointer (CVE-2026-27022), plus unsafe MessagePack deserialization (CVE-2026-28277).
  • The SQLite SQL injection and MessagePack flaw can be chained to remote code execution by injecting a fake checkpoint that is deserialized.
  • Exploitation requires a self-hosted deployment using an affected checkpointer and an application that exposes get_state_history() with a user-controlled filter.
  • Additional SQL injection issues involving integer parameters were found in SQLite and PostgreSQL checkpointers and remediated with parameterized queries.
  • LangChain released fixes: langgraph-checkpoint-sqlite 3.0.1+, langgraph 1.0.10+, and langgraph-checkpoint-redis 1.0.2+.
  • LangSmith Deployment, which uses PostgreSQL, is not vulnerable to the described checkpointer issues.

Article Details

Attack Vectors
  • An application that exposes get_state_history() with an unsanitized, user-controlled filter can allow SQL injection through filter dictionary keys in the SQLite or Redis checkpointer.
  • In the SQLite attack chain, injected SQL adds a fake checkpoint row containing attacker-controlled serialized data, which is then deserialized.
  • A crafted MessagePack extension payload can invoke os.system() with attacker-controlled commands, resulting in remote code execution.
  • Additional SQL injection issues in SQLite and PostgreSQL checkpointers involved concatenating integer-typed LIMIT or ttl values into queries without parameterized bindings.
Defensive Notes
  • Update to langgraph-checkpoint-sqlite 3.0.1 or later, langgraph 1.0.10 or later, and langgraph-checkpoint-redis 1.0.2 or later, as applicable.
  • Do not expose get_state_history() with user-controlled filter values unless the input is appropriately sanitized.
  • Use parameterized queries rather than concatenating values into SQL statements.
  • LangChain's managed cloud service, LangSmith Deployment, uses PostgreSQL and is reported not vulnerable to the three vulnerabilities described.

CVE

People

Vendors

Products

Related Articles