Share via


CA2315: Nepoužívejte nezabezpečený deserializátor ObjectStateFormatter

Vlastnost Hodnota
ID pravidla CA2315
Název Nepoužívat nezabezpečený deserializátor ObjectStateFormatter
Kategorie Zabezpečení
Oprava způsobující chybu nebo chybu způsobující chybu Nenarušující
Povoleno ve výchozím nastavení v .NET 8 No

Příčina

Byla System.Web.UI.ObjectStateFormatter volána nebo odkazována metoda deserializace.

Popis pravidla

Nezabezpečené deserializátory jsou zranitelné při deserializaci nedůvěryhodných dat. Útočník by mohl serializovaná data upravit tak, aby zahrnovala neočekávané typy pro vložení objektů se škodlivými vedlejšími účinky. Útok na nezabezpečený deserializátor může například spouštět příkazy v podkladovém operačním systému, komunikovat přes síť nebo odstraňovat soubory.

Toto pravidlo najde System.Web.UI.ObjectStateFormatter volání nebo odkazy metody deserializace.

Jak opravit porušení

Kdy potlačit upozornění

Upozornění z tohoto pravidla je bezpečné potlačit, pokud:

  • Víte, že vstup je důvěryhodný. Vezměte v úvahu, že hranice důvěryhodnosti vaší aplikace a toky dat se můžou v průběhu času měnit.
  • Provedli jste jedno z bezpečnostních opatření v části Jak opravit porušení.

Příklady pseudokódu

Porušení

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