Neu in .NET 9.0 [30]: Unsicherheitsfaktor binäre Serialisierung entfernt

Die Klasse BinaryFormatter gehört in .NET 9.0 nicht mehr zum Standardlieferumfang der Basisklassenbibliothek, da binäre Serialisierung unsicher ist.

vorlesen Druckansicht 1 Kommentar lesen
Verkehrsschild mit Aufschrift .NET

(Bild: Pincasso/Shutterstock.com)

Lesezeit: 2 Min.
Von
  • Dr. Holger Schwichtenberg

Die binäre Serialisierung mit der Klasse BinaryFormatter gibt es bereits seit .NET Framework 1.0 und auch in dem aktuellen .NET Framework 4.8.1. In .NET Core 1.0 war er nicht enthalten, wurde dann aber mit .NET Core 2.0 auf Kundendruck auch in das moderne .NET integriert.

Der Dotnet-Doktor – Holger Schwichtenberg
Der Dotnet-Doktor – Holger Schwichtenberg

Dr. Holger Schwichtenberg ist technischer Leiter des Expertennetzwerks www.IT-Visions.de, das mit 53 renommierten Experten zahlreiche mittlere und große Unternehmen durch Beratungen und Schulungen sowie bei der Softwareentwicklung unterstützt. Durch seine Auftritte auf zahlreichen nationalen und internationalen Fachkonferenzen sowie mehr als 90 Fachbücher und mehr als 1500 Fachartikel gehört Holger Schwichtenberg zu den bekanntesten Experten für .NET und Webtechniken in Deutschland.

Heise-Konferenz zu .NET 10.0
enterJS Advanced Angular Day

(Bild: coffeemill/123rf.com)

Verbesserte Klassen in .NET 10.0, Native AOT mit Entity Framework Core 10.0 und mehr: Darüber informieren Dr. Holger Schwichtenberg und weitere Speaker der Online-Konferenz betterCode() .NET 10.0 am 18. November 2025. Nachgelagert gibt es sechs ganztägige Workshops zu Themen wie C# 14.0, KI-Einsatz und Web-APIs.

Seit .NET 5.0 ist er als "obsolet" markiert und erzeugt eine Warnung. Seit .NET 8.0 wurde schon ein Compiler-Fehler fĂĽr den BinaryFormatter erzeugt, der sich aber unterdrĂĽcken lieĂź.

Der Einsatz der Klasse BinaryFormatter erzeugt einen Compiler-Fehler.

Grund dafĂĽr sind die bereits im Jahr 2012 auf der Black-Hat-Konferenz gezeigten SicherheitslĂĽcken in dieser Serialisierungsart.

Microsoft hat im Februar 2024 auf GitHub angekündigt, die binäre Serialisierung mit der Klasse BinaryFormatter in .NET 9.0 zu entfernen. Die Klasse ist in .NET 9.0 zwar weiterhin vorhanden und der Compiler-Fehler lässt sich weiterhin unterdrücken, aber jegliche Nutzung führt zum Laufzeitfehler "Platform not supported“.

Microsoft hat einen BinaryFormatter Migration Guide veröffentlicht, in dem das Unternehmen eine Migration zu anderen Serialisierungsformaten wie XML, Message Pack und ProtoBuf empfiehlt.

Microsoft sagte auf der .NET Conf 2024 ganz deutlich: "Stop using it!"

(Bild: Microsoft)

Eine besondere Herausforderung entsteht im Zusammenspiel mit Windows Forms und Windows Presentation Foundation (WPF), da in beiden GUI-Frameworks die binäre Serialisierung bisher für die Zwischenablage, Drag-and-Drop sowie zum Speichern von Werten zur Entwicklungszeit im Windows-Forms-Designer und dem WPF-Navigationsjournal zum Einsatz kam. Während Microsoft dort für einige Basistypen bereits die Serialisierung geändert hat, müssen Entwicklerinnen und Entwickler bei anderen Typen mit Migrationsaufwand rechnen.

Videos by heise

Wer vorhandenen Programmcode nicht migrieren möchte, kann das NuGet-Paket System.Runtime.Serialization.Formatters einbinden und die binäre Serialisierung weiterhin verwenden. Dazu muss man Folgendes in der Projektdatei setzen:

<PropertyGroup>
  <EnableUnsafeBinaryFormatterSerialization>true
  </EnableUnsafeBinaryFormatterSerialization>
</PropertyGroup>

Achtung: Microsoft betont neben der mangelnden Sicherheit, dass es fĂĽr die Klasse BinaryFormatter nun keinerlei Hilfe mehr beim Microsoft-Support gibt.

Alternativ zum NuGet-Paket System.Runtime.Serialization.Formatters bietet Microsoft noch ein Paket System.Formats.Nrbf mit der Klasse NrbfDecoder an, um binär serialisierte Daten sicher zu lesen. Dieses Paket unterliegt aber zahlreichen Einschränkungen.

Das Kompilieren von Programmcode, der den BinaryFormatter verwendet, ist in .NET 9.0 nicht mehr ohne Weiteres möglich.

(rme)