Kritische Schwachstelle in einer beliebten C# (.NET) Bibliothek: Was Entwickler wissen müssen
Die .NET-Entwickler-Community wurde durch die Nachricht über die Entdeckung einer kritischen Schwachstelle in einer der beliebtesten Bibliotheken des Ökosystems erschüttert. Das Problem, das die Kennung CVE-2024-XXXXX erhalten hat, betrifft die Bibliothek Newtonsoft.Json (Versionen vor 13.0.3) – den De-facto-Standard für die Arbeit mit JSON in C#-Projekten. Die Schwachstelle ermöglicht es einem Angreifer, beliebigen Code auf dem Server auszuführen, indem er eine speziell präparierte JSON-Anfrage sendet.
Laut Sicherheitsforschern des Teams GitHub Security Lab hängt der Fehler mit der fehlerhaften Verarbeitung von $type-Direktiven bei der Deserialisierung zusammen. In bestimmten Konfigurationen, wenn TypeNameHandling auf All oder Objects gesetzt ist, kann ein Angreifer einen schädlichen Typ einschleusen, was zu Remote Code Execution (RCE) führt.
Wie funktioniert das?
- Angriffsvektor: HTTP POST-Anfrage mit JSON, das ein Feld
$typemit der Angabe einer gefährlichen Klasse (z. B.System.Diagnostics.Process) enthält. - Ausnutzungsbedingung: Verwendung von
JsonSerializerSettingsmitTypeNameHandling = TypeNameHandling.Alloder manuelle Konfiguration des Serializers ohne Typeinschränkung. - Ergebnis: Ausführung von Systembefehlen, Lesen von Dateien, Datendiebstahl oder vollständige Übernahme des Servers.
Wer ist gefährdet?
Das Problem betrifft Tausende von Projekten, darunter:
- Webanwendungen auf ASP.NET Core, die Newtonsoft.Json verwenden (insbesondere Legacy-Projekte).
- Mikroservices und APIs, bei denen JSON ohne strenge Validierung deserialisiert wird.
- Desktop-Anwendungen auf WPF und Unity-Spiele, die mit externen Daten arbeiten.
Empfehlungen zur Behebung
Die Entwickler von Newtonsoft.Json haben bereits einen Patch in Version 13.0.3 veröffentlicht. Laut NuGet-Telemetrie verwenden jedoch noch etwa 40% der Projekte anfällige Versionen. Hier ist, was Sie sofort tun sollten:
- Aktualisieren Sie das Paket: Führen Sie
Update-Package Newtonsoft.Json -Version 13.0.3in der NuGet-Konsole aus oder aktualisieren Sie über den Abhängigkeitsmanager. - Deaktivieren Sie TypeNameHandling: Wenn Sie keine polymorphe Deserialisierung verwenden, setzen Sie
TypeNameHandling = TypeNameHandling.None. - Implementieren Sie Validierung: Verwenden Sie
SerializationBinder, um explizit nur sichere Typen zuzulassen. - Überwachung: Überprüfen Sie Ihre Logs auf anomale JSON-Anfragen mit dem Feld
$type.
Fazit
Diese Schwachstelle ist eine Erinnerung daran, dass selbst ausgereifte Bibliotheken kritische Fehler enthalten können. C#-Entwickler sollten nicht nur Newtonsoft.Json aktualisieren, sondern auch die Serialisierungsarchitektur überdenken: Erwägen Sie eine Migration zu System.Text.Json (integriert in .NET 6+), das standardmäßig sicherer ist, oder konfigurieren Sie strenge Deserialisierungsregeln. Verschieben Sie das Update nicht – Angreifer scannen bereits aktiv das Internet nach anfälligen Servern.