Share via


CA2305: Gebruik geen onveilige deserializer LosFormatter

Eigenschappen Weergegeven als
Regel-id CA2305
Titel Gebruik geen onveilige deserializer LosFormatter
Categorie Beveiliging
Oplossing is brekend of niet-brekend Niet-brekend
Standaard ingeschakeld in .NET 8 Nee

Oorzaak

Er System.Web.UI.LosFormatter is een deserialisatiemethode aangeroepen of waarnaar wordt verwezen.

Beschrijving van regel

Onveilige deserializers zijn kwetsbaar wanneer niet-vertrouwde gegevens worden gedeserialiseerd. Een aanvaller kan de geserialiseerde gegevens wijzigen zodat onverwachte typen worden opgenomen om objecten met schadelijke bijwerkingen te injecteren. Een aanval op een onveilig deserializer kan bijvoorbeeld opdrachten uitvoeren op het onderliggende besturingssysteem, communiceren via het netwerk of bestanden verwijderen.

Met deze regel worden aanroepen of verwijzingen naar deserialisatiemethode gevonden System.Web.UI.LosFormatter .

LosFormatter is onveilig en kan niet veilig worden gemaakt. Zie de beveiligingshandleiding binaryFormatter voor meer informatie.

Schendingen oplossen

  • Gebruik in plaats daarvan een beveiligde serialisatiefunctie en sta een aanvaller niet toe een willekeurig type op te geven dat moet worden gedeserialiseerd. Zie Voorkeursalternatieven voor meer informatie.
  • Maak de geserialiseerde gegevens manipulatiebestendig. Na serialisatie tekent u de geserialiseerde gegevens cryptografisch. Voordat deserialisatie wordt gedeserialiseerd, valideert u de cryptografische handtekening. Beveilig de cryptografische sleutel tegen openbaarmaking en ontwerp voor sleutelrotaties.

Wanneer waarschuwingen onderdrukken

LosFormatter is onveilig en kan niet veilig worden gemaakt.

Voorbeelden van pseudocode

Schending

using System.IO;
using System.Web.UI;

public class ExampleClass
{
    public object MyDeserialize(byte[] bytes)
    {
        LosFormatter formatter = new LosFormatter();
        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 LosFormatter = New LosFormatter()
        Return formatter.Deserialize(New MemoryStream(bytes))
    End Function
End Class