Repository navigation
Update dependency msgpack to v1.2.3 [SECURITY] - #263
Open
renovate[bot] wants to merge 1 commit into
Open
renovate[bot] wants to merge 1 commit into
renovate[bot] wants to merge 1 commit into
Conversation
renovate
Bot
force-pushed
the
renovate/pypi-msgpack-vulnerability
branch
from
November 3, 2026 22:07
1f706ea to
9cf4079
Compare
This branch has not been deployed
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:
==1.0.4→==1.2.3MessagePack for Python: Out-of-bounds read / crash on Unpacker reuse after a caught error
GHSA-6v7p-g79w-8964
More information
Details
Impact
If the Unpacker is used repeatedly after an error occurs, the process may crash with a SEGV.
If the Unpacker is used repeatedly to unpack untrusted input from external sources, it may be vulnerable to a DoS attack.
Patches
v1.2.1
Workarounds
Users should create a new Unpacker instead of reusing the same Unpacker after an error occurs.
Applying the above patch can prevent SEGV, but reusing the Streaming Unpacker after it has encountered an error will not yield correct data. If an error occurs during Streaming Unpacking, the Stream and Streaming Unpacker should be discarded.
Therefore, this is not just a workaround but the correct solution. The above patch only prevents crashes from incorrect usage.
Severity
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:HReferences
This data is provided by the GitHub Advisory Database (CC-BY 4.0).
MessagePack: Unbounded memory leak in msgpack C extension on strict_map_key validation failure
CVE-2026-114613 / GHSA-j586-36cw-2gc2
More information
Details
Impact
The msgpack-python C extension (
msgpack._cmsgpack) leaks a decoded map value when deserialization rejects a key withstrict_map_key=True(the default). Repeated malformed inputs can cause unbounded process memory growth and denial of service in applications that deserialize attacker-controlled MessagePack data. Bothunpackb()and the streamingUnpackerAPI are affected. The pure-Python fallback does not exhibit this leak in the reported tests.The report measured approximately 4 MiB retained per failed parse and 100 MiB after 25 failed parses on Windows with Python 3.14 and msgpack 1.2.2. These are reporter-provided results.
Additional impact: stale parser-stack references
The reference-ownership audit performed while fixing this leak found an
additional memory-safety issue in the streaming
Unpacker.After
unpack()completed a nested container, an inactive parser-stack slotcould retain a non-owning pointer to the decoded object. A subsequent
skip()could reactivate that slot. If parsing then failed, context cleanup treated the
stale pointer as an owned reference and decremented it.
This corrupts the object's reference count and can result in a use-after-free
or double
Py_DECREFwhen its actual owners later release it.Although few users use this API, but those who do may experience crashes or unexpected errors due to a use-after-free.
Details
In
msgpack/unpack.h,unpack_callback_map_item()rejects keys that are neitherstrnorbytes. At this point the map value has already been constructed. The early error return does not release the value reference.In
msgpack/unpack_template.h, the value is held in the localobjinunpack_execute(). TheCT_MAP_VALUEerror path jumps to_failedwithout decrementing that reference. Cleanup of the parser stack does not recover the value because it is not stored in the stack. The fallback checks the key before decoding the value.Affected versions
The report reproduces the issue on 1.2.2 and reports it on development commit
475c1b7. The affected-product field lists the reproduced release only; it is not a claim that earlier releases are unaffected.The earliest affected release needs confirmation: the report's summary says 1.1.x through 1.2.2, while its root-cause analysis attributes introduction to commit
cd81370(PR #673). Resolve this discrepancy before publishing a definitive affected-version range.Reproduction
Run in a disposable local process with the C extension installed:
Streaming API trigger:
Workarounds
The pure-Python fallback is reported not to leak on this path and may be used as a temporary workaround after application compatibility and performance checks. Request-size and rate limits may reduce the impact but do not eliminate cumulative leakage.
Severity
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:HReferences
This data is provided by the GitHub Advisory Database (CC-BY 4.0).
Release Notes
msgpack/msgpack-python (msgpack)
v1.2.3Compare Source
Release Date: 2026-09-29
See GHSA-j586-36cw-2gc2.
Unpacker.skip()after previously unpacking a nested object in the C extension.
ValueErrorin the C extension when switching between unpacking, skipping,header readers, or
read_bytes()while an object is incomplete. Resume with thesame method after feeding more data;
unpack()and iteration remain interchangeable.read_bytes(), and reinitializationof the same C
Unpackerwhile unpacking is in progress.Packer.pack_array_header()andPacker.pack_map_header(). #742frozendictobjects. #738v1.2.2Compare Source
Release Date: 2026-08-27
read_sizedocumentation. #700timestamp=3. #701Unpacker.feed()while unpacking. #704Timestamp.from_datetime()precision for far-future datetimes. #710unpackb()ExtraDatapath for non-contiguous input. #722Packer'sbuf_size. #726RecursionErrortoStackErrorin the fallbackUnpacker.skip(). #727OverflowErrorwhenuse_single_float=Truecannot represent a value. #728v1.2.1Compare Source
Release Date: 2026-06-19
Fix a segfault when calling
Unpacker.unpack()orUnpacker.skip()after an unpacking failure.But note that reusing the same
Unpackerinstance after an unpacking failure is not supported.Please create a new
Unpackerinstance instead. GHSA-6v7p-g79w-8964v1.2.0Compare Source
Release Date: 2026-06-11
strict_map_keyoption didn't work forobject_pairs_hook. #673Packer.pack_ext_type()ignoredautoresetoption. #663Timestamp.from_datetime()returning wrong value for pre-epoch datetimes. #662unpackb()andUnpacker.unpack()for non-contiguous input. #677Unpacker.__init__()several times. #687v1.1.2Compare Source
Release Date: 2025-10-08
This release does not change source code. It updates only building
wheels:
v1.1.1Compare Source
Release Date: 2025-06-13
v1.1.0Compare Source
Release Date: 2024-09-10
PyLong_*instead ofPyInt_*for compatibility with futureCython. (#620)
v1.0.8Compare Source
Release Date: 2024-03-01
Unpackerobject on Python 3.12.v1.0.7Compare Source
Release Date: 2023-09-28
setup.pydoesn't skip build error of extension module. (#568)v1.0.6Compare Source
Release Date: 2023-09-21
v1.0.5Compare Source
Release Date: 2023-03-08
__BYTE_ORDER__instead of__BYTE_ORDERfor portability. (#513,#514)
Configuration
📅 Schedule: (UTC)
🚦 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 was generated by Mend Renovate. View the repository job log.