Ich habe viele Jahre nach Schwachstellen gesucht und es scheint, dass ich viel gesehen habe, aber es gibt einen solchen Teil der Arbeit, an den ich mich nicht gewöhnen kann und den ich nicht verstehen kann. Dies ist eine absolute Zurückhaltung der Anbieter, Informationen über Schwachstellen und Probleme zu akzeptieren. Ich verstehe, dass es sehr unangenehm ist, wenn sie Ihnen direkt zeigen, dass Sie einen Fehler gemacht haben und höchstwahrscheinlich keinen. Es ist unangenehm, in offenen Quellen öffentlich zu bestätigen, dass es Probleme gab und die Mitarbeiter nicht arbeiteten. Ich verstehe jedoch nicht, warum Informationen zu Sicherheitslücken abgelehnt werden müssen.
Der Held unserer Geschichte ist also die Steam-Software von Valve. Und die darin enthaltene Sicherheitsanfälligkeit bezüglich der Eskalation von Berechtigungen, die es jedem Benutzer ermöglicht, Befehle im Namen von NT AUTHORITY \ SYSTEM auszuführen.
Sicherheitslücke
Die Sicherheitslücke selbst ist recht einfach. Steam installiert den Dienst "Steam Client Service" für seine Arbeit. Sehen Sie sich den
SDDL- Service-
Deskriptor an :
O:SYG:SYD:(A;;CCLCSWLOCRRC;;;IU)(A;;CCLCSWLOCRRC;;;SU)(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;RPWP;;;BU)
Hier interessiert uns der Teil (A ;; RPWP ;;; BU). In diesem Fall bedeutet dieser Eintrag, dass jeder Benutzer aus der Benutzergruppe den Dienst starten und stoppen kann.
Mal sehen, was der Dienst beim Start macht. Nicht sehr interessant, aber es gibt einige Vorgänge, die ungewöhnlich aussehen - der Dienst listet den Inhalt des Abschnitts
HKLM \ SOFTWARE \ Wow6432Node \ Valve \ Steam \ Apps auf und legt einige Rechte für alle Unterabschnitte fest.

Ich frage mich, welche Rechte ausgestellt sind. Wir erstellen einen Testschlüssel, starten den Dienst (Protokoll von procmon oben) und sehen, was richtig ist. Hier wird auch herausgefunden, dass der Abschnitt
HKLM \ SOFTWARE \ Wow6432Node \ Valve \ Steam über vollständige Zugriffsrechte für alle Benutzer verfügt, die von allen Unterschlüsseln geerbt werden. Es wird die Hypothese aufgestellt, dass für alle Unterabschnitte von
HKLM \ SOFTWARE \ Wow6432Node \ Valve \ Steam \ Apps durch einen Aufruf von
RegSetKeySecurity dieselben Rechte festgelegt werden. Was aber, wenn in der Registrierung ein Symlink vorhanden ist und der Zweig
HKLM \ SOFTWARE \ Wow6432Node \ Valve \ Steam \ Apps \ test beispielsweise auf
HKLM \ SOFTWARE \ test2 verweist ?
Wir prüfen, ob die Rechte bei einem Symlink für den Zielregistrierungszweig registriert sind.

Wir überprüfen die Rechte des Zielzweigs und sehen im SDDL-Formular (Überspringen uninteressant):
(A;ID;KA;;;BU)(A;OICIIOID;GA;;;BU)
In mündlicher Form bedeutet dies, dass alle Benutzer vollen (Lese- und Schreib-) Zugriff haben. Dies sind die Rechte, die der Steam-Service der Niederlassung vorschreibt.
Nachdem das Grundelement darauf vorbereitet ist, die Kontrolle über fast jeden Registrierungszweig zu erlangen, ist es einfach, PoC zu rollen. Ich habe den
Zweig HKLM \ SYSTEM \ ControlSet001 \ Services \ msiserver ausgewählt. Er entspricht dem Dienst "Windows Installer", der auch vom Benutzer gestartet werden kann, der Dienst funktioniert jedoch mit den Berechtigungen NT AUTHORITY \ SYSTEM. Nachdem wir die Kontrolle über den
Zweig HKLM \ SYSTEM \ ControlSet001 \ Services \ msiserver erlangt haben, ändern wir den Pfad zur ausführbaren Datei im ImagePath-Schlüssel und starten den msiserver-Dienst. Unsere ausführbare Datei wird mit den höchstmöglichen Berechtigungen gestartet - NT AUTHORITY \ SYSTEM.
Wir sammeln alles, was oben im Code geschrieben steht, und erhalten eine einfache Eskalation von Berechtigungen auf jedem Windows-Computer, auf dem Steam installiert ist.
Schwachstellenbericht
Ich habe Valve über Hackerone einen Schwachstellenbericht gesendet.
Hier wartete die erste Überraschung auf mich - bevor ich die Sicherheitsanfälligkeit direkt an Valve übertrug, musste ich zuerst Hackerone-Mitarbeiter davon überzeugen, dass ich wirklich einen Sicherheitsanfälligkeitsbericht hatte, da Valve die Funktion
"Verwaltet von HackerOne" verwendete. Es macht mir nichts aus - ich habe PoC, der die Konsole im Auftrag von NT AUTHORITY \ SYSTEM aufruft - Beweise im Gesicht. Und ich bekomme eine Ablehnung in dem Bericht. Der Grund weist darauf hin, dass mein Bericht außerhalb des Forschungsbereichs liegt, da "Angriffe, bei denen Dateien an beliebigen Stellen im Dateisystem des Benutzers abgelegt werden müssen". (Ein Angriff erfordert die Fähigkeit, Dateien in beliebigen Dateisystempfaden zu finden.) Meine Reaktion: "Ich habe nicht einmal einen einzigen Dateisystembetrieb, aber wirklich einen Fehler aus diesem Grund?"
Ich schreibe einen Kommentar dazu und ein anderer Mitarbeiter kommt, der sich dennoch verpflichtet, die Sicherheitslücke zu überprüfen. Bestätigt es und passiert Valve. Hurra, das Ziel ist erreicht. Oder nicht…?
Die Zeit vergeht und der Bericht wird erneut als nicht zutreffend markiert. Gründe: "Angriffe, bei denen Dateien an beliebigen Stellen im Dateisystem des Benutzers abgelegt werden müssen" und "Angriffe, bei denen physischer Zugriff auf das Gerät des Benutzers erforderlich ist" (der Angriff erfordert physischen Zugriff auf das Gerät des Benutzers). Dann wurde mir klar, dass Privilegien-Eskalationsangriffe für Valve einfach nicht interessant waren.
Ein kurzer Kommentar zu den GründenAnfangs glaubte ich, dass Berichte, die keine Sicherheitsanfälligkeit als solche enthalten, aber eine seltsame Anwendung der installierten Software demonstrieren, vom Geltungsbereich ausgeschlossen sind.
Aus dem Grund „Angriffe, bei denen Dateien an beliebigen Stellen im Dateisystem des Benutzers abgelegt werden müssen “ habe ich meiner Meinung nach Schlüsselwörter hervorgehoben. Es schien mir, dass Valve Spekulationen über das Thema "Lassen Sie mich das Spiel in einem Ordner installieren, auf den alle Benutzer zugreifen können, dann werde ich es mit Administratorrechten ausführen, ohne zu überprüfen, ob jemand die Dateien ersetzt hat" ausschließen wollte, aber für sie ist dies anscheinend ein Grund zum Ausschluss im Allgemeinen alles über lokale Angriffe.
Gleiches gilt für den physischen Zugriff. Physischer Zugriff ist für mich die Möglichkeit, die Schrauben auf der Festplatte mit einem Schraubendreher zu lösen, von externen Medien zu booten und andere interessante Dinge direkt mit der PC-Hardware. Es ist ziemlich logisch anzunehmen, dass Sie mit einem solchen Zugriff fast alles tun können. Sowie die Überwindung der Zwei-Faktor-Authentifizierung durch physischen Zugriff auf das Telefon. Valve betrachtet anscheinend jede Aktion auf dem Computer des Benutzers als Physik. Und RCE kann nicht lange verboten werden: Der Computer ist durch Wellen oder Kabel mit den Servern verbunden - physisch!
Da seit dem Bericht 45 Tage vergangen sind, habe ich beschlossen, die Details der Sicherheitsanfälligkeit öffentlich bekannt zu geben, obwohl ich nicht sicher bin, ob dies Steam-Entwickler zu Änderungen ermutigen wird.
Kleine Statistiken: Die Sicherheitsanfälligkeit wurde unter Windows 8 x64, Windows 8.1 x64 und Windows 10 x64 getestet. Ich kenne die Funktionen der Versionsnummerierung der Steam-Software nicht, daher werde ich die Version der Servicekomponenten korrigieren:
- SteamService.dll (5.16.86.11, signiert von Valve 14.06.2019)
- SteamService.exe (5.16.86.11, signiert von Valve 14.06.2019)
Zeitleiste:
15. Juni - Schwachstellenbericht gesendet.
16. Juni - Abgelehnt: "Angriffe, bei denen Dateien an beliebigen Stellen im Dateisystem des Benutzers abgelegt werden müssen."
16. Juni - mit Kommentar wiederentdeckt.
2. Juli - vom HackerOne-Mitarbeiter bestätigt, an Valve übertragen.
20. Juli - Abgelehnt: "Angriffe, bei denen Dateien an beliebigen Stellen im Dateisystem des Benutzers abgelegt werden müssen.", "Angriffe, bei denen physischer Zugriff auf das Gerät des Benutzers erforderlich ist."
7. August - Dieser Artikel wurde veröffentlicht.
Ein bisschen Spekulation
Ich bin sehr enttäuscht Ein seriöses Unternehmen, das pompöse Worte schreibt, dass Sicherheit wichtig ist, öffnet Ihren Computer für maximalen Zugriff auf alle Programme, die Sie ausführen.
Es ist ziemlich ironisch festzustellen, dass ein Launcher, mit dem Programme von Drittanbietern auf Ihrem Computer ausgeführt werden, es ihnen ermöglicht, leise maximale Berechtigungen zu erhalten. Sind Sie sicher, dass sich ein kostenloses Spiel, das ein unbekannter Entwickler auf dem Knie erstellt hat, ehrlich verhält? Glauben Sie, dass Sie für einen Rabatt von 90% keinen versteckten Bergmann bekommen? Natürlich bleiben einige Bedrohungen bestehen, wenn Sie ohne Administratorrechte arbeiten, aber die hohen Rechte von Schadprogrammen können die Nerven erheblich zerstören - das Antivirenprogramm deaktivieren, bei Systemstarts beheben, fast alle Dateien und Benutzer ändern.
Aufgrund der Popularität von Steam ist die Anzahl potenzieller Opfer sehr groß. Im Jahr 2015 wurde die Anzahl der aktiven Steam-Konten auf 125 Millionen geschätzt. Ja, nicht alle Steam-Benutzer haben ein Windows-Betriebssystem, aber die meisten von ihnen haben bestimmte, und einige Benutzer haben mehrere "Live" -Konten auf demselben Computer. Das Ausmaß des Problems ist jedoch immer noch beeindruckend.
Oder ist das alles absichtlich so? Vielleicht ist Steam eine Art legale Hintertür? Es ist unmöglich, dies genau festzustellen, aber vergleichen wir die Fakten:
- Es gibt eine Sicherheitslücke, die leicht auszunutzen ist (und nach den Nachrichten auf Twitter keine zu urteilen).
- Es ist ziemlich leicht zu erkennen - ich bin mir nicht sicher, ob ich es als erster gefunden habe, aber zumindest als erstes habe ich es öffentlich beschrieben.
- Widerwillen, einen Bericht über solche und ähnliche Schwachstellen zu akzeptieren (der Umfang wird speziell so gewählt, dass die Eskalation von Berechtigungen nicht mehr möglich ist).
Ich mag das alles wirklich nicht. Ich werde Sie nicht dringend bitten, Steam zu entfernen, aber ich schlage vor, sehr vorsichtig mit dem zu sein, was es tut. Ihre Sicherheit steht auf dem Spiel.
Bonus
Tatsache ist, dass bei der Vorbereitung dieses Artikels ein ziemlich interessantes Ereignis eingetreten ist, in dessen Zusammenhang ich beschlossen habe, die Zeitleiste zu ergänzen.
20. Juli - Nachdem ich den Bericht abgelehnt hatte, warnte ich h1, dass ich nach dem 30. Juli Einzelheiten der Sicherheitsanfälligkeit öffentlich bekannt geben würde.
2. August - Ein anderer h1-Mitarbeiter wird in einem geschlossenen Bericht gemeldet und sagt, dass er mir keine Offenlegung erlaubt.
Dieser Artikel wurde bis zum 30. Juli zur Veröffentlichung vorbereitet (dieses Datum wurde mit einer Rate von 45 Tagen nach Absendung des Berichts gewählt), wurde jedoch verzögert. Und so erscheint zwei Wochen später nach meiner Nachricht vom 20. Juli eine Person, die mir sagt: „Wir geben keine Erlaubnis, die Sicherheitsanfälligkeit offenzulegen“. Tatsächlich stellt sich heraus: Wir haben Ihren Bericht als unangemessen markiert, die Diskussion abgeschlossen, wir haben es nicht für notwendig gehalten, Ihnen etwas zu erklären, und wir möchten einfach nicht, dass Sie ihn veröffentlichen. Es gibt kein einziges Wort von Valve. Nein Leute, das wird nicht funktionieren. Sie haben meine Arbeit nicht respektiert, ich werde Ihre nicht respektieren - ich sehe keinen Grund, diesen Bericht nicht für alle zu veröffentlichen. Höchstwahrscheinlich werde ich aus diesem Grund auf h1 gesperrt, aber ich werde nicht verärgert sein.
UPD Es stellt sich heraus, dass gestern (6. August) das Steam-Update veröffentlicht wurde. Nein, es wurde nichts behoben.
Dateiversion: 5.27.59.20 Unterschrift vom 08.08.2019.
Nach Offenlegung
Wir aktualisieren weiterhin die Zeitleiste:
7. August (nach Veröffentlichung) - Der Bericht über das erste Halbjahr wurde wiederentdeckt. Ich erhielt einen Brief, dessen Kern schwer auf den Punkt zu bringen ist, aber das Wichtigste war, dass einige überzeugende Argumente zu dem Schluss gebracht werden müssen, dass die Folgen der Verwundbarkeit erheblich sind. Es gab "Valve wird etwas nicht reparieren, von dem sie festgestellt haben, dass es nicht zutreffend ist." Diese Worte bestätigten erneut meine Überzeugung, dass ich zu Recht eine öffentliche Offenlegung von Details durchgeführt habe.
7. August -
Matt Nelson schreibt, dass die von ihm gemeldete Sicherheitslücke genau dieselbe ist wie meine. Das bestätigt meine These über die Leichtigkeit, es zu finden. Er öffnet seinen
PoC .
9. August - Steam Beta erhält ein Update, bei dem eine der Zeilen "Fehler bei der Eskalation von Berechtigungen mithilfe symbolischer Links in der Windows-Registrierung behoben" lautet. Es gibt den Verdacht, dass das Update umgangen werden kann, aber vorerst Popcorn auffüllen.
13. August - Steam
erhält ein Update, in dem eine der Zeilen "Fehler bei der Eskalation von Berechtigungen mithilfe symbolischer Links in der Windows-Registrierung
behoben " lautet. Es scheint, dass der Dienst keine Rechte in der Registrierung offenlegt, sodass wir davon ausgehen können, dass er behoben ist.
15. August - Der Forscher zeigte, dass der
Patch umgangen werden kann , die Sicherheitslücke ist immer noch relevant. Verknüpfung - Sie können die vorherige Version (vor dem Patch) des Dienstes zurückgeben.
20. August - Valve hat mich in ihrem Programm für H1 verboten. Der Rest des H1 steht mir zur Verfügung.
Dieser Artikel in Englisch.