Fjerner funksjonalitet fra .NET 9, lar .NET Framework forbli usikker

BinaryFormatter har i mer enn ti år vært regnet som et digert sikkerhetshull, nå fjernes den selv om mange fortsatt bruker den.

Microsoft fjerner usikker klasse fra .NET 9. 📸: NTB / AFP
Microsoft fjerner usikker klasse fra .NET 9. 📸: NTB / AFP Vis mer

Microsoft fjerner BinaryFormatter-klassen fra den neste .NET-versjonen som kommer senere i år; .NET 9. Det skriver DevClass.

BinaryFormatter brukes for å serialisere og deserialisere objekter til et mer effektivt binærformat som kan brukes til lagring til lagringsmedier eller streaming av data over et nettverk.

I mer enn ti år har imidlertid bruk av BinaryFormatter blitt regnet som en stor sikkerhetsrisiko, siden den serialiserer hva som helst uten noen sjekk. Likevel brukes klassen fortsatt en del – noe Microsoft nå altså vil sette en stopper for.

– Tenk deg at koden din har en klasse DeleteAllMyData. Hvis du aksepterer en payload fra en uklarert input, for eksempel en nettside, kan en angriper lage en payload som inneholder en instans av DeleteAllMyData, skrev Microsofts Barry Dorrans tidligere i år.

– Når du deserialiserer den payloaden, vil du få mulighet til å finne ut om database-sikkerhetskopiene dine faktisk kan gjenopprettes.

Fjerner den ikke helt

Selv om BinaryFormatter fjernes fra .NET 9, som er "rett rundt hjørnet", velger Microsoft å beholde den i .NET Framework.

For de som ikke vet det: .NET (9) er den moderne utgaven av .NET-plattformen, og en kryssplattformløsning som kan brukes til å utvikle applikasjoner for blant annet Windows, macOS, Linux og web. .NET Framework på sin side er den gamle .NET-plattformen som ble introdusert i 2002, og som i hovedsak brukes til å lage Windows-applikasjoner.

DevClass skriver at da den første kryssplattform-versjonen .NET Core 1.0 kom i 2016, fjernet Microsoft BinaryFormatter fordi de visste den var en sikkerhetsrisiko. Men siden det ikke var noen gode alternativer, måtte de etter press fra brukerne få det tilbake igjen i versjon 1.1.

I dokumentasjonen står det at BinaryFormatter ikke kan gjøres sikker, men at du kan bruke den ved å sette et flagg.

I .NET 9 vil du ikke kunne bruke BinaryFormatter i det hele tatt, med mindre du installerer en ikke-supportert NuGet-pakke som gjenoppretter støtten.

Lar seg ikke fikse

Så hvorfor vil Microsoft beholde den usikre klassen i .NET Framework?

DevClass viser til GitHub-diskusjoner der det kommer frem at .NET Framework fortsatt er mye brukt, og både kunders kode og innebygde rammeverk som Windows Forms og Web Forms bruker BinaryFormatter.

Microsoft har laget en guide til hvilke alternativer utviklere har hvis de fortsatt har kode som bruker BinaryFormater. Den kan du lese her.