Update dependency deepdiff to v8.6.2 [SECURITY]#3399
Open
renovate[bot] wants to merge 1 commit intomainfrom
Open
Update dependency deepdiff to v8.6.2 [SECURITY]#3399renovate[bot] wants to merge 1 commit intomainfrom
renovate[bot] wants to merge 1 commit intomainfrom
Conversation
OpenAPI ChangesShow/hide ## Changes for v0.yaml:Unexpected changes? Ensure your branch is up-to-date with |
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:
8.6.1→8.6.2GitHub Vulnerability Alerts
CVE-2026-33155
Summary
The pickle unpickler
_RestrictedUnpicklervalidates which classes can be loaded but does not limit their constructor arguments. A few of the types inSAFE_TO_IMPORThave constructors that allocate memory proportional to their input (builtins.bytes,builtins.list,builtins.range). A 40-byte pickle payload can force 10+ GB of memory, which crashes applications that load delta objects or callpickle_loadwith untrusted data.Details
CVE-2025-58367 hardened the delta class against pollution and remote code execution by converting
SAFE_TO_IMPORTto afrozensetand blocking traversal._RestrictedUnpickler.find_classonly gates which classes can be loaded. It doesn't interceptREDUCEopcodes or validate what is passed to constructors.It can be exploited in 2 ways.
1 - During
pickle_loadA pickle that calls
bytes(N)using opcodes permitted by the allowlist. The allocation happens during deserialization and before the delta processes anything. The restricted unpickler does not overrideload_reduceso any allowed class can be called.2 - During delta application
A valid diff dict that first sets a value to a large int via
values_changed, then converts it to bytes viatype_changes. It works because_do_values_changed()runs before_do_type_changes()inDelta.add()indelta.pyline 183. Step 1 modifies the target in place before step 2 reads the modified value and callsnew_type(current_old_value)atdelta.pyline 576 with no size guard.PoC
The script uses Python's
resourcemodule to cap memory to 1 GB so you can reproduce safely without hitting the OOM killer. It loads deepdiff first, applies the limit, then runs the payload. Change10**8to10**10for the full 9.3 GB allocation.Output:
Impact
Denial of service. Any application that deserializes delta objects or calls
pickle_loadwith untrusted inputs can be crashed with a small payload. The restricted unpickler is meant to make this safe. It prevents remote code execution but doesn't prevent resource exhaustion.The amplification is large. 800,000x for delta and 2,000,000x for raw pickle.
Impacted users are anyone who accepts serialized delta objects from untrusted sources — network APIs, file uploads, message queues, etc.
Configuration
📅 Schedule: Branch creation - "" in timezone US/Eastern, Automerge - At any time (no schedule defined).
🚦 Automerge: Enabled.
♻ 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 was generated by Mend Renovate. View the repository job log.