Обычный пользователь Mac без прав администратора может выполнить свой код с правами root, если на компьютере установлен Parallels Desktop 26.4.0 (сборка 57513). Уязвимость нашёл Юваль Морабчик из группы исследования уязвимостей JFrog. Она получила имя ParaShells и идентификатор CVE-2026-90894. Атака не требует ни запущенной виртуальной машины, ни административных прав, ни клиентского приложения, подписанного Parallels. Достаточно установленного продукта и работающей привилегированной службы.
Уязвимость CVE-2026-90894
Эта служба работает от имени root. Она настраивает сеть, регистрирует виртуальные машины и распаковывает готовые образы, то есть заранее собранные пакеты с операционной системой внутри. Программы общаются с ней через локальный сокет Unix. На уязвимых установках сокет был доступен на запись всем учётным записям машины. Поэтому подключиться к нему мог любой локальный процесс.
Дальше срабатывает слабая проверка клиента. Механизм локального входа принимал соединения от неподписанных программ. Он опирался на учётные данные процесса, которые сообщает ядро системы, и не проверял, что клиент создан Parallels. Значит, обычная локальная учётная запись вызывала привилегированные операции, в том числе установку готового образа.
Вторая уязвимость прячется в распаковке архива с образом. Служба собирает команду для архиватора как одну строку, а путь для распаковки берёт у пользователя. Затем строка проходит через процедуру разбора, которая заново расставляет кавычки и делит текст на отдельные аргументы. Кавычка внутри пути закрывает кавычку раньше времени. Остаток строки превращается в лишние флаги архиватора.
Речь идёт о подстановке аргументов, а не о привычном внедрении команд. Оболочка в этой схеме не участвует, поэтому точки с запятой и подстановки команд бесполезны. Атакующий дописывает архиватору опцию, которая запускает внешнюю программу при обработке файла. Служба вызывает архиватор от имени root, и внешняя программа наследует те же права.
Установка готовых образов рассчитана на доверенные каталоги Parallels, однако служба принимает запрос от любого локального процесса. Для запуска атаки нужен лишь правдоподобный пакет. Служба проверяет, что ссылка на пакет похожа на адрес загрузки, а контрольная сумма и размер совпадают с содержимым. Эти проверки атакующий проходит без труда, поскольку готовит архив сам.
Цепочка получается короткой. Атакующему нужен локальный доступ к Mac с уязвимой версией. Затем он передаёт собранный пакет с образом, входит в службу как обычный пользователь и указывает подготовленный путь установки. Распаковка может завершиться ошибкой, но вложенная программа уже отработает с повышенными правами. Установка часто возвращает сообщение о сбое, и это ничего не меняет.
Сильнее всего рискуют рабочие станции разработчиков, общие учебные машины и корпоративные Mac с Parallels Desktop. Вредоносный пакет из репозитория, поддельный установщик или испорченный конвейер сборки работает под обычной учётной записью. С такой уязвимостью этот код получает контроль над самой macOS, а не только над домашним каталогом пользователя. Права root позволяют подменять системные программы, читать данные других пользователей и закрепляться в режиме автозапуска.
Отдельная роль администратора Parallels для атаки не нужна. Проверка прошла на учётной записи, которая не входила в число локальных администраторов. Полную проверку на более старых сборках исследователи не делали. Любую версию, где сокет остаётся открытым на запись всем, а распаковка образов собирается по той же схеме, разумно считать уязвимой до подтверждения обратного. Версия из App Store запускает службы иначе, но класс риска тот же.
Хронология раскрытия укладывается в два месяца. Тринадцатого июля 2026 года исследователи подтвердили переход от непривилегированного пользователя к root на сборке 57513 для Apple silicon. Четырнадцатого июля они сообщили о находке разработчикам Parallels. Первого сентября вышел Parallels Desktop 27.0.0 с исправлением. Четырнадцатого сентября опубликовали идентификатор CVE-2026-90894, а днём позже - отчёт с описанием методики.
Администраторам первым делом нужно обновить Parallels Desktop до 27.0.0. Пока обновление не установлено, полезно сократить число локальных учётных записей на машинах с этим продуктом. Проверьте также режим доступа к сокету привилегированной службы. Если он открыт на запись всем, установку считать уязвимой. В журналах ищите неожиданные дочерние процессы архиватора, сценарии, запущенные от root, и правки в конфигурации sudo или в списках автозапуска.
Привилегированные вспомогательные службы есть в любом продукте виртуализации, и именно они притягивают внимание исследователей. Чаще всего слабое место - не сама виртуальная машина, а канал, по которому обычная программа просит службу выполнить работу от имени root. Parallels закрыла эту дыру в 27.0.0, и до установки свежей версии единственной надёжной границей остаётся ограничение локального доступа к машине.
Ссылки