The vulnerability exists in the MessagePack.AspNetCoreMvcFormatter package, where the MessagePackInputFormatter's parameterless constructor defaults to an insecure TrustedData security setting. This is dangerous because this formatter is intended for use with ASP.NET Core MVC, where it processes HTTP request bodies that are inherently untrusted.
The analysis identified two key functions. The primary vulnerable function is the MessagePackInputFormatter() parameterless constructor itself. This constructor sets up the insecure default configuration. When a developer uses new MessagePackInputFormatter(), they are unknowingly opting into a vulnerable configuration.
The second function, ReadRequestBodyAsync, is where the vulnerability manifests. This function takes the insecurely configured options and uses them to deserialize the request body. An attacker can craft a malicious MessagePack payload that, when deserialized by this function, can cause a denial-of-service, for example, through a hash collision attack on dictionary-like structures.
The fix, as described in the advisory, is to change the default of the parameterless constructor to use MessagePackSecurity.UntrustedData. My analysis confirms that any runtime profile of an exploitation attempt would show these two functions in the call stack, as one sets up the vulnerability and the other executes the dangerous operation.