Rules / C#
SHIELD-CSHARP-008
Insecure deserialization via JavaScriptSerializer SimpleTypeResolver
What it detects
JavaScriptSerializer is constructed with a SimpleTypeResolver, permitting arbitrary type deserialization.
How to fix
Construct JavaScriptSerializer without a type resolver or migrate to System.Text.Json.
Vulnerable — Shield flags thisLegacyApiHandler.cs
using System.Web.Script.Serialization;
public class LegacyApiHandler
{
public Order Parse(string json)
{
var serializer = new JavaScriptSerializer(new SimpleTypeResolver());
return serializer.Deserialize<Order>(json);
}
}
Fixed — scans cleanLegacyApiHandler.cs
using System.Web.Script.Serialization;
public class LegacyApiHandler
{
public Order Parse(string json)
{
var serializer = new JavaScriptSerializer();
return serializer.Deserialize<Order>(json);
}
}
Both snippets are verified against the shipped scanner: the vulnerable one triggers SHIELD-CSHARP-008, the fixed one does not.