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.
Feljegyzé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 biztonsági rések
A deszerializálási biztonsági rések olyan fenyegetéskategóriák, amelyekben a kérések hasznos adatai nem biztonságosan dolgozhatók fel. 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ázati cél az adatok deszerializálására használt BinaryFormatter alkalmazások.
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 tegyük fel, hogy BinaryFormatter.Deserialize a hasznos adatok meghívása egyenértékű azzal, ha a hasznos adatokat önálló végrehajthatóként értelmezi és elindítja.
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 biztonsági rések egy jól ismert fenyegetéskategóriát jelentettek. 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 doS-támadások végrehajtására az alkalmazások használata 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ő más SerializationBinderBinaryFormatter 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ázattal felmérni a biztonsági, műszaki, hírnevét, jogi és szabályozási következményeit.
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 a következő 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. Sokkal gyakoribb azonban, hogy egy hasznos adat átlép egy megbízhatósági határt anélkül, hogy a fejlesztő felismerte volna.
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 azon használatát BinaryFormatter , hogy oldalirányban helyezze át az alkalmazott munkaállomását 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 hasznos lehet az elkeskenyedő hatás érdekében. 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 láblécet adhat a támadónak a vállalatban.
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ó hasznos adatai futnak. Í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.
Feljegyzé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, hogy a támadók hogyan támadják meg az alkalmazásokat.
BinaryFormatter - A deszerializálási biztonsági rések általános háttere: