fix(deps): update dependency langgraph-checkpoint to v4 [security]#282
Open
fix(deps): update dependency langgraph-checkpoint to v4 [security]#282
Conversation
Member
Author
|
c12ec59 to
7df4ac4
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
>=3.0.0,<4.0.0->>=4.0.0,<4.1.0GitHub Vulnerability Alerts
CVE-2026-27794
Context
A Remote Code Execution vulnerability exists in LangGraph's caching layer when applications enable cache backends that inherit from
BaseCacheand opt nodes into caching viaCachePolicy. Prior tolanggraph-checkpoint4.0.0,BaseCachedefaults toJsonPlusSerializer(pickle_fallback=True). When msgpack serialization fails, cached values can be deserialized viapickle.loads(...).Who is affected?
Caching is not enabled by default. Applications are affected only when:
cache=...toStateGraph.compile(...)or otherwise configuring aBaseCacheimplementation)CachePolicyExample (enabling a cache backend and opting a node into caching):
With
pickle_fallback=True, when msgpack serialization fails,JsonPlusSerializercan fall back to storing values as a("pickle", <bytes>)tuple and later deserialize them viapickle.loads(...). If an attacker can place a malicious pickle payload into the cache backend such that the LangGraph process reads and deserializes it, this can lead to arbitrary code execution.Exploitation requires attacker write access to the cache backend. The serializer is not exposed as a network-facing API.
This is fixed in
langgraph-checkpoint>=4.0.0by disabling pickle fallback by default (pickle_fallback=False).Impact
Arbitrary code execution in the LangGraph process when attacker-controlled cache entries are deserialized.
Root Cause
BaseCachedefault serializer configuration inherited by cache implementations (InMemoryCache,RedisCache,SqliteCache):libs/checkpoint/langgraph/cache/base/__init__.py(pre-fix default:JsonPlusSerializer(pickle_fallback=True))JsonPlusSerializerdeserialization sink:libs/checkpoint/langgraph/checkpoint/serde/jsonplus.pyloads_typed(...)callspickle.loads(data_)whentype_ == "pickle"and pickle fallback is enabledAttack preconditions
An attacker must be able to write attacker-controlled bytes into the cache backend such that the LangGraph process later reads and deserializes them.
This typically requires write access to a networked cache (for example a network-accessible Redis instance with weak/no auth or shared cache infrastructure reachable by other tenants/services) or write access to local cache storage (for example a writable SQLite cache file via permissive file permissions or a shared writable volume).
Because exploitation requires write access to the cache storage layer, this is a post-compromise / post-access escalation vector.
Remediation
langgraph-checkpoint>=4.0.0.Resources
Configuration
📅 Schedule: Branch creation - "" in timezone UTC, Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR has been generated by Renovate Bot.