CA5367: No serializar los tipos con campos de puntero

Propiedad Value
Identificador de la regla CA5367
Título No serializar los tipos con campos de puntero
Categoría Seguridad
La corrección interrumpe o no interrumpe Poco problemático
Habilitado de forma predeterminada en .NET 8 No

Causa

Los punteros no tienen seguridad de tipos, lo cual significa que no se puede garantizar la exactitud de la memoria a la que apuntan. Por lo tanto, la serialización de tipos con campos de puntero es un riesgo para la seguridad, ya que puede permitir que un atacante controle el puntero.

Descripción de la regla

Esta regla comprueba si hay una clase serializable con una propiedad o un campo de puntero. Los miembros que no se pueden serializar pueden ser un puntero, como los miembros estáticos o los campos marcados con System.NonSerializedAttribute.

Cómo corregir infracciones

No use tipos de puntero para miembros en una clase serializable o no serialice los miembros que son punteros.

Cuándo suprimir las advertencias

No asuma el riesgo de usar punteros en tipos serializables.

Ejemplos de pseudocódigo

Infracción

using System;

[Serializable()]
unsafe class TestClassA
{
    private int* pointer;
}

Solución 1

using System;

[Serializable()]
unsafe class TestClassA
{
    private int i;
}

Solución 2

using System;

[Serializable()]
unsafe class TestClassA
{
    private static int* pointer;
}