Megosztás a következőn keresztül:


CA2315: Ne használjon nem biztonságos deszerializáló ObjectStateFormattert

Tulajdonság Érték
Szabályazonosító CA2315
Cím Ne használjon nem biztonságos deszerializáló ObjectStateFormattert
Kategória Biztonság
A javítás kompatibilitástörő vagy nem törik Nem törés
Alapértelmezés szerint engedélyezve a .NET 8-ban Nem

Ok

A System.Web.UI.ObjectStateFormatter deszerializálási metódus meghívása vagy hivatkozása megtörtént.

Szabály leírása

A nem biztonságos deszerializálók sebezhetők a nem megbízható adatok deszerializálásakor. A támadó úgy módosíthatja a szerializált adatokat, hogy váratlan típusokat is tartalmazzon, hogy kártékony mellékhatásokkal rendelkező objektumokat injektáljon. A nem biztonságos deszerializáló elleni támadás például parancsokat hajthat végre az alapul szolgáló operációs rendszeren, kommunikálhat a hálózaton keresztül, vagy fájlokat törölhet.

Ez a szabály megkeresi System.Web.UI.ObjectStateFormatter a deszerializálási metódus hívásait vagy hivatkozásait.

Szabálysértések kijavítása

Mikor kell letiltani a figyelmeztetéseket?

A szabály figyelmeztetését nyugodtan letilthatja, ha:

  • Tudja, hogy a bemenet megbízható. Vegye figyelembe, hogy az alkalmazás megbízhatósági határa és az adatfolyamok idővel változhatnak.
  • Megtette a szabálysértések elhárításának egyik óvintézkedését.

Példák pszeudokódokra

Megsértése

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