Partilhar via


CA2315: Não use o desserializador inseguro ObjectStateFormatter

Propriedade valor
ID da regra CA2315
Cargo Não use o desserializador inseguro ObjectStateFormatter
Categoria Segurança
A correção está quebrando ou não quebrando Sem quebra
Habilitado por padrão no .NET 8 Não

Causa

Um System.Web.UI.ObjectStateFormatter método de desserialização foi chamado ou referenciado.

Descrição da regra

Desserializadores inseguros são vulneráveis ao desserializar dados não confiáveis. Um invasor pode modificar os dados serializados para incluir tipos inesperados para injetar objetos com efeitos colaterais mal-intencionados. Um ataque contra um desserializador inseguro pode, por exemplo, executar comandos no sistema operacional subjacente, se comunicar pela rede ou excluir arquivos.

Esta regra localiza System.Web.UI.ObjectStateFormatter chamadas ou referências de método de desserialização.

Como corrigir violações

Quando suprimir avisos

É seguro suprimir um aviso desta regra se:

  • Você sabe que a entrada é confiável. Considere que o limite de confiança e os fluxos de dados do seu aplicativo podem mudar ao longo do tempo.
  • Você tomou uma das precauções em Como corrigir violações.

Exemplos de pseudocódigo

Violação

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