Parallels Desktop führt Windows und Linux in virtuellen Maschinen auf dem Mac aus und installiert dafür den Hintergrunddienst prl_disp_service, der als Root läuft — unter anderem, weil er das Host-Netzwerk einrichtet und VM-Pakete entpackt.
Auf dem von JFrog getesteten System war der Socket, an dem der Dienst lauscht, für alle beschreibbar: Jedes beliebige Programm auf dem Mac konnte sich verbinden. Der anschließende Anmeldeaufruf PrlSrv_LoginLocal prüft lediglich die vom Kernel gemeldeten Anmeldedaten des verbindenden Prozesses. Eine Parallels-Codesignatur ist nicht nötig, und auch ein Konto ohne Administratorrechte kommt durch.
Beim Installieren eines VM-Appliance baut der Dienst den Entpackbefehl als einzelne Textzeile zusammen — tar -xf “%1” -C “%2” — und zerlegt diesen Text anschließend mit Qts QProcess::splitCommand wieder in einzelne Argumente. Einen Teil dieses Textes bestimmt der Aufrufer, denn er wählt den Zielordner der neuen virtuellen Maschine. Ein doppeltes Anführungszeichen im Ordnernamen beendet die Quotierung vorzeitig, sodass alles Nachfolgende nicht mehr als Pfadbestandteil, sondern als zusätzliche Option für tar gilt.
JFrog nutzte dafür –use-compress-program, womit macOS-tar das Archiv zunächst an ein anderes Programm übergibt. Da tar hier als Root läuft, läuft auch dieses Programm als Root. Das Testskript der Forscher legte eine sudo-Regel ohne Passwortabfrage an und öffnete eine Root-Shell.
Demonstriert wurde das auf Parallels Desktop 26.4.0, Build 57513, auf einem Mac mit Apple-Silicon-Chip. Eine normale Installation liefere bereits alles Nötige: installiertes Produkt, laufender Dienst mit vorhandenem Socket und ein lokales Konto mit geringen Rechten. Eine laufende virtuelle Maschine ist nicht erforderlich. Ältere Builds hat JFrog nicht durchgetestet: “Wir haben für diesen Bericht nicht jeden älteren Build regressionsgetestet”, heißt es; stattdessen solle jede Installation als betroffen gelten, die dieselbe InstallAppliance-Entpackvorlage und einen für alle beschreibbaren Dispatcher-Socket aufweist. Bei der App-Store-Ausgabe würden die Dienste womöglich anders gestartet, das zugrunde liegende Risiko sei jedoch dasselbe.
Warum eine rein lokale Lücke zählt, begründet JFrog mit der Häufigkeit von Code, der ohnehin als normaler Nutzer läuft — etwa eine bösartige Homebrew-Formel, ein vergiftetes npm-Installationsskript, ein kompromittierter Build-Job oder ein schwaches Konto auf einem gemeinsam genutzten Labor- oder Schulungs-Mac.
Bei der Fix-Version klaffen die Angaben auseinander. JFrogs Advisory listet alles unterhalb von 27.0.0 als betroffen, der CVE-Eintrag nennt 27.0.0 als nicht betroffen, und JFrogs Offenlegungszeitplan datiert den Fix in 27.0.0 auf den 1. September 2026. Die Release Notes von Parallels setzen 27.0.0 jedoch auf den 25. August 2026 und 27.0.1 auf den 1. September 2026. Wer 27.0.1, Build 58670, installiert, deckt beide Lesarten ab. Ein Herstellereintrag, welcher Build die Änderung enthält, fehlt: Parallels äußert sich nach eigener Aussage erst zu Schwachstellen, wenn ein Fix öffentlich ist; die Liste der Sicherheitskorrekturen wurde seit Mai 2025 nicht überarbeitet.
Parallels Desktop 27 verlangt einen Mac mit Apple Silicon und macOS Sonoma 14.7 oder neuer. macOS 26 Tahoe war die letzte für Intel gebaute macOS-Version, macOS 27 läuft nur noch auf Apple Silicon. Intel-Nutzer verweist Parallels auf Version 26: “Parallels Desktop 26 unterstützt Intel-basierte Macs heute vollständig, und daran wird sich nichts ändern”, schrieb das Unternehmen am 25. August und stellte weitere Sicherheits- und Wartungsupdates in Aussicht. Genau dieser Zweig enthält den Fix laut JFrog nicht: “Hosts, die auf der 26.x-Linie bleiben, einschließlich 26.4.2, haben diese Entpack-Änderung nicht.” Der neueste Build 26.4.2 vom 8. September 2026 nennt in den Notizen nur eine Korrektur für ein Bereitstellungsproblem der Enterprise-Ausgabe.
Zwei nur lesende Befehle zeigen laut JFrog die Betroffenheit an — installierte Version und Zugriffsrechte des Dienst-Sockets. Ein Socket mit srwxrwxrwx auf einem Build um 26.4.0 sei als angreifbar zu behandeln, bis ein gepatchter Build bestätigt ist; ob die Lücke bereits genutzt wurde, zeigen die Befehle nicht. Bis alle Rechner auf einem fehlerbereinigten Build laufen, empfiehlt JFrog, lokale Anmeldungen einzuschränken und alle Macs mit Parallels Desktop zu erfassen. Administratoren mit Geräteverwaltung sollten ihre Versionsregeln prüfen: Eine Richtlinie, die neue Hauptversionen automatisch verteilt, versucht Version 27 auf Intel-Macs zu installieren und scheitert. JFrog weist zudem darauf hin, dass ein Angreifer mit Root-Rechten sich über launchd festsetzen kann — ein Produktupdate würde das nicht beseitigen.
