Researcher Demonstrates Bypasses for Hardened .NET Deserialization

· 49:38 · Watch on YouTube ↗

Summary

Piotr Bazydło demonstrates deserialization and serialization gadget chains that bypass protections in SolarWinds, Exchange and Device Master, enabling code execution or information disclosure in test scenarios.

Key points

  • The researcher bypassed a SolarWinds deserialization blocklist using a misidentified class and custom gadgets in the product codebase.
  • An Exchange allowlisted generic class could invoke an unchecked inner type; a subsequent blocklist could also be bypassed with an Exchange class that starts a process.
  • The Exchange vulnerabilities demonstrated could be exploited by a user with a mailbox, according to the researcher.
  • In Device Master, a serialization gadget triggered binary deserialization and pre-authentication code execution after an earlier architecture change.
  • SolarWinds serialization gadgets exposed file contents and database credentials; one demonstration used a recovered secret to execute commands.
  • The researcher combined arbitrary getter calls with serialization gadgets and described further bypasses of class blocklists.
  • Microsoft told the researcher that remote DLL loading behavior in newer .NET versions was expected and that its documentation would be changed.

Article Details

Topics
  • [00:53] Hardened deserialization targets and gadget discovery
  • [01:42] SolarWinds blocklist bypasses and custom gadget chains
  • [15:23] Exchange ProxyNotShell deserialization and patch bypasses
  • [24:10] Device Master authentication and MessagePack deserialization
  • [29:01] Insecure serialization gadgets and information disclosure
  • [38:28] Chaining arbitrary getter calls with serialization gadgets
  • [45:04] Gadgets and remote DLL loading in newer .NET versions
  • [48:08] Gadget and plugin contributions to ysoserial.net