CA2300: Ne használjon nem biztonságos deszerializáló binárisformattert
Tulajdonság | Érték |
---|---|
Szabályazonosító | CA2300 |
Cím | Ne használjon nem biztonságos deszerializáló binárisformattert |
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.Runtime.Serialization.Formatters.Binary.BinaryFormatter 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.Runtime.Serialization.Formatters.Binary.BinaryFormatter a deszerializálási metódus hívásait vagy hivatkozásait. Ha csak akkor szeretné deszerializálni, ha a Binder tulajdonság a típusok korlátozására van beállítva, tiltsa le ezt a szabályt, és engedélyezze helyette a CA2301 és a CA2302 szabályokat. A deszerializálható típusok korlátozása segíthet enyhíteni az ismert távoli kódvégrehajtási támadásokat, de a deszerializálás továbbra is ki lesz téve a szolgáltatásmegtagadási támadásoknak.
BinaryFormatter
nem biztonságos, és nem lehet biztonságossá tenni. További információt a BinaryFormatter biztonsági útmutatójában talál.
Szabálysértések kijavítása
- Ehelyett használjon biztonságos szerializálót, és ne engedélyezze a támadónak, hogy tetszőleges típust adjon meg a deszerializáláshoz. További információkért lásd az előnyben részesített alternatívákat.
- 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.
- Ez a beállítás sebezhetővé teszi a kódot a szolgáltatásmegtagadási támadásokkal és az esetleges távoli kódvégrehajtási támadásokkal szemben a jövőben. További információt a BinaryFormatter biztonsági útmutatójában talál. Deszerializált típusok korlátozása. Egyéni System.Runtime.Serialization.SerializationBinderimplementálás . A deszerializálás előtt állítsa a
Binder
tulajdonságot az egyéni SerializationBinder példányra az összes kódútvonalon. Ha a típus váratlan, a felülírt BindToType metódusban kivételt kell tenni a deszerializálás leállításához.
Mikor kell letiltani a figyelmeztetéseket?
BinaryFormatter
nem biztonságos, és nem lehet biztonságossá tenni.
Példák pszeudokódokra
Megsértése
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
public class ExampleClass
{
public object MyDeserialize(byte[] bytes)
{
BinaryFormatter formatter = new BinaryFormatter();
return formatter.Deserialize(new MemoryStream(bytes));
}
}
Imports System.IO
Imports System.Runtime.Serialization.Formatters.Binary
Public Class ExampleClass
Public Function MyDeserialize(bytes As Byte()) As Object
Dim formatter As BinaryFormatter = New BinaryFormatter()
Return formatter.Deserialize(New MemoryStream(bytes))
End Function
End Class
Kapcsolódó szabályok
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: