MessagePack-CSharp: ASP.NET Core MessagePackInputFormatter defaults to TrustedData for HTTP request bodies
Summary
The parameterless MessagePackInputFormatter() constructor uses default serializer options, which resolve to MessagePackSerializerOptions.Standard with MessagePackSecurity.TrustedData. The formatter is designed for ASP.NET Core MVC request bodies, which commonly cross an HTTP trust boundary.
This insecure default can expose applications to denial-of-service attacks that MessagePackSecurity.UntrustedData is intended to mitigate, such as hash-collision attacks against dictionary-like model properties.
Impact
Applications are affected when they register new MessagePackInputFormatter() without explicitly passing serializer options configured for untrusted data.
An unauthenticated or otherwise untrusted HTTP client can send MessagePack request bodies that are deserialized using the trusted-data posture. For models containing hash-based collections, this can enable algorithmic complexity attacks using colliding keys. The default constructor makes the unsafe posture easy to use at the exact boundary where request bodies should be treated as untrusted.
Affected components
- Package:
MessagePack.AspNetCoreMvcFormatter - API:
MessagePackInputFormatter()parameterless constructor - Scenario: ASP.NET Core MVC model binding from HTTP request bodies
- Finding IDs:
MESSAGEPACKCSHARP-OPEN-009, duplicateMESSAGEPACKCSHARP-095
Patches
Fixes are prepared and will be released in coordinated patch versions.
Upgrade guidance:
- Upgrade
MessagePack.AspNetCoreMvcFormatterto the patched version for your release line. - Upgrade companion MessagePack packages in the same dependency graph to the coordinated patched versions.
The fix should default the parameterless constructor to MessagePackSerializerOptions.Standard.WithSecurity(MessagePackSecurity.UntrustedData), or require callers to pass explicit options so the trust posture is deliberate.
Workarounds
Do not use the parameterless constructor on affected versions. Register the formatter with explicit untrusted-data options, for example:
options.InputFormatters.Add(
new MessagePackInputFormatter(
MessagePackSerializerOptions.Standard.WithSecurity(MessagePackSecurity.UntrustedData)));
Also apply normal HTTP request-size limits and model validation appropriate for your service.
Resources
MESSAGEPACKCSHARP-OPEN-009: MVC input formatter defaults to trusted-data security postureMESSAGEPACKCSHARP-095: duplicate finding for the same root cause- CWE-1188: Initialization of a Resource with an Insecure Default
Affected software
Click a technology to see all vulnerabilities affecting it.
| Platform | Package | Vulnerable versions | Fixed in |
|---|---|---|---|
| .NET (NuGet) | MessagePack | < 2.5.301, >= 3.0, < 3.1.7 | 2.5.301, 3.1.7 |
References
- CVSS vector
CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:N/VI:L/VA:L/SC:N/SI:N/SA:N- Weakness (CWE)
CWE-1188- Platform
- .NET (NuGet)
- Package
MessagePack- Disclosed
- 25.06.2026
- Updated
- 11.10.2026 11:23
Sources and licenses
OSV / GitHub Advisory Database - GHSA-2f33-pr97-265q - CC BY 4.0
Vulnerability history: MessagePack
All published vulnerabilities of this package (.NET (NuGet)), newest first. Shows whether this is a one-off slip or a package that needs watching.
- Total entries
- 14
- First → latest
- 01.2020 06.2026
- Without a fix
- 0
- Exploited in attacks
- 0
Severity breakdown
- High 3
- Medium 11
Disclosures per year
- 2020: 1
- 2021: 0
- 2022: 0
- 2023: 0
- 2024: 1
- 2025: 0
- 2026: 12
-
MessagePack-CSharp: ASP.NET Core MessagePackInputFormatter defaults to TrustedData for HTTP request bodies this entry
Know which vulnerabilities affect your application
With the DockRay integration and software inventory enabled, DockRay checks reported component versions against known vulnerabilities and notifies you about confirmed matches. Coverage depends on the supported technology and available advisory data.