CA2362: Un elemento DataSet o DataTable no seguro en un tipo serializable autogenerado puede ser vulnerable a ataques de ejecución remota de código
Propiedad | Value |
---|---|
Identificador de la regla | CA2362 |
Título | Un elemento DataSet o DataTable no seguro en un tipo serializable autogenerado puede ser vulnerable a ataques de ejecución remota de código |
Categoría | Seguridad |
La corrección interrumpe o no interrumpe | Poco problemático |
Habilitado de forma predeterminada en .NET 9 | No |
Una clase o estructura marcada con SerializableAttribute contiene una propiedad o un campo DataSet o DataTable, y tiene un DesignerCategoryAttribute.
CA2352 es una regla similar, para cuando no hay un DesignerCategoryAttribute.
Si se deserializa la entrada que no es de confianza con BinaryFormatter y el gráfico de objetos deserializados contiene DataSet o DataTable, un atacante puede crear una carga malintencionada para realizar un ataque de ejecución de código remoto.
Esta regla es como CA2352, pero para el código generado automáticamente para una representación en memoria de los datos dentro de una aplicación GUI. Normalmente, estas clases autogeneradas no se deserializan de la entrada que no es de confianza. Su uso de la aplicación puede variar.
Esta regla busca los tipos que no son seguros cuando se deserializan. Si el código no deserializa los tipos detectados, no hay vulnerabilidad de deserialización.
Para obtener más información, vea Guía de seguridad de DataSet y DataTable.
- Si es posible, use Entity Framework en lugar de DataSet y DataTable.
- Proteja los datos serializados contra alteraciones. Después de la serialización, firme criptográficamente los datos serializados. Antes de la deserialización, valide la firma criptográfica. Proteja la clave criptográfica para que no se revele y diseñe las rotaciones de clave.
Se puede suprimir una advertencia de esta regla si:
- El tipo que se encuentra en esta regla nunca se deserializa, ya sea directa o indirectamente.
- Sabe que la entrada es de confianza. Considera que el límite de confianza de la aplicación y los flujos de datos pueden cambiar con el tiempo.
- Ha tomado una de las precauciones indicadas en Cómo corregir infracciones.
Si solo quiere suprimir una única infracción, agregue directivas de preprocesador al archivo de origen para deshabilitar y volver a habilitar la regla.
#pragma warning disable CA2362
// The code that's violating the rule is on this line.
#pragma warning restore CA2362
Para deshabilitar la regla de un archivo, una carpeta o un proyecto, establezca su gravedad en none
del archivo de configuración.
[*.{cs,vb}]
dotnet_diagnostic.CA2362.severity = none
Para obtener más información, consulte Procedimiento para suprimir advertencias de análisis de código.
using System.Data;
using System.Xml.Serialization;
namespace ExampleNamespace
{
[global::System.CodeDom.Compiler.GeneratedCode(""System.Data.Design.TypedDataSetGenerator"", ""2.0.0.0"")]
[global::System.Serializable()]
[global::System.ComponentModel.DesignerCategoryAttribute(""code"")]
[global::System.ComponentModel.ToolboxItem(true)]
[global::System.Xml.Serialization.XmlSchemaProviderAttribute(""GetTypedDataSetSchema"")]
[global::System.Xml.Serialization.XmlRootAttribute(""Package"")]
[global::System.ComponentModel.Design.HelpKeywordAttribute(""vs.data.DataSet"")]
public class ExampleClass : global::System.Data.DataSet {
private DataTable table;
}
}
CA2350: Asegurarse de que la entrada de DataTable.ReadXml() sea de confianza
CA2351: Asegúrese de que la entrada de DataSet.ReadXml() sea de confianza
CA2353: Objeto DataSet o DataTable no seguro en un tipo serializable
CA2355: Objeto DataSet o DataTable no seguro en un gráfico de objetos deserializado
Comentaris de .NET
.NET és un projecte de codi obert. Seleccioneu un enllaç per enviar comentaris: