Nemanja Mijailovic
23.02.2023, 09:00 Uhr
Der StackOverflowException vorbeugen
Entwickler Nemanja Mijailovic hat untersucht, wie sicher .NET Serialisierungsbibliotheken gegen eine StackOverflowException sind.
Entwickler Nemanja Mijailovic sagt, dass er schon immer von der StackOverflowException von .NET fasziniert war. Er findet sie besonders interessant, weil sie sich grundlegend von den meisten anderen Ausnahmen unterscheidet - man kann sie nicht mit einem try/catch-Block abfangen. Läuft der Stack über, ist das Spiel vorbei - die Runtime beendet den Prozess. Dieses Verhalten ist besonders verheerend für Webdienste, die benutzergesteuerte Daten deserialisieren. Lässt eine Datenstruktur Rekursion zu, können böswillige Benutzer leicht eine stark verschachtelte Nutzlast erstellen und sie für DDoS-Angriffe auf die Website verwenden.
Serialisierungsbibliotheken sind in der Lage, Sie vor dieser Art von DDoS-Angriffen zu schützen, indem sie die Rekursionstiefe während der Deserialisierung begrenzen. Das ist genau das, was Bibliotheken, die mit Blick auf die Sicherheit entwickelt wurden, schon immer getan haben. Aber sie sind Ausreißer - die meisten Bibliotheken waren ursprünglich anfällig für die StackOverflowException (und einige von ihnen sind es immer noch).
In diesem Beitrag überprüft Nemanja Mijailovic die am weitesten verbreiteten .NET-Serialisierungsbibliotheken und zeigt, ob sie anfällig für die StackOverflowException sind. Außerdem weist er darauf hin, welche Bibliotheksversionen sicher zu verwenden sind, welche Serialisierer besondere Verwendungsmuster erfordern und welche Bibliotheken man vermeiden sollte.