CA2305: Använd inte osäker deserializer LosFormatter
Property | Värde |
---|---|
Regel-ID | CA2305 |
Title | Använd inte osäker deserializer LosFormatter |
Kategori | Säkerhet |
Korrigeringen är icke-bakåtkompatibel | Icke-icke-bryta |
Aktiverad som standard i .NET 9 | Nej |
Orsak
En System.Web.UI.LosFormatter deserialiseringsmetod anropades eller refererades till.
Regelbeskrivning
Osäkra deserialiserare är sårbara när deserialisera ej betrodda data. En angripare kan ändra serialiserade data så att de innehåller oväntade typer för att mata in objekt med skadliga biverkningar. En attack mot en osäker deserialiserare kan till exempel köra kommandon på det underliggande operativsystemet, kommunicera via nätverket eller ta bort filer.
Den här regeln hittar System.Web.UI.LosFormatter deserialiseringsmetodanrop eller referenser.
LosFormatter
är osäker och kan inte göras säker. Mer information finns i säkerhetsguiden för BinaryFormatter.
Så här åtgärdar du överträdelser
- Använd en säker serialiserare i stället och tillåt inte att en angripare anger en godtycklig typ att deserialisera. Mer information finns i Föredragna alternativ.
- Gör serialiserade data manipuleringssäkra. Efter serialiseringen signerar kryptografiskt serialiserade data. Verifiera den kryptografiska signaturen innan deserialiseringen. Skydda den kryptografiska nyckeln från att avslöjas och utformas för nyckelrotationer.
När du ska ignorera varningar
LosFormatter
är osäker och kan inte göras säker.
Exempel på pseudokod
Kränkning
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