CA2315 : N’utilisez pas le désérialiseur non sécurisé ObjectStateFormatter

Propriété Value
Identificateur de la règle CA2315
Titre N’utilisez pas le désérialiseur non sécurisé ObjectStateFormatter
Catégorie Sécurité
Le correctif est cassant ou non cassant Sans rupture
Activé par défaut dans .NET 8 Non

Cause

Une méthode de désérialisation System.Web.UI.ObjectStateFormatter a été appelée ou référencée.

Description de la règle

Les désérialiseurs non sécurisés sont vulnérables lors de la désérialisation de données non approuvées. Un attaquant peut modifier les données sérialisées pour y inclure des types inattendus afin d’injecter des objets avec des effets secondaires malveillants. Une attaque contre un désérialiseur non sécurisé peut, par exemple, exécuter des commandes sur le système d’exploitation sous-jacent, communiquer sur le réseau ou supprimer des fichiers.

Cette règle recherche les appels ou références de méthode de désérialisation System.Web.UI.ObjectStateFormatter.

Comment corriger les violations

Quand supprimer les avertissements

Vous pouvez supprimer sans risque un avertissement de cette règle si :

  • Vous savez que l’entrée est approuvée. Considérez que la limite d’approbation et les flux de données de votre application peuvent changer au fil du temps.
  • Vous avez pris l’une des précautions indiquées dans Comment corriger les violations.

Exemples de pseudo-code

Violation

using System.IO;
using System.Web.UI;

public class ExampleClass
{
    public object MyDeserialize(byte[] bytes)
    {
        ObjectStateFormatter formatter = new ObjectStateFormatter();
        return formatter.Deserialize(new MemoryStream(bytes));
    }
}
Imports System.IO
Imports System.Web.UI

Public Class ExampleClass
    Public Function MyDeserialize(bytes As Byte()) As Object
        Dim formatter As ObjectStateFormatter = New ObjectStateFormatter()
        Return formatter.Deserialize(New MemoryStream(bytes))
    End Function
End Class