Suche nach Verwundbarkeit. Ausführen von beliebigem Code auf virtuellen NVIDIA GeForce NOW-Maschinen

Einführung



Vor dem Hintergrund der Coronavirus-Pandemie hat die Beliebtheit von Cloud-Diensten zugenommen, sodass Sie Videospiele spielen können. Diese Dienste bieten die erforderliche Rechenleistung, um Spiele auszuführen und das Gameplay in Echtzeit auf die Geräte der Benutzer zu übertragen. Der offensichtlichste Vorteil eines solchen Systems ist, dass die Spieler keine leistungsstarke Hardware benötigen. Um den Service-Client zu starten und die Zeit für die Selbstisolierung zu vertreiben, reicht eine vollständig budgetierte Maschine aus: Alle Berechnungen finden auf einem Remote-Server statt.



Eine dieser Cloud-Plattformen ist GeForce NOW von NVIDIA. Laut Google Trends haben die weltweiten Suchanfragen nach diesem Dienst im Februar ihren Höhepunkt erreicht. Dies korreliert mit dem Einsetzen von Beschränkungen in vielen Ländern Asiens, Europas, Nord- und Südamerikas und anderen Regionen. Gleichzeitig sehen wir für Russland, wo das Selbstisolationsregime später im März begann, ein ähnliches Bild, jedoch mit einer entsprechenden Verzögerung.



Angesichts des großen Interesses an GeForce NOW haben wir uns entschlossen, diese Plattform unter Sicherheitsgesichtspunkten zu betrachten.



Erkundung der Plattform



Zum Zeitpunkt unserer Recherche war GeForce NOW in zwei Versionen erhältlich - kostenlos und im Abonnement. Der Unterschied besteht darin, dass Sie bei der kostenlosen Nutzung des Dienstes warten müssen, bis eine kostenlose virtuelle Umgebung verfügbar ist. Bei der kostenpflichtigen Option startet die virtuelle Maschine mit einer höheren Priorität, und der Spieler muss normalerweise nicht warten. In Bezug auf die Sicherheit sind beide Versionen des Dienstes gleich. Bei Verstößen gegen die Regeln für die Nutzung der Plattform wird die Cloud-Laufzeit sofort deaktiviert und das Konto des betreffenden Spielers kann gesperrt werden.



Das Menü enthält eine Liste der vom Dienst unterstützten Spiele. Zum Spielen benötigen Sie ein Konto in einem der digitalen Content-Stores, mit denen dieses oder jenes Spiel bereits verknüpft ist (wenn es bezahlt wird, müssen Sie es im Voraus kaufen). In dieser Studie betrachten wir das GeForce NOW- und Steam Store-Bundle.



Wenn Sie im Hauptanwendungsfenster auf die Schaltfläche "Wiedergabe" klicken, wird eine virtuelle Remote-Umgebung gestartet und in Echtzeit von der Serverseite auf das Gerät des Benutzers gestreamt.



Wenn das ausgewählte Spiel bereits gekauft wurde, wird es im Vollbildmodus ausgeführt und andere Funktionen der virtuellen Umgebung sollten dem Benutzer nicht zur Verfügung stehen. Wenn Sie in den Spieleinstellungen jedoch den Fenstermodus auswählen können, haben wir die Möglichkeit, auf die Steam-Bibliothek zuzugreifen. Eine andere Möglichkeit besteht darin, ein Spiel auszuwählen, das sich noch nicht in der Bibliothek befindet.







Es ist bereits klar, dass wir beliebigen Code ausführen können, wenn wir eine Sicherheitsanfälligkeit in einem vom Dienst unterstützten Spiel ausnutzen. Die einzige Einschränkung besteht darin, dass der Exploit über das Netzwerk bereitgestellt werden muss. Hier sind verschiedene Szenarien möglich. Wenn der Exploit beispielsweise ein ausführbares Modul auf der Festplatte erstellt, kann der Dienst theoretisch die Ausführung der Nutzdaten verhindern, indem er die Erstellung der ausführbaren Datei als Kioskbenutzer verfolgt (dies ist ein Standardbenutzer in virtuellen Maschinen des GeForce NOW-Dienstes). Wenn der Shellcode jedoch aufgrund der Ausnutzung einer Sicherheitsanfälligkeit ausgeführt wird, kann sich der Dienst nicht selbst verteidigen.



Um eine vollständige Untersuchung der Umgebung der Umgebung der virtuellen Maschine durchzuführen, benötigen wir keinen Zugriff auf cmd.exe oder Powershell.exe. Aber wie bekommst du es? Nachdem Sie ein wenig durch das Menü der Steam-Bibliothek gewandert sind, finden Sie eine Möglichkeit, mit der Sie eine beliebige ausführbare exe-Datei ausführen können, die bereits im System verfügbar ist. Dazu verwenden wir die Funktion "Spiel eines Drittanbieters hinzufügen ...".







Normalerweise ist das Hinzufügen von cmd.exe zur Bibliothek als Spiel eines Drittanbieters kein Problem. Diese Funktion ist jedoch in GeForce NOW deaktiviert, und das Klicken auf die Schaltfläche Durchsuchen im folgenden Screenshot führt zu nichts. Sie können jedoch eine der vorhandenen Anwendungen auswählen (und gleichzeitig sehen, welche Programme im Darm der virtuellen Maschine installiert sind). Wählen wir zum Beispiel den 7-Zip-Archivierer (andere Programme sind ebenfalls großartig).







Nach dem Hinzufügen von 7-Zip zur Steam-Bibliothek können die Programmparameter geändert werden. Hier legen wir den Pfad zur benötigten cmd.exe-Datei fest. Erledigt! Wir starten unser "Spiel" von Drittanbietern und erhalten eine funktionierende Shell:







Jetzt können wir uns umschauen und herausfinden, wo wir überhaupt sind. Winver starten:







Wie sich herausstellte, wird die virtuelle Dienstmaschine unter Windows Server 2019 ausgeführt.



Daher können wir bereits das tun, was für virtuelle GeForce NOW-Maschinen nicht standardmäßig bereitgestellt wird. Aber was können wir noch tun und wie gefährlich wird es sein?



Gemäß den häufig gestellten Fragen auf der Seite NVIDIA Vulnerability Reporting ist der Zugriff auf cmd.exe in einer GeForce NOW Service-VM keine Sicherheitsanfälligkeit. Dies liegt an der Tatsache, dass der Benutzer in einer virtuellen Umgebung nur über minimale Rechte verfügt und dass auch gestartete Anwendungen gefiltert werden. So wird beispielsweise nach dem Starten von Powershell.exe die Laufzeit sofort gestoppt.



Damit unsere Forschung ernst genommen werden kann, müssen wir zwei Probleme lösen:



1) die Nutzlast an die virtuelle Maschine liefern und

2) sie durch Umgehen der Whitelist der Anwendung starten.



Bei der Lösung des ersten Problems haben wir die beliebten LOLBINs zum Herunterladen ausprobiert, z. B. regsvr32, bitsadmin usw. In allen Fällen stürzte die virtuelle Maschine ab:







Aber die Entscheidung kam von selbst. GeForce NOW ist ein Dienst für Spiele (einschließlich Multiplayer), bei dem ein Spielclient eine Verbindung zu einem Spieleserver herstellen und von dort Sounds, Modelle, Karten und andere Dateien herunterladen kann. Daher müssen wir ein Spiel auswählen, mit dem wir dem Kunden eine beliebige Datei liefern können. Gleichzeitig müssen wir uns keine Gedanken über die Dateierweiterung machen, da wir Zugriff auf die Shell haben und die heruntergeladene Datei dorthin verschieben können, wo wir sie verwenden können.



Aber was ist mit der App-Whitelist? Selbst wenn es uns gelingt, eine Drittanbieteranwendung in eine virtuelle Maschine zu integrieren, stürzt sie beim Start ab. Eine der Lösungen für dieses Problem besteht darin, eine Anwendung aus der vertrauenswürdigen Liste zu finden, für die wir DLL-Hijacking implementieren können. Das offensichtlichste Ziel ist das Gameplay.



Versuchen wir also, diese Idee am Beispiel von Counter-Strike: Source umzusetzen (im Folgenden wird sie als CS: S abgekürzt). Als erstes erstellen wir unseren eigenen CS: S-Server, der eine DLL-Datei unter dem Deckmantel eines Modells (d.mdl) bereitstellt. Als nächstes starten wir GeForce NOW, um CS: S zu spielen, und gehen zu unserem Server, von dem eine zuvor vorbereitete "Modell" -Datei auf die virtuelle Maschine geladen wird. Jetzt minimieren wir das Spiel und führen cmd.exe aus. Verschiebe die Datei d.mdl nach "Counter-Strike Source / bin / user32.dll" und starte das Spiel mit dem Konsolenbefehl neu. Erfolg: Wir haben beliebigen Code im Kontext eines vertrauenswürdigen Prozesses ausgeführt.



Und sie haben sogar ein Video aufgenommen:







Fazit



Trotz der Tatsache, dass Angriffe auf Dienstnutzer möglicherweise möglich sind, sind sie immer noch unwahrscheinlich. Darüber hinaus sind die Risiken für andere Benutzer des Dienstes minimal. Tatsache ist, dass für jede neue Spielesitzung eine saubere virtuelle Umgebung in GeForce NOW gestartet wird. Nachdem der Player die Sitzung beendet hat, wird die virtuelle Maschine heruntergefahren und "zurückgesetzt". Selbst wenn die Sicherheitsanfälligkeit erfolgreich ausgenutzt wird, kann der Schadcode daher nur funktionieren, solange die gefährdete virtuelle Maschine ausgeführt wird. Um andere Benutzer anzugreifen, müssen Angreifer die virtuelle Umgebung mithilfe eines Exploits wie der Escape-Funktion der virtuellen Maschine verlassen. Solche Exploits sind selten und schwer zu implementieren. Bei Erfolg sind jedoch nicht nur einzelne Benutzer gefährdet, sondern alleder nach dem ersten Kompromiss des Dienstes über eine der virtuellen GeForce NOW-Maschinen eine Spielesitzung gestartet hat.



Ein einfacheres und realistischeres Angriffsszenario besteht jedoch darin, eine kompromittierte virtuelle Maschine zu verwenden, um Kryptowährungen abzubauen, DDoS-Angriffe durchzuführen und andere illegale Aktivitäten auszuführen, die Rechenleistung erfordern.



Nach unserem Kontakt bestätigte NVIDIA das Problem und veröffentlichte einen Fix für ihren Service.



Chronologie der Ereignisse:



18.04.2020 — NVIDIA

20.04.2020 — NVIDIA PSIRT

13.05.2020 — NVIDIA PSIRT ,

21.08.2020 — NVIDIA PSIRT , 30.08

02.09.2020 —

03.09.2020 — NVIDIA

04.09.2020 — NVIDIA

07.09.2020 — .



All Articles