在.NET框架中的XmlSerializer类是一种很棒的工具,它是将高度结构化的XML数据映射为.NET对象。XmlSerializer类在程序中通过单个API调用来执行XML文档和对象之间的转换。转换的映射规则在.NET类中通过元数据属性来表示,如果程序开发人员使用Type类的静态方法获取外界数据,并调用Deserialize反序列化xml数据就会触发反序列化漏洞攻击(例如DotNetNuke任意代码执行漏洞CVE-2017-9822),本文笔者从原理和代码审计的视角做了相关脑图介绍和复现。