CVE-2026-48511

MessagePack-CSharp: ExpandoObject formatter can perform quadratic insertion work on untrusted maps

Published Jun 22, 2026 CVSS 4.0 · 6.3 Medium EPSS < 1% KEV · Not listed
Description
MessagePack for C# is a MessagePack serializer for C#. Prior to 2.5.301 and 3.1.7, ExpandoObjectFormatter.Deserialize populates System.Dynamic.ExpandoObject by calling IDictionary<string, object>.Add for each map entry. ExpandoObject internally maintains member names in array-like structures, so inserting many distinct keys can require repeated linear scans and array copies. For large attacker-controlled maps, this produces quadratic CPU and allocation behavior. The issue is especially surprising because ExpandoObjectResolver.Options is configured with MessagePackSecurity.UntrustedData, but collision-resistant dictionary comparers cannot protect ExpandoObject insertion internals. This vulnerability is fixed in 2.5.301 and 3.1.7.

Analysis

AI-generated

Technical impact

The flaw exists in the MessagePack-CSharp library’s ExpandoObjectFormatter.Deserialize method, which constructs a System.Dynamic.ExpandoObject by adding map entries one by one. Each Add call triggers a linear scan of the internal array and may cause an array copy; when an attacker supplies a map with many distinct keys, the total work grows quadratically, consuming CPU cycles and memory. This can degrade application responsiveness or cause crashes, thereby compromising availability.

Affected Systems

Binaries from MessagePack-CSharp are affected. Versions earlier than 2.5.301 and 3.1.7 are vulnerable; upgrading to 2.5.301, 3.1.7, or later resolves the issue. No other vendors or products are listed.

Risk and Exploitability

The CVSS score of 6.3 signals moderate severity. EPSS data is not available, and the vulnerability is not listed in CISA's KEV catalog, indicating that active exploitation may be limited or unknown. The attack can be carried out simply by supplying a malicious payload containing a large number of keys to any application that deserializes data with an unpatched version of the library. Privilege escalation is not required, and the exploit path is straightforward. The lack of a KEV listing suggests early detection or low exploitation activity, but the moderate CVSS and the potential for significant resource exhaustion warrant prompt attention.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Upgrade MessagePack-CSharp to version 2.5.301, 3.1.7 or newer, which eliminates the quadratic insertion behavior.
  • If an immediate library upgrade is infeasible, validate or limit the size of maps prior to deserialization to prevent an attacker from sending an excessively large number of keys.
  • Avoid using ExpandoObjectResolver in untrusted contexts or replace it with a resolver that does not rely on ExpandoObject, thereby removing the source of the quadratic work.

Generated by OpenCVE AI on June 22, 2026 at 23:26 UTC.

Tracking

Sign in to view the affected projects.

Advisories

Source ID Title
Github GHSA Github GHSA GHSA-2x83-8g95-xh59 MessagePack-CSharp: ExpandoObject formatter can perform quadratic insertion work on untrusted maps
History
Type Values Removed Values Added
First Time appeared Messagepack
Messagepack messagepack-csharp
Vendors & Products Messagepack
Messagepack messagepack-csharp
Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'none', 'Technical Impact': 'partial'}, 'version': '2.0.3'}

Type Values Removed Values Added
Description MessagePack for C# is a MessagePack serializer for C#. Prior to 2.5.301 and 3.1.7, ExpandoObjectFormatter.Deserialize populates System.Dynamic.ExpandoObject by calling IDictionary<string, object>.Add for each map entry. ExpandoObject internally maintains member names in array-like structures, so inserting many distinct keys can require repeated linear scans and array copies. For large attacker-controlled maps, this produces quadratic CPU and allocation behavior. The issue is especially surprising because ExpandoObjectResolver.Options is configured with MessagePackSecurity.UntrustedData, but collision-resistant dictionary comparers cannot protect ExpandoObject insertion internals. This vulnerability is fixed in 2.5.301 and 3.1.7.
Title MessagePack-CSharp: ExpandoObject formatter can perform quadratic insertion work on untrusted maps
Weaknesses CWE-407
References
Metrics cvssV4_0

{'score': 6.3, 'vector': 'CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N'}

Weaknesses
  • CWE-407

    Inefficient Algorithmic Complexity

Sources

Status
PUBLISHED
Assigner
GitHub_M
Published
Updated
Jun 25, 2026, 3:08 PM
Reserved
May 21, 2026, 4:18 PM
Status
Analyzed
Published
Jun 22, 2026, 10:16 PM
Modified
Jun 25, 2026, 4:16 PM