Die Sicherheit von Betriebssystemen und der darauf installierten Software ist ein ständiges Wettrennen zwischen Entwicklern und Sicherheitsforschern. Insbesondere unter avira 64 bit windows 10 ist es für Nutzer von entscheidender Bedeutung, dass ihre Schutzsoftware nicht selbst zur Schwachstelle wird. In diesem Artikel beleuchten wir eine kritische Sicherheitslücke – eine lokale Rechteausweitung – die im Avira Optimizer für Windows 10 (64-Bit) identifiziert und erfolgreich ausgenutzt wurde. Diese Schwachstelle ermöglichte es einem Angreifer, mit geringen Benutzerrechten Code mit den höchsten SYSTEM-Berechtigungen auszuführen, was die Kontrolle über das betroffene System bedeuten kann. Wir tauchen tief in die Mechanismen dieser Lücke ein, von ihrer Identifizierung bis hin zur Behebung durch Avira, und betonen die Notwendigkeit robuster Sicherheitsmaßnahmen, selbst bei Antiviren-Software.
Übersicht der Schwachstelle im Avira Optimizer
Version: Avira Optimizer < 1.2.0.367
Betriebssystem getestet auf: Windows 10 1803 (x64)
Schwachstelle: Lokale Rechteausweitung im Avira Optimizer durch unsichere Named Pipes.
Wenn Nutzer die Avira Antivirus-Software installieren, werden verschiedene Komponenten mitgeliefert, darunter auch der Avira Optimizer. Dieser Optimierer läuft unter dem Prozess Avira.OptimizerHost.exe und wird mit den kritischen “NT AUTHORITYSYSTEM”-Berechtigungen ausgeführt. Der Prozess empfängt Befehle über ein Named Pipe namens “AviraOptimizerHost” (\.pipeAviraOptimizerHost). Die Schwachstelle lag in der unzureichenden Validierung des aufrufenden Clients sowie in fehlerhaften Prüfungen für gestartete ausführbare Dateien. Dies erlaubte es bösartigem Code, Prozess-Erstellungsanfragen an Avira.OptimizerHost.exe zu senden, was zu einer lokalen Rechteausweitung führte.
Identifizierung und Ausnutzung der Lücke
Die Suche nach Schwachstellen zur Rechteausweitung in Software kann komplex sein. Oft beginnt der Prozess mit grundlegenden Analysen und steigert sich dann in der Komplexität.
Der Ansatz zur Schwachstellenanalyse
Ein typischer Ansatz beinhaltet zunächst den Einsatz von Tools wie PowerUp, die triviale, aber häufige Fehlkonfigurationen identifizieren. Wenn diese keine interessanten Ergebnisse liefern, folgt die Suche nach logischen Schwachstellen. Diese erfordern oft eine detailliertere manuelle Untersuchung. Hierzu gehört die Analyse von global beschreibbaren Verzeichnissen, beschreibbaren Registry-Speicherorten sowie exponierten Named Pipes und RPC-Schnittstellen, beispielsweise mithilfe von NTObjectManager. Ein wichtiger Aspekt der Systemverwaltung unter Windows ist die Handhabung verschiedener Dateiformat 7z, die oft zur Archivierung und Komprimierung genutzt werden und bei der Analyse von Systemdateien relevant sein können.
Das “AviraOptimizerHost” Named Pipe und die SYSTEM-Berechtigung
Bei der Analyse bestehender Named Pipes fiel auf, dass ein Avira-Prozess ein Named Pipe mit einer NULL DACL erstellt hatte. Eine NULL DACL bedeutet im Wesentlichen, dass jedem Benutzer, der eine Verbindung anfordert, voller Zugriff gewährt wird. Dies ist an sich schon interessant, aber nur dann wirklich nützlich, wenn das Pipe von einem privilegierten Avira-Prozess genutzt wird.
Die Überprüfung der Prozess-IDs, die das Pipe nutzen, zeigte, dass tatsächlich ein Avira-SYSTEM-Prozess (Avira.OptimizerHost.exe) darauf zugreift:
Screenshot zeigt, dass das Named Pipe "AviraOptimizerHost" von einem SYSTEM-Prozess genutzt wird und volle Zugriffsrechte hat.
Der nächste Schritt bestand darin, herauszufinden, was Avira.OptimizerHost.exe tatsächlich mit diesem Named Pipe macht. Dies war ein vielversprechender Ansatz, da ein privilegierter Prozess mit einer Ressource interagiert, über die niedrig privilegierte Benutzer die Kontrolle haben. Da Avira.OptimizerHost.exe ein Handle für das Pipe besaß, lag die Vermutung nahe, dass der Prozess Daten verarbeitete, die darüber gesendet wurden.
Umgehung der Client-Validierung
Um dies zu validieren, wurde Avira.OptimizerHost.exe in IDA Pro geöffnet. Nach einiger Untersuchung wurde deutlich, dass der Dienst jeden Client, der sich mit dem “AviraOptimizerHost” Named Pipe verband, validierte, um sicherzustellen, dass es sich um eine gültige Avira-Datei handelte.
Um dieses Named Pipe missbrauchen zu können, musste diese Überprüfung umgangen werden, um erfolgreich Daten an den Dienst über das Named Pipe senden zu können. Der Dienst führte die Prüfung durch, indem er die Prozess-ID des verbindenden Clients über GetNamedPipeClientProcessID() abrief und dann den vollständigen Bildpfad über QueryFullProcessImageNameW() ermittelte.
Code-Ausschnitt, der die Validierung des Client-Prozesses durch Abfrage der Prozess-ID und des vollständigen Bildpfads mittels WinAPI-Funktionen zeigt.
Sobald der Pfad ermittelt wurde, zog der Dienst das Zertifikat des aufrufenden Clients und stellte sicher, dass es von Avira signiert und nicht manipuliert worden war. Die Idee dahinter war, sicherzustellen, dass nur gültige Avira-Prozesse dem Dienst Befehle erteilen konnten. Um dies zu umgehen, konnte man einfach eigenen Code in einen laufenden Avira-Prozess injizieren (oder ein bestehendes Zertifikat klonen).
Analyse des legitimen Clients und möglicher Befehle
Der nächste Schritt war herauszufinden, welche Befehle über das Named Pipe an den Dienst gesendet werden konnten. In solchen Fällen ist es hilfreich, potenzielle legitime Clients zu untersuchen und deren normales Verhalten zu analysieren. Da dieses Pipe Teil des Avira Optimizers ist, wurde die Avira System Speedup-Anwendung genauer betrachtet, da “Optimierung” und “Beschleunigung” synonym sind. Im “System Speedup”-Ordner von Avira wurden die Avira System Speedup-Bibliotheken gefunden. Durch Laden aller Dateien des Ordners in DnSpy und Suche nach Named Pipe-Referenzen stieß man auf Avira.SystemSpeedup.Core.Client.Services.dll, insbesondere auf die Methode StartServiceHost().
Wie vermutet, handelt es sich hierbei um Code zur Verbindung mit dem “AviraOptimizerHost” Named Pipe. Diese Funktion ruft die Methode OptimizerHostCommandsClient.Connect() in der Klasse Avira.Optimizer.Common.Tools.OptimizerHostClient auf, was sehr vielversprechend klingt. Beim Blick auf diese Funktion stellte sich heraus, dass sie lediglich WaitNamedPipe() aufruft, um zu warten, bis das Pipe bereit ist. Danach wird CreateFile verwendet, um ein Handle für das Named Pipe zu erhalten.
C#-Code-Ausschnitt der Connect-Methode, die WaitNamedPipe() und CreateFile() zur Verbindung mit dem Named Pipe verwendet.
Betrachtet man die Methode StartServiceHost() erneut, so instanziiert sie eine Instanz der Klasse Avira.Optimizer.Common.Tools.OptimizerHostClient, verbindet sich mit dem “AviraOptimizerHost” Named Pipe und ruft dann eine interessante Methode namens StartParentProcess() auf.
Die instanziierte Klasse enthielt viele interessante Methoden, darunter: StartProcess, StartParentProcess, StopProcess, AddTask und RemoveTask. Diese Methoden nehmen verschiedene Parameter entgegen und rufen dann SendMessage auf, nachdem die Aufgabe in JSON konvertiert wurde:
Code-Ausschnitt der StartProcess-Methode, die Befehle in JSON umwandelt und über SendMessage() an das Named Pipe sendet.
Die Methode SendMessage() nimmt den JSON-Befehl entgegen und sendet ihn an das “AviraOptimizerHost” Named Pipe, wo der SYSTEM-Prozess Avira.OptimizerHost.exe ihn verarbeitet:
Implementierung der SendMessage()-Methode, die die JSON-Nachricht an das AviraOptimizerHost Named Pipe schreibt.
Die Ausnutzung des StartProcess()-Befehls
In Avira.OptimizerHost.exe lässt sich nachvollziehen, wie der Dienst den JSON-Befehl einliest und die Argumente parst:
Code-Ausschnitt, der zeigt, wie der SYSTEM-Dienst die JSON-Befehle einliest und die Argumente parst.
Wenn wir in diesem Fall die Methode StartProcess() an das Named Pipe senden, extrahiert der Dienst die Parameter “procid”, “exec” (Pfad der ausführbaren Datei), “args” (Argumente) usw. aus dem über das Named Pipe gesendeten JSON-Blob. Von dort folgt er derselben Logik, die zur Validierung des Named Pipes im Client verwendet wurde: Er nimmt den Pfad der ausführbaren Datei aus dem Parameter “exec” und überprüft das Zertifikat der Datei, um sicherzustellen, dass sie zu Avira gehört. Der Dienst verlässt sich auf den Subject und die Seriennummer des Zertifikats (beide vom Angreifer kontrollierbar), sodass es möglich ist, ein Tool wie SigPirate zu verwenden, um das Zertifikat einer gültigen Avira-Anwendung zu klonen und es auf eine benutzerdefinierte Nutzlast anzuwenden.
Viele Nutzer, die Avira 64 Bit Windows 10 verwenden, könnten auch an anderen Software-Downloads interessiert sein, wie zum Beispiel Software zum Entpacken wie WinRAR für archivierte Dateien. Dies unterstreicht die Notwendigkeit, bei allen Downloads und Installationen wachsam zu bleiben.
Schritte zur erfolgreichen lokalen Rechteausweitung (LPE)
Um diese Schwachstelle auszunutzen, waren einige Schritte erforderlich:
- Vorbereitung einer Nutzlast, in diesem Fall eine .NET-Anwendung namens
Avira.SystemSpeedup.RealTime.Client.exe, diecmd.exestartet. - Klonen des Zertifikats einer gültigen Avira-Datei und Anwenden auf die Nutzlast.
- Schreiben von Code, der sich in einen gültigen Avira-Prozess injiziert, die
Avira.Optimizer.Common.Tools.dlllädt und eine Instanz derOptimizerHostClient-Klasse instanziiert. - Verwendung der exponierten Methoden, um eine Verbindung zum “AviraOptimizerHost” Named Pipe herzustellen und Befehle an den Dienst zu senden.
Die Erstellung der Nutzlast und das Klonen des Zertifikats werden hier nicht detailliert beschrieben. Um sich mit dem Named Pipe zu verbinden und Befehle zu senden, können die vorhandenen Avira-Bibliotheken wiederverwendet werden, indem eine Referenz zu Avira.Optimizer.Common.Tools.dll hinzugefügt und der Namespace Avira.Optimizer.Common.Tools.OptimizerHostClient importiert wird. Danach kann einfach eine Instanz der OptimizerHostCommandsClient-Klasse erstellt und eine der interessanten Methoden, wie “StartProcess”, aufgerufen werden.
Um die LPE zu erreichen, musste diese Assembly in einen Avira-Prozess injiziert und der Entrypoint aufgerufen werden. Auch dies ist eine Übung, die dem Leser überlassen bleibt, aber es gibt verschiedene Projekte, die diesen Prozess vereinfachen (https://github.com/ChadSki/SharpNeedle). Der Download von RAR für Linux mag ein anderes Betriebssystem betreffen, doch die zugrunde liegenden Sicherheitsprinzipien der Software-Installation und Ausführung bleiben kritisch.
Nachdem der Code in einen Avira-Prozess injiziert und der obige C#-Code ausgeführt wurde, wird cmd.exe als SYSTEM gestartet, nachdem die Assembly eine Verbindung zum “AviraOptimizerHost” Named Pipe hergestellt und die StartProcess()-Methode mit dem Argument “exec” auf die Nutzlast mit einem geklonten Avira-Zertifikat (in diesem Fall Avira.SystemSpeedup.RealTime.Client.exe) gesendet hat.
Screenshot einer Eingabeaufforderung (cmd.exe), die erfolgreich mit SYSTEM-Berechtigungen gestartet wurde, als Beweis für die lokale Rechteausweitung.
Auch bei der Nutzung von Web-Browsern wie Google Chrome und Yahoo ist Vorsicht geboten, da unsichere Downloads oder Erweiterungen ebenfalls ein Einfallstor für Angreifer sein können, auch wenn sie nicht direkt mit dieser spezifischen Avira-Schwachstelle zusammenhängen.
Die behobene Schwachstelle und Schutzmaßnahmen
Diese Schwachstelle wurde im Avira Optimizer in Version 1.2.0.367 behoben. Nach einer kurzen Überprüfung der Korrektur nutzt Avira nun WinVerifyTrust() und eine explizite Pfad-Whitelist, um sicherzustellen, dass gestartete Prozesse nicht manipuliert werden können. Es ist essentiell, dass Nutzer von avira 64 bit windows 10 stets die aktuellste Version ihrer Sicherheitssoftware verwenden, um vor solchen Bedrohungen geschützt zu sein. Das Herunterladen von InDesign CS2 oder anderen älteren Softwareversionen sollte immer von vertrauenswürdigen Quellen erfolgen, um Kompatibilitätsprobleme oder das Fehlen von Sicherheitsupdates zu vermeiden.
Offenlegungszeitplan
Avira und ihr Entwicklungsteam haben sich bei der Behebung dieser Schwachstelle als äußerst kooperativ erwiesen. Die Kommunikation war konstant, und die Probleme wurden zügig behoben. Im Fall dieses Berichts wurde ein Fix etwa 30 Tage nach der ersten Meldung entwickelt und an die Öffentlichkeit verteilt. Die Zusammenarbeit mit einem Anbieter, der Schwachstellenberichte ernst nimmt und die Erwartungen der Community an 90-Tage-Fixes erfüllt, ist erfreulich.
- Juli 2019: Schwachstelle an das Avira Sicherheitsteam gesendet.
- Juli 2019: Avira bestätigte den Bericht, bemerkte einige Kompilierungsfehler im PoC.
- Juli 2019: Avira reproduzierte die Schwachstelle mit dem bereitgestellten PoC.
- August 2019: Avira teilte mit, dass die Entwickler das Problem behoben hätten, und fragte, ob der Fix getestet werden sollte.
- August 2019: Antwort an Avira mit einem Bypass für den Patch, bereitgestellte aktualisierte PoC und Details.
- August 2019: Avira antwortete, dass die Entwickler einen neuen Fix implementiert hätten, und fragte, ob dieser getestet werden sollte.
- August 2019: Der neue Fix wurde getestet. Avira wurde mitgeteilt, dass er ausreichend erschien.
- August 2019: Fix live geschaltet.
- August 2019: Details veröffentlicht.
Fazit
Die detaillierte Untersuchung der lokalen Rechteausweitung im Avira Optimizer zeigt, wie komplex die Aufrechterhaltung der Softwaresicherheit ist, selbst bei Produkten, die explizit zum Schutz des Benutzers entwickelt wurden. Die Schwachstelle, die eine avira 64 bit windows 10 Installation potenziell verwundbar machte, unterstreicht die Bedeutung einer ständigen Überprüfung und Weiterentwicklung von Sicherheitsmechanismen. Aviras prompte Reaktion und die schnelle Behebung der Lücke sind vorbildlich und demonstrieren ein hohes Verantwortungsbewusstsein gegenüber den Nutzern. Für alle Anwender, insbesondere jene, die auf Windows 10 (64-Bit) setzen, ist es unerlässlich, ihre Avira-Software stets auf dem neuesten Stand zu halten. Stellen Sie sicher, dass Ihr Avira Optimizer und alle anderen Komponenten regelmäßig aktualisiert werden, um von den neuesten Sicherheitsfixes zu profitieren und Ihr System zuverlässig vor Bedrohungen zu schützen. Ihre Wachsamkeit ist der erste Schritt zur Sicherung Ihrer digitalen Umgebung.
