CVE-2026-92707: MessagePack: Nested arrays can blow past buffer length limits

Published Oct 13, 2026
·
Updated

Impact

MessagePack-CSharp is vulnerable to denial of service through excessive memory allocation when deserializing attacker-controlled data into System.Object.

When PrimitiveObjectFormatter encounters an array, it allocates an object[] using the declared array length before enforcing the configured maximum object-graph depth. A specially crafted payload containing deeply nested arrays can therefore keep many large arrays live simultaneously before deserialization is rejected for exceeding the depth limit.

Because the array-header validation uses the total unread byte count as evidence that the declared elements may be present, nested array headers can reuse the same trailing bytes for this validation. This permits a relatively small payload to cause disproportionately large managed-heap allocations. The reported example uses an approximately 31.5 KiB payload to allocate roughly 114.7 MiB of reference storage on x64—an amplification factor of approximately 3,800—before the depth exception is raised. Repeated requests may cause severe memory pressure, excessive garbage collection, process termination, or loss of service availability.

Applications are affected when they:

- Deserialize untrusted MessagePack data as object, or otherwise use a resolver path that selects PrimitiveObjectFormatter; and - Permit an attacker to submit such data repeatedly.

ASP.NET Core SignalR is one known way to expose the vulnerability remotely: an application that enables AddMessagePackProtocol() and has a reachable hub method with an object parameter may pass attacker-controlled arguments to the vulnerable MessagePack-CSharp formatter. However, the underlying vulnerability is in MessagePack-CSharp, not SignalR, and other applications that deserialize untrusted data through the same formatter may also be affected.

MessagePack-CSharp 2.5.302 is confirmed to contain the vulnerable code. Other releases containing the same allocate-before-depth-check behavior may also be affected. Authentication requirements depend on the application exposing the deserialization endpoint: exploitation requires no privileges for a publicly reachable endpoint, while protected endpoints retain their configured authorization requirements.

Workarounds

Where possible, avoid deserializing untrusted data into System.Object, including object-typed members of otherwise strongly typed models. Use concrete, narrowly defined DTO types instead.

For ASP.NET Core SignalR applications, any of the following can prevent or reduce exposure:

- Replace object parameters in reachable hub methods with concrete types. - Disable the MessagePack hub protocol and use another protocol until a patched MessagePack-CSharp release is available. - Restrict affected hub methods to trusted and authenticated callers. - Apply rate limits and connection limits to reduce the ability to repeat malicious requests.

Reducing the maximum deserialization depth or transport message size may reduce the worst-case allocation, but should be treated only as defense in depth. It does not correct the allocate-before-depth-check behavior and is not a complete remediation.

Applications with advanced resolver configurations may use a custom formatter for object that enforces the depth limit before allocating arrays. Such a formatter should be carefully reviewed and tested against untrusted input.

Other sources

Improperly controlled sequential memory allocation in .NET allows an unauthorized attacker to deny service over a network.

— Microsoft

MessagePack for C# is a MessagePack serializer for C#. Prior to 2.5.303 and 3.1.9, deserializing attacker-controlled MessagePack data as System.Object through PrimitiveObjectFormatter can cause excessive memory allocation. The formatter allocates an object[] from each declared array length before the configured object-graph depth limit rejects the input, while nested array headers can reuse the same trailing unread bytes to satisfy per-header length validation. A comparatively small payload can therefore keep many large arrays alive at once. When an attacker can submit such data repeatedly, the allocations can cause severe managed-heap pressure, excessive garbage collection, process termination, or loss of service. Exposure requires an application to deserialize untrusted data through the affected formatter path and permit repeated attacker-controlled submissions, such as a reachable ASP.NET Core SignalR hub method with an object parameter and AddMessagePackProtocol() enabled. This issue is fixed in versions 2.5.303 and 3.1.9.

— MITRE

MessagePack-CSharp Denial of Service Vulnerability

— Microsoft

Affected Software

19 affected componentsFixes available
MessagePack MessagePack-CSharp
Microsoft MessagePack 2.5.303<2.5.303
2.5.303
nuget/messagepack>=3.0.0<3.1.9
3.1.9
nuget/messagepack<2.5.303
2.5.303
Microsoft Microsoft.AspNetCore.SignalR.Protocols.MessagePack<11.0.0-rc.2
11.0.0-rc.2
Microsoft Microsoft.AspNetCore.SignalR.Protocols.MessagePack<10.0.13
10.0.13
Microsoft Microsoft.AspNetCore.SignalR.Protocols.MessagePack<9.0.21
9.0.21
Microsoft Microsoft.AspNetCore.SignalR.Protocols.MessagePack<8.0.32
8.0.32
ubuntu/dotnet6*
ubuntu/dotnet8<8.0.132-8.0.32-0ubuntu1~22.04.1
8.0.132-8.0.32-0ubuntu1~22.04.1
ubuntu/dotnet10<10.0.113-10.0.13-0ubuntu1~24.04.1
10.0.113-10.0.13-0ubuntu1~24.04.1
ubuntu/dotnet8<8.0.132-8.0.32-0ubuntu1~24.04.1
8.0.132-8.0.32-0ubuntu1~24.04.1
ubuntu/dotnet10<10.0.113-10.0.13-0ubuntu1~26.10.1
10.0.113-10.0.13-0ubuntu1~26.10.1
ubuntu/dotnet11<11.0.100-11.0.0~rc2-0ubuntu1~26.10.1
11.0.100-11.0.0~rc2-0ubuntu1~26.10.1
ubuntu/dotnet10<10.0.113-10.0.13-0ubuntu1~26.04.1
10.0.113-10.0.13-0ubuntu1~26.04.1
Microsoft MessagePack<2.5.303
2.5.303
Microsoft MessagePack<3.1.9
3.1.9
Microsoft Visual Studio 2022>=17.14<17.14.42
17.14.42
Microsoft Visual Studio 2026>=18.10<18.10.4
18.10.4

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Upgrade

    Upgrade to a fixed release to a version that resolves this vulnerability.

    Fixed in 2.5.303
  2. Upgrade

    Upgrade nuget/MessagePack to a version that resolves this vulnerability.

    Fixed in 3.1.9
  3. Upgrade

    Upgrade nuget/MessagePack to a version that resolves this vulnerability.

    Fixed in 2.5.303
  4. Upgrade

    Upgrade to a fixed release to a version that resolves this vulnerability.

    Fixed in 11.0.0-rc.2
  5. Upgrade

    Upgrade to a fixed release to a version that resolves this vulnerability.

    Fixed in 10.0.13
  6. Upgrade

    Upgrade to a fixed release to a version that resolves this vulnerability.

    Fixed in 9.0.21
  7. Upgrade

    Upgrade to a fixed release to a version that resolves this vulnerability.

    Fixed in 8.0.32
  8. Upgrade

    Upgrade ubuntu/dotnet8 to a version that resolves this vulnerability.

    Fixed in 8.0.132-8.0.32-0ubuntu1~22.04.1
  9. Upgrade

    Upgrade ubuntu/dotnet10 to a version that resolves this vulnerability.

    Fixed in 10.0.113-10.0.13-0ubuntu1~24.04.1
  10. Upgrade

    Upgrade ubuntu/dotnet8 to a version that resolves this vulnerability.

    Fixed in 8.0.132-8.0.32-0ubuntu1~24.04.1
  11. Upgrade

    Upgrade ubuntu/dotnet10 to a version that resolves this vulnerability.

    Fixed in 10.0.113-10.0.13-0ubuntu1~26.10.1
  12. Upgrade

    Upgrade ubuntu/dotnet11 to a version that resolves this vulnerability.

    Fixed in 11.0.100-11.0.0~rc2-0ubuntu1~26.10.1
  13. Upgrade

    Upgrade ubuntu/dotnet10 to a version that resolves this vulnerability.

    Fixed in 10.0.113-10.0.13-0ubuntu1~26.04.1
  14. Upgrade

    Upgrade to a fixed release to a version that resolves this vulnerability.

    Fixed in 3.1.9
  15. Upgrade

    Upgrade to a fixed release to a version that resolves this vulnerability.

    Fixed in 17.14.42
  16. Upgrade

    Upgrade to a fixed release to a version that resolves this vulnerability.

    Fixed in 18.10.4
  17. Upgrade

    Upgrade MessagePack-CSharp to a version that resolves this vulnerability.

    Fixed in 2.5.303
  18. Upgrade

    Upgrade MessagePack-CSharp to a version that resolves this vulnerability.

    Fixed in 3.1.9
  19. Configuration

    Disable the MessagePack hub protocol and use another protocol until MessagePack-CSharp is patched.

    ASP.NET Core SignalR MessagePack hub protocol = disabled
  20. Configuration

    Replace object parameters in reachable hub methods with concrete, narrowly defined DTO types.

    ASP.NET Core SignalR reachable hub method parameter types = concrete types
  21. Configuration

    Reduce the maximum deserialization depth or transport message size as defense in depth.

    MessagePack-CSharp maximum deserialization depth and transport message size = reduced
  22. Compensating control

    Apply rate limits and connection limits to reduce repeated malicious requests.

  23. Compensating control

    Restrict affected hub methods to trusted and authenticated callers.

Event History

Oct 13, 2026
CVE Published
via OSV·12:00 AM
Data Sourced
via OSV·12:00 AM
DescriptionSeverityAffected Software
Data Sourced
via Microsoft·02:00 PM
DescriptionSeverityWeaknessAffected Software
Oct 15, 2026
Advisory Published
via GitHub·06:35 PM
Data Sourced
via GitHub·06:35 PM
DescriptionSeverityWeaknessAffected Software
CVE Published
via MITRE·06:35 PM
Data Sourced
via MITRE·06:35 PM
DescriptionSeverityWeakness
Data Sourced
via NVD·07:17 PM
DescriptionSeverityWeakness

Frequently Asked Questions

1

What systems are exposed to this issue?

Systems that use the affected MessagePack-CSharp functionality and can be reached over a network are exposed. The attack vector is network-based.

2

Does an attacker need credentials or user interaction?

No. The vulnerability is rated as requiring no privileges and no user interaction, with low attack complexity.

3

What is the expected security impact?

The reported impact is denial of service with a low availability impact. No confidentiality or integrity impact is indicated.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203