Уязвимость ParaShells в Parallels Desktop for Mac позволяет программе, запущенной обычным локальным пользователем, получить права root. Администраторская учётная запись и работающая виртуальная машина для атаки не нужны. Напрямую через сеть брешь не эксплуатируется: злоумышленнику сначала требуется запустить код на самом Mac. JFrog присвоила проблеме идентификатор CVE-2026-90894 и оценку 7,8 из 10. Исследование провёл Юваль Моравчик, руководитель группы изучения уязвимостей JFrog. Следов реальных атак компания не обнаружила, а Parallels не публиковала отдельного заявления по этому CVE.

Ошибка находится на стороне macOS, а не внутри виртуальных машин. Parallels устанавливает фоновую службу prl_disp_service, работающую с правами root: она занимается, среди прочего, сетью хоста и распаковкой пакетов виртуальных машин. На тестовом компьютере JFrog сокет /var/run/prl_disp_service.socket был доступен для записи любому пользователю. Поэтому к службе мог подключиться любой локальный процесс, без подписи кода Parallels и без административных полномочий.
При установке виртуального устройства служба формировала текстовую команду tar -xf "%1" -C "%2", после чего Qt-функция QProcess::splitCommand разбивала её на аргументы. Вызывающий процесс управлял именем папки назначения. Двойная кавычка в этом имени преждевременно закрывала кавычки команды и позволяла подставить дополнительные параметры tar. JFrog использовала --use-compress-program: этот параметр заставляет macOS tar передать архив другой программе. Поскольку сам tar запущен от root, выбранная программа получает те же права. В доказательстве концепции исследователи добавили правило sudo без пароля и открыли корневую оболочку.
Атаке всё же нужен первоначальный вход. Им может стать вредоносная формула Homebrew, отравленный установочный скрипт npm, скомпрометированное задание сборки или слабая учётная запись на общем Mac в лаборатории либо учебном классе. После повышения привилегий злоумышленник способен закрепиться через launchd. Тут есть неприятная деталь: последующее обновление Parallels закроет исходную брешь, но не обязательно удалит уже созданный механизм постоянного доступа.
JFrog воспроизвела ParaShells на Apple silicon Mac с Parallels Desktop 26.4.0, сборка 57513. Все прежние выпуски отдельно не проверялись. Установку следует считать потенциально уязвимой, если в ней сохранились шаблон распаковки InstallAppliance и доступный всем на запись сокет диспетчера. Версия из App Store может иначе запускать службы, однако JFrog считает базовый риск сходным.
По данным JFrog, уязвимы все версии ниже 27.0.0, а в 27.0.0 исправление уже присутствует; запись CVE также помечает этот выпуск как неуязвимый. С датами вышла путаница. В хронологии JFrog версия 27.0.0 появилась 1 сентября 2026 года, тогда как примечания Parallels называют 25 августа 2026 года. На 1 сентября у Parallels датирована уже 27.0.1. Поэтому наиболее безопасный из точно названных вариантов — Parallels Desktop 27.0.1, сборка 58670, выпущенная 1 сентября 2026 года. Точную сборку с исправлением производитель не указал. Его перечень исправлений безопасности не пересматривался с мая 2025 года и CVE-2026-90894 не содержит.
Для Parallels Desktop 27 требуются процессор Apple silicon и macOS Sonoma 14.7 либо новее. На старых системах, включая Ventura 13, установщик разворачивает прежнюю версию Parallels. macOS 26 Tahoe стала последней macOS для Intel, а macOS 27 работает только на Apple silicon. Владельцам Intel предписано оставаться на Parallels Desktop 26. Ещё 25 августа 2026 года Parallels обещала продолжать выпускать для этой ветки обновления безопасности и обслуживания.
Проблема в том, что JFrog не обнаружила изменения механизма распаковки в линейке 26.x, включая 26.4.2. Прямое тестирование 26.4.1 и 26.4.2 при этом не заявлено. Новейшая 26.4.2, сборка 57518 от 8 сентября 2026 года, поддерживает Intel и Apple silicon, но её примечания упоминают лишь проблему развёртывания Enterprise-редакции. Неспецифичные журналы изменений Parallels не исключают скрытого исправления, однако подтверждённой защищённой версии для Intel Mac у JFrog нет. Получается редкая ловушка: 27.0.1 содержит нужное изменение, но поставить её на Intel нельзя; 26.4.2 ставится, но исправление в ней не подтверждено.
Версию можно проверить командой defaults read "/Applications/Parallels " CFBundleShortVersionString, а разрешения сокета — ls -l /var/run/prl_disp_service.socket. Строка srwxrwxrwx на сборке около 26.4.0 означает, что систему разумно считать подверженной атаке до подтверждения патча. Эти проверки показывают лишь наличие условий для эксплуатации. Узнать по ним, использовал ли кто-то брешь, нельзя.
Совместимые Mac на Apple silicon следует обновить до новейшего выпуска Parallels Desktop 27. Организациям стоит провести инвентаризацию всех Mac с Parallels, проверить правила версий в системе управления устройствами и временно ограничить локальные входы там, где исправление не подтверждено. Автоматически отправлять версию 27 на Intel Mac нельзя: установка завершится неудачей. Такие компьютеры приходится держать на версии 26 по рекомендации Parallels, учитывая отсутствие опубликованной исправленной сборки и срока её появления. Поиск правил launchd и других следов закрепления нужен отдельно: обычное обновление уже полученный root-доступ не отменяет.

Изображение носит иллюстративный характер
Ошибка находится на стороне macOS, а не внутри виртуальных машин. Parallels устанавливает фоновую службу prl_disp_service, работающую с правами root: она занимается, среди прочего, сетью хоста и распаковкой пакетов виртуальных машин. На тестовом компьютере JFrog сокет /var/run/prl_disp_service.socket был доступен для записи любому пользователю. Поэтому к службе мог подключиться любой локальный процесс, без подписи кода Parallels и без административных полномочий.
При установке виртуального устройства служба формировала текстовую команду tar -xf "%1" -C "%2", после чего Qt-функция QProcess::splitCommand разбивала её на аргументы. Вызывающий процесс управлял именем папки назначения. Двойная кавычка в этом имени преждевременно закрывала кавычки команды и позволяла подставить дополнительные параметры tar. JFrog использовала --use-compress-program: этот параметр заставляет macOS tar передать архив другой программе. Поскольку сам tar запущен от root, выбранная программа получает те же права. В доказательстве концепции исследователи добавили правило sudo без пароля и открыли корневую оболочку.
Атаке всё же нужен первоначальный вход. Им может стать вредоносная формула Homebrew, отравленный установочный скрипт npm, скомпрометированное задание сборки или слабая учётная запись на общем Mac в лаборатории либо учебном классе. После повышения привилегий злоумышленник способен закрепиться через launchd. Тут есть неприятная деталь: последующее обновление Parallels закроет исходную брешь, но не обязательно удалит уже созданный механизм постоянного доступа.
JFrog воспроизвела ParaShells на Apple silicon Mac с Parallels Desktop 26.4.0, сборка 57513. Все прежние выпуски отдельно не проверялись. Установку следует считать потенциально уязвимой, если в ней сохранились шаблон распаковки InstallAppliance и доступный всем на запись сокет диспетчера. Версия из App Store может иначе запускать службы, однако JFrog считает базовый риск сходным.
По данным JFrog, уязвимы все версии ниже 27.0.0, а в 27.0.0 исправление уже присутствует; запись CVE также помечает этот выпуск как неуязвимый. С датами вышла путаница. В хронологии JFrog версия 27.0.0 появилась 1 сентября 2026 года, тогда как примечания Parallels называют 25 августа 2026 года. На 1 сентября у Parallels датирована уже 27.0.1. Поэтому наиболее безопасный из точно названных вариантов — Parallels Desktop 27.0.1, сборка 58670, выпущенная 1 сентября 2026 года. Точную сборку с исправлением производитель не указал. Его перечень исправлений безопасности не пересматривался с мая 2025 года и CVE-2026-90894 не содержит.
Для Parallels Desktop 27 требуются процессор Apple silicon и macOS Sonoma 14.7 либо новее. На старых системах, включая Ventura 13, установщик разворачивает прежнюю версию Parallels. macOS 26 Tahoe стала последней macOS для Intel, а macOS 27 работает только на Apple silicon. Владельцам Intel предписано оставаться на Parallels Desktop 26. Ещё 25 августа 2026 года Parallels обещала продолжать выпускать для этой ветки обновления безопасности и обслуживания.
Проблема в том, что JFrog не обнаружила изменения механизма распаковки в линейке 26.x, включая 26.4.2. Прямое тестирование 26.4.1 и 26.4.2 при этом не заявлено. Новейшая 26.4.2, сборка 57518 от 8 сентября 2026 года, поддерживает Intel и Apple silicon, но её примечания упоминают лишь проблему развёртывания Enterprise-редакции. Неспецифичные журналы изменений Parallels не исключают скрытого исправления, однако подтверждённой защищённой версии для Intel Mac у JFrog нет. Получается редкая ловушка: 27.0.1 содержит нужное изменение, но поставить её на Intel нельзя; 26.4.2 ставится, но исправление в ней не подтверждено.
Версию можно проверить командой defaults read "/Applications/Parallels " CFBundleShortVersionString, а разрешения сокета — ls -l /var/run/prl_disp_service.socket. Строка srwxrwxrwx на сборке около 26.4.0 означает, что систему разумно считать подверженной атаке до подтверждения патча. Эти проверки показывают лишь наличие условий для эксплуатации. Узнать по ним, использовал ли кто-то брешь, нельзя.
Совместимые Mac на Apple silicon следует обновить до новейшего выпуска Parallels Desktop 27. Организациям стоит провести инвентаризацию всех Mac с Parallels, проверить правила версий в системе управления устройствами и временно ограничить локальные входы там, где исправление не подтверждено. Автоматически отправлять версию 27 на Intel Mac нельзя: установка завершится неудачей. Такие компьютеры приходится держать на версии 26 по рекомендации Parallels, учитывая отсутствие опубликованной исправленной сборки и срока её появления. Поиск правил launchd и других следов закрепления нужен отдельно: обычное обновление уже полученный root-доступ не отменяет.