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
Ha lehetséges, használjon inkább biztonságos szerializálót, és ne engedélyezze a támadók számára, hogy tetszőleges típust adjanak meg a deszerializáláshoz. A biztonságosabb szerializálók közé tartoznak a következők:
- System.Runtime.Serialization.DataContractSerializer
- System.Runtime.Serialization.Json.DataContractJsonSerializer
- System.Web.Script.Serialization.JavaScriptSerializer - Soha ne használja System.Web.Script.Serialization.SimpleTypeResolver. Ha típusfeloldót kell használnia, korlátozza a deszerializált típusokat egy várt listára.
- System.Xml.Serialization.XmlSerializer
- Newtonsoft Json.NET – TypeNameHandling.None használata. Ha egy másik értéket kell használnia a TypeNameHandlinghez, korlátozza a deszerializált típusokat egy várt listára egyéni ISerializationBinderrel.
- Protokollpufferek
Végezze el a szerializált adatok illetéktelen illetéktelen beavatkozását. A szerializálás után kriptográfiailag írja alá a szerializált adatokat. A deszerializálás előtt ellenőrizze a titkosítási aláírást. Védje meg a titkosítási kulcsot a nyilvánosságra hozataltól, és tervezzen kulcsforgatást.
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
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: