Unsichere Deserialisierung gefährdet Steam-Spiele

News, hints and help about Software or Hardware related information.
User avatar
[RC]BooZer
Co-Founder
Co-Founder
Addicted
Addicted
Posts: 3703
Joined: Wed Apr 09, 2008
Location: K-Town
Favorite Server: All of them
Been thanked: 1 time
Germany

Membership

Contributor

Networker

=]RC[= BooZer’s avatar
Loading…

25 Apr 2020, 09:35

Viele Videospiele, die .Net oder Unity verwenden, sind angreifbar und führen Schadcode aus. Steam bietet die Möglichkeit einer wurmähnlichen Infektion.

Viele Videospiele nutzen Microsofts Entwicklungsframework .Net oder die bei Entwicklern beliebte Unity-Engine, die auf einer angepassten .Net-Runtime basiert. Eine überraschende Anzahl dieser Spiele ist über Sicherheitslücken bei der Deserialisierung von Speicherständen oder Modding-Inhalten angreifbar. Diese Angriffe können in den meisten Fällen zur Ausführung von beliebigem Schadcode mit Nutzerrechten missbraucht werden. Sicherheitsforscher der Schweizer Sicherheitsfirma Modzero fanden bei der Untersuchung einer typischen Steam-Bibliothek mit knapp 400 Spielen an die 30 Titel, die für Deserialisierungs-Angriffe anfällig waren. Davon konnten sie für 14 Spiele funktionierende Exploits entwickeln.

Das Problem mit der Deserialisierung

In einem Blog-Eintrag erklären die schweizer Sicherheitsforscher, wie sie mit Hilfe eines selbstentwickelten Software-Tools alle Spiele in der Bibliothek automatisch nach sogenannten Deserialisation Gadgets durchsucht haben. Das sind Funktionen im Programmcode, von denen man weiß, dass sie für Deserialisierungs-Angriffe missbraucht werden können. Bei Spielen die .Net-Code verwenden, kommen diese vor allem in der Funktion BinaryFormatter vor. Konkret beschreiben die Sicherheitsforscher die Spiele Tabletop Simulator und Totally Accurate Battle Simulator. Am Beispiel des Spiels Dragon Cliff erklären sie, dass nicht alle Spiele, für die Gadgets in der Funktion BinaryFormatter gefunden wurden, auch automatisch angreifbar sind. Die im Modzero-Blog beschriebenen Lücken in Tabletop Simulator und Totally Accurate Battle Simulator wurden vor Erscheinung des Berichts der Forscher geschlossen.



Als Deserialisierung bezeichnet man den Prozess, mit dem ein Programm Daten aus einer sequenziellen Darstellungsform (etwa einer Text- oder Binärdatei) einliest und in Objekte umwandelt, mit denen es interaktiv arbeiten kann (die Daten liegen dann in einer Speicherform mit Random Access vor, etwa dem Arbeitsspeicher). Bei Videospielen kommt das etwa beim Laden von Spielständen vor. Oder beim Aktivieren von Mods oder anderem Content, der von Dritten entwickelt und als Dateien heruntergeladen wird. Das Problem, mit dem sich Spieleentwickler hier konfrontiert sehen, ist, dass sie Daten aus einer nicht vertrauenswürdigen Quelle deserealisieren – ein bekanntes Sicherheitsproblem.

Wurmfähiger Exploit

Spiele, die den Steam Workshop unterstützen, sind hier besonders anfällig, da Anwender hier Content von Dritten herunterladen und selbst publizieren können. Ein Angreifer könnte also bösartigen Modding-Code schreiben, der beim Deserialisieren, mittels Schwachstellen in der von einem verwundbaren Spiel verwendeten BinaryFormatter-Funktion, Schadcode ausführt. So leben sowohl Tabletop Simulator als auch Totally Accurate Battle Simulator davon, dass die Community der Spieler eigenen Content erstellt und über den Steam Workshop anderen Spielern zur Verfügung stellt. Beim Totally Accurate Battle Simulator sind es Kampfszenarien, beim Tabletop Simulator sind es die Brett- oder Kartenspiele selbst, die mit dem Programm in digitaler Form emuliert werden.

Die von den Forschern entdeckten Schwachstellen öffnen somit die reale Gefahr der wurmähnlichen Verbreitung eines solchen Exploits. Denn hat ein Spieler den bösartigen Mod heruntergeladen und der Schadcode wurde ausgeführt, könnte der Code neue Mods generieren und unter dem Steam-Konto des Opfers veröffentlichen. So ließe sich theoretisch in kurzer Zeit der Steam Marketplace mit einer großen Zahl von Malware überfluten. Das installieren eines Mods per Klick in Steam oder dem Launcher eines Spiels reicht aus, da die Komponente anschließend automatisch geladen wird – und dafür muss sie deserialisiert werden.

Ein simpler gestrickter Angriff würde so funktionieren, dass man versucht, dem Opfer einen präparierten Spielstand unterzuschieben. Da viele Modding-Seiten das Teilen von Spielständen erlauben – etwa um sich besonders viel Gold in einem RPG zu er-cheaten oder um einen besonders harten Boss Fight zu umgehen – ist auch diese Angriffstaktik gar nicht so weit hergeholt. Auch wenn sie sich nicht zur wurmartigen Verbreitung eignet.
Was Spieleentwickler tun können

Die im Blog-Artikel der Modzero-Forscher genannten Spiele sind bereits gegen die beschriebenen Angriffe abgesichert worden. Ähnliche Sicherheitslücken werden aber trotzdem nach wie vor in vielen anderen Spielen stecken – und nicht nur bei Spielen, die auf der Steam-Plattform vertrieben werden. Generell ist jedes in .Net geschriebene Spiel für das von den Forschern beschriebene Problem anfällig.

Das Grundproblem liegt in der BinaryFormatter-Funktion in .Net und den vielen bekannten Unsicherheiten, die dort seit langem schlummern. Die Modzero-Forscher empfehlen Spieleentwicklern, eine sogenannte Binder-Klasse zu verwenden, mit der sich die Arbeitsweise von BinaryFormatter einschränken lässt. Auf diese Weise können Entwickler eine Whitelist für Datentypen erstellen, die sie erwarten und von denen keine Gefahr ausgeht. Unbekannte, eventuell gefährliche Daten werden so gar nicht erst geladen. Die Forscher stellen Beispiel-Quellcode für einen solchen Binder bereit, der alle von ihnen gefundenen Schwachstellen im Keim erstickt.

Quelle:
https://www.heise.de/security/meldung/U ... 06122.html


Stay Rough & Clever forever!

Image