Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ez a cikk a következő típusokra vonatkozik:
Ez a cikk a következő .NET-implementációkra vonatkozik:
- .NET-keretrendszer minden verzió
- .NET Core 2.1 – 3.1
- .NET 5 és újabb verziók
Figyelemfelhívás
Ez BinaryFormatter a típus veszélyes, és nem ajánlott adatfeldolgozáshoz. Az alkalmazásoknak a lehető leghamarabb le kell állniuk a használatukról BinaryFormatter , még akkor is, ha úgy vélik, hogy az általuk kezelt adatok megbízhatóak.
BinaryFormatter nem biztonságos, és nem lehet biztonságossá tenni.
Megjegyzés
A .NET 9-től kezdve a beépített BinaryFormatter implementáció kivételeket alkalmaz a használat során, még a korábban engedélyezett beállításokkal is. Ezek a beállítások is törlődnek. További információt a BinaryFormatter migrálási útmutatójában talál.
Deszerializálási sebezhetőségek
A deszerializálási sérülékenységek olyan fenyegetéskategóriát jelentenek, amelyekben a kérésterhelések nem biztonságosan kerülnek feldolgozásra. Azok a támadók, akik sikeresen kihasználják ezeket a biztonsági réseket egy alkalmazással szemben, szolgáltatásmegtagadást (DoS), információfeltárást vagy távoli kódvégrehajtást okozhatnak a célalkalmazáson belül. Ez a kockázati kategória következetesen az OWASP 10 legjobbja. A célok közé tartoznak a különböző nyelveken írt alkalmazások, például a C/C++, a Java és a C#.
A .NET-ben a legnagyobb kockázatot azok az alkalmazások jelentik, amelyek a BinaryFormatter típust használják az adatok deszerializálására.
BinaryFormatter a .NET-ökoszisztémában széles körben használják a hatalmuk és a könnyű használatuk miatt. Ugyanez a teljesítmény azonban lehetővé teszi a támadók számára, hogy befolyásolják a célalkalmazáson belüli vezérlési folyamatot. A sikeres támadások azt eredményezhetik, hogy a támadó a célfolyamat kontextusában futtathat kódot.
Egyszerűbb analógiaként feltételezzük, hogy a BinaryFormatter.Deserialize meghívása a hasznos adatokon egyenértékű azzal, mintha a hasznos adatokat önállóan végrehajthatóként értelmeznék és elindítanák.
BinaryFormatter biztonsági rések
Figyelmeztetés
A BinaryFormatter.Deserialize módszer soha nem biztonságos, ha nem megbízható bemenettel használják. Határozottan javasoljuk, hogy a fogyasztók inkább a cikk későbbi részében ismertetett alternatívák egyikét használják.
BinaryFormatter a deszerializálási sebezhetőségek jól ismert fenyegetéskategóriává válása előtt került bevezetésre. Ennek eredményeképpen a kód nem követi a modern ajánlott eljárásokat. Ez a Deserialize módszer vektorként használható a támadók számára, hogy DoS-támadásokat hajtsanak végre az alkalmazások ellen. Ezek a támadások nem válaszolnak az alkalmazásra, vagy váratlan folyamatleállást eredményezhetnek. Ez a támadási kategória nem enyhíthető egy SerializationBinder vagy bármely más BinaryFormatter konfigurációs kapcsolóval. A .NET úgy véli, hogy ez a viselkedés terv szerint működik, és nem ad ki kódfrissítést a viselkedés módosításához.
BinaryFormatter.Deserialize más támadási kategóriákra is érzékeny lehet, például az információk felfedésére vagy a távoli kódfuttatásra. Előfordulhat, hogy az egyéni SerializationBinder funkciók használata nem elegendő ezeknek a kockázatoknak a megfelelő mérsékléséhez. Fennáll annak a lehetősége, hogy a támadó felfedez egy új biztonsági rést, amely meghaladja a meglévő kockázatcsökkentéseket. A .NET nem kötelezi el magát a javítások közzétételére az ilyen megkerülésekre válaszul. Emellett az ilyen javítások fejlesztése vagy üzembe helyezése technikailag nem valósítható meg. Fel kell mérnie a forgatókönyveket, és figyelembe kell vennie az ilyen kockázatoknak való kitettséget.
Javasoljuk, hogy a BinaryFormatter felhasználók egyéni kockázatértékeléseket végezzenek az alkalmazásaikon. A fogyasztó kizárólagos felelőssége annak meghatározása, hogy használja-e BinaryFormatter. Ha a használatát fontolgatja, érdemes kockázat szerint felmérni a biztonsági, műszaki, hírnévi, jogi és szabályozási következményeket.
Előnyben részesített alternatívák
A .NET számos beépített szerializálót kínál, amelyek biztonságosan kezelhetik a nem megbízható adatokat:
-
XmlSerializer és DataContractSerializer az objektumdiagramok XML-be és xml-ből történő szerializálásához. Ne tévessze össze
DataContractSerializera .NetDataContractSerializer - BinaryReader xml és BinaryWriter JSON esetén.
- Az System.Text.Json objektumdiagramok JSON-ba szerializálására alkalmas API-k.
Veszélyes alternatívák
Kerülje az alábbi szerializálókat:
Az előző szerializálók mind korlátlan polimorf deszerializálást végeznek, és veszélyesek, ugyanúgy, mint BinaryFormatter.
Az adatok megbízhatónak tételének kockázata
Az alkalmazásfejlesztők gyakran úgy vélik, hogy csak megbízható bemeneteket dolgoznak fel. A biztonságos bemeneti eset bizonyos ritka esetekben igaz. Azonban sokkal gyakoribb, hogy egy payload átlép egy megbízhatósági határt anélkül, hogy a fejlesztő ezt felismerné.
Vegyünk egy helyszíni kiszolgálót , ahol az alkalmazottak asztali ügyfelet használnak a munkaállomásukról a szolgáltatás használatához. Ez a forgatókönyv naiv módon "biztonságos" beállításnak tekinthető, ahol a használat BinaryFormatter elfogadható. Ez a forgatókönyv azonban egy olyan kártevővektort mutat be, amely egyetlen alkalmazott gépéhez fér hozzá, hogy a vállalat egész területén el tudjon terjedni. Ez a kártevő kihasználhatja a vállalat BinaryFormatter használatát, hogy oldalirányban terjedjen az alkalmazott munkaállomásáról a háttérkiszolgálóra. Ezután kiszűrheti a vállalat bizalmas adatait. Ezek az adatok üzleti titkos kulcsokat vagy ügyféladatokat tartalmazhatnak.
Érdemes lehet olyan alkalmazást is használni, amely a mentési állapot megőrzésére használja BinaryFormatter . Ez elsőre biztonságos forgatókönyvnek tűnhet, mivel az adatok olvasása és írása a saját merevlemezén kisebb fenyegetést jelent. A dokumentumok e-mailben vagy interneten való megosztása azonban gyakori, és a végfelhasználók többsége nem tekinti kockázatos viselkedésnek a letöltött fájlok megnyitását.
Ez a forgatókönyv kihasználható rosszindulatú célokra. Ha az alkalmazás egy játék, a fájlokat megosztó felhasználók véletlenül veszélybe kerülnek. Maguk a fejlesztők is célzottak lehetnek. A támadó e-mailben elküldheti a fejlesztők technikai támogatását, rosszindulatú adatfájlt csatolhat, és megkérheti a támogatási személyzetet, hogy nyissa meg. Ez a fajta támadás támaszpontot adhat a támadónak a vállalatnál.
Egy másik forgatókönyv az, amikor az adatfájl a felhőbeli tárolóban van tárolva, és automatikusan szinkronizálódik a felhasználó gépei között. Egy támadó, aki hozzáfér a felhőbeli tárfiókhoz, megmérgezheti az adatfájlt. Ez az adatfájl automatikusan szinkronizálódik a felhasználó gépével. Amikor a felhasználó legközelebb megnyitja az adatfájlt, a támadó kódja fut. Így a támadó a felhőbeli tárfiókok feltörése révén teljes kódvégrehajtási engedélyeket szerezhet.
Fontolja meg azt az alkalmazást, amely az asztali telepítésű modellről a felhőbeli első modellre kerül. Ez a forgatókönyv olyan alkalmazásokat is tartalmaz, amelyek asztali alkalmazásból vagy gazdag ügyfélmodellből webes modellbe kerülnek. Az asztali alkalmazáshoz készült fenyegetésmodellek nem feltétlenül alkalmazhatók a felhőalapú szolgáltatásra. Az asztali alkalmazás fenyegetésmodellje elvethet egy adott fenyegetést, mivel "nem érdekes, hogy az ügyfél megtámadja magát". Ugyanez a fenyegetés azonban akkor válhat érdekessé, ha úgy véli, hogy egy távoli felhasználó (az ügyfél) magát a felhőszolgáltatást támadja.
Megjegyzés
Általánosságban elmondható, hogy a szerializálás célja egy objektum egy alkalmazásba vagy az alkalmazásból való továbbítása. A fenyegetésmodellezési gyakorlat szinte mindig egy megbízhatósági határ átlépéseként jelöli meg az ilyen típusú adatátvitelt.
Lásd még
- BinaryFormatter migrálási útmutató
- Bináris szerializálás
-
YSoSerial.Net az alkalmazások támadások elleni kutatására, amelyek
BinaryFormatterhasználnak. - A deszerializálási biztonsági rések általános háttere: