Contexte de la vulnérabilité
Parallels Desktop pour Mac exécute un service d’arrière‑plan nommé prl_disp_service avec les privilèges root. Ce service gère le réseau hôte et le déploiement des machines virtuelles. JFrog a identifié une faiblesse, référencée sous le numéro CVE‑2026‑90894, notée 7.8/10, qui expose le socket du service en écriture globale. Ainsi, tout processus local, même sans droits d’administration, peut établir une connexion vers ce socket.
Mécanisme d’exploitation
L’attaque repose sur deux étapes. Premièrement, le processus local envoie une requête d’authentification PrlSrv_LoginLocal qui ne vérifie que les identifiants fournis par le noyau, sans exiger de signature Parallels. Deuxièmement, le service construit la ligne de commande utilisée pour extraire un paquet VM :
tar -xf "%1" -C "%2"Le texte est ensuite découpé par Qt::QProcess::splitCommand. Si le répertoire cible contient un guillemet, la chaîne se ferme prématurément et le reste du texte est interprété comme options supplémentaires de tar. JFrog a injecté l’option --use-compress-program, qui fait appeler un programme externe avant l’extraction. Parce que tar s’exécute avec les privilèges root, le programme invoqué s’exécute également en root, permettant d’ouvrir un shell root ou d’ajouter une règle sudo sans mot de passe. L’exploitation ne nécessite aucun accès réseau ; le code malveillant doit simplement être présent sur la machine, par exemple via un script Homebrew, un paquet npm compromis ou un job CI.
Analyse de l’impact et des limites
Le vecteur local rend la vulnérabilité pertinente sur les postes de travail partagés ou les environnements de laboratoire où plusieurs comptes existent. Aucun VM n’est requis, le service étant actif dès l’installation de Parallels Desktop. La preuve de concept a été réalisée sur la version 26.4.0 (build 57513) fonctionnant sur un Mac Apple silicon. Les machines Intel ne peuvent pas reproduire le test, car la version contenant le correctif (27.0.0) ne s’installe pas sur du matériel Intel. Aucun incident réel n’a été signalé à ce jour, et Parallels n’a pas publié de commentaire officiel.
Correction et portée
Le correctif réside dans Parallels Desktop 27, dont le numéro de version fixe est 27.0.0 (ou 27.0.1, build 58670). Cette version impose comme exigence un processeur Apple silicon et macOS Sonoma 14.7 ou supérieur, excluant donc les Macs Intel. Les utilisateurs de la branche 26.x, y compris la version 26.4.2 (build ??), ne bénéficient d’aucune mise à jour documentée corrigeant le problème. Parallels indique que les éditions App Store peuvent lancer leurs services différemment, mais le risque sous‑jacent demeure identique. En l’absence de correctif pour les machines Intel, la recommandation consiste à rester sur la version 26 tout en appliquant des mesures de mitigation : restreindre les permissions du socket, désactiver le service si non utilisé, et surveiller les scripts exécutés avec des privilèges utilisateur.