veilletech.fr
17 sept. Feed du jour
#04 SÉCURITÉ Faille

Parallels : root, et rien à installer sur Intel

Un correctif qui n'existe que sur une puce que vous n'avez pas n'est pas un correctif.

CVE-2026-90894, CVSS 7.8 : un utilisateur local sans droits d'administration obtient root sur un Mac via Parallels Desktop. Le service privilégié prl_disp_service écoute sur une socket accessible en écriture à tous et construit une commande tar à partir d'un chemin de dossier ; un guillemet double y injecte l'option --use-compress-program, exécutée en root. Le correctif n'existe que dans la branche 27, réservée à Apple Silicon.

3 min de lectureintermédiairevidéo 1:18
Partager
Sommaire5 sections
  1. Ce qui se passe
  2. Le mécanisme
  3. Le correctif, et qui ne peut pas l'installer
  4. Vérifier en deux commandes
  5. À retenir

Ce qui se passe

Yuval Moravchick, qui dirige l'équipe de recherche en vulnérabilités de JFrog, a publié ParaShells : une élévation de privilèges locale dans Parallels Desktop for Mac. Un compte ordinaire, sans droits d'administration, obtient root.

L'identifiant est CVE-2026-90894, attribué par JFrog lui-même, qui le note 7,8 sur 10. La démonstration a été faite sur la 26.4.0, build 57513, sur un Mac Apple Silicon. Il n'y a pas d'attaque à distance : il faut du code déjà en cours d'exécution sur la machine, en simple utilisateur.

Le mécanisme

Parallels installe un service d'arrière-plan, prl_disp_service, qui tourne en root — il configure le réseau de l'hôte et décompresse les paquets de machines virtuelles.

Sur la machine testée, la socket du service était accessible en écriture à tous. L'appel de connexion qui suit, PrlSrv_LoginLocal, ne vérifie que les identifiants que le noyau rapporte pour le processus appelant : pas de signature de code Parallels, et un compte non administrateur passe.

Pour installer une VM préparée, le service construit sa commande de décompression comme une seule ligne de texte, puis la redécoupe en arguments avec QProcess::splitCommand de Qt :

TEXT
tar -xf "%1" -C "%2"

L'appelant choisit %2 — c'est le dossier de destination de la nouvelle VM. Un guillemet double dans le nom du dossier ferme la citation trop tôt, et ce qui suit devient des options pour tar au lieu d'un morceau de chemin.

L'option retenue par JFrog est --use-compress-program, qui demande au tar de macOS de passer l'archive à un autre programme. Comme tar tourne ici en root, ce programme aussi. Le script de test écrit une règle sudo sans mot de passe et ouvre un shell root.

Le correctif, et qui ne peut pas l'installer

JFrog situe la correction dans la branche 27. Les dates ne concordent pas : sa chronologie de divulgation donne le 1er septembre 2026 comme jour de publication de la 27.0.0, quand les notes de version de Parallels datent la 27.0.0 du 25 août et la 27.0.1 du 1er septembre. Installer la 27.0.1, build 58670 couvre les deux lectures.

Branche Build la plus récente Correction ? Installable sur
27 27.0.1 (58670), 01/09/2026 Oui, selon JFrog Apple Silicon, macOS Sonoma 14.7+
26 26.4.2 (57518), 08/09/2026 Non, selon JFrog Intel et Apple Silicon

Parallels a retiré la prise en charge des Mac Intel en version 27, en suivant Apple : macOS 26 Tahoe est le dernier macOS pour Intel, macOS 27 est Apple Silicon seulement. Le 25 août, trois semaines avant la publication de la faille, Parallels écrivait aux utilisateurs Intel qu'ils pouvaient rester en version 26 et « s'attendre à de futures mises à jour de sécurité et de maintenance ».

C'est cette ligne-là qui ne contient pas le correctif : « les hôtes qui restent sur la branche 26.x, y compris la 26.4.2, n'ont pas ce changement de décompression », dit l'avis JFrog. Parallels n'a rien publié sur CVE-2026-90894 — sa politique est de ne pas commenter avant qu'un correctif ne soit public — et sa liste des correctifs de sécurité n'a pas été revue depuis mai 2025.

Vérifier en deux commandes

Terminal
defaults read "/Applications/Parallels Desktop.app/Contents/Info" \
  CFBundleShortVersionString
ls -l /var/run/prl_disp_service.socket

À retenir

Une élévation locale paraît secondaire jusqu'à ce qu'on liste ce qui exécute du code en simple utilisateur sur un poste de développeur : une formule Homebrew malveillante, un script d'installation npm empoisonné, un job de build compromis, ou un compte faible sur un Mac partagé. Sur Intel, aucune build n'est décrite comme corrigée, et rien n'annonce de date.