Инструменты9 октября 2026 г., 21:46 МСК🤖 Auto

AnyPwn: Уязвимость RCE в AnyDesk Linux позволяет получить root

Исследователи V12 Security обнаружили критическую уязвимость переполнения буфера в AnyDesk для Linux, позволяющую выполнить произвольный код с правами root до подтверждения сессии.

Баннер новости 9325

Суть уязвимости AnyPwn

Команда V12 Security, в частности Рик де Йагер, обнаружила критическую уязвимость AnyPwn в AnyDesk версии 8.0.2 для Linux. Проблема заключается в обработке пакетов протокола сессии (mode-5 stream packet handler). Сервер доверяет длине полезной нагрузки от удаленного клиента, не проверяя её адекватно, что приводит к переполнению кучи (Heap Buffer Overflow) и удаленному выполнению кода (RCE) до того, как пользователь одобрит подключение к рабочему столу.

Уязвимость исправлена в версии 8.0.3. Примечательно, что производитель, по всей видимости, удалил билд 8.0.2 из публичного доступа сразу после публикации Proof-of-Concept (PoC), что затрудняет тестирование уязвимости на актуальных сборках.

Технические детали эксплуатации

Атака использует ошибку целочисленного переполнения при 32-битной арифметике. При добавлении 16-байтового заголовка объекта к заявленной длине пакета, значение может обернуться до нуля или очень малого числа, что приводит к выделению крошечного буфера в памяти. Однако указатель на объект сохраняет исходную большую логическую длину. Когда AnyDesk копирует данные из пакета, происходит запись за пределами выделенной памяти.

Уязвимый путь доступен как через прямое TCP-соединение на порту 7070, так и через ретрансляционные соединения AnyDesk. Поскольку сервис обычно запускается от имени root, успешная эксплуатация дает полный контроль над системой.

Механика атаки и PoC

Эксплойт AnyPwn использует две стратегии распыления кучи (heap spraying) для повышения надежности:

  • Группировка аллокаторов: Отправка 100 персистентных объектов mode-5 разных размеров (от 0x1 до 0x17f1 с шагом 0x10) для заполнения классов размеров аллокатора.
  • ROP-спрей: Размещение 20 объектов размером 0xf000 байт, содержащих длинную последовательность инструкций ret (sled), за которой следует цепочка ROP. Это позволяет найти точку входа в цепочку выполнения даже при неточном совпадении адресов.

После переполнения буфера атакующий перезаписывает поля диспетчеризации в соседнем объекте-жертве, включая vtable и указатель на стек. Цепочка ROP записывает команду в память и вызывает функцию system() через PLT, выполняя произвольные команды с правами root.

Характеристики уязвимой среды

Для успешной эксплуатации PoC требует точного соответствия смещений (offsets) конкретной сборке. Ниже приведены параметры тестовой среды, в которой была подтверждена работа эксплойта:

Параметр Значение
Версия AnyDesk Linux 8.0.2
SHA-256 бинарного файла 62ee04ad48dc039dd9c927f998e56143c87a9c5e12d28654f78c7f6340394f5a
Платформа Linux x86_64
Тестовая ОС Linux Mint 22.3 (Zena), ядро 6.14.0-37-generic
Уязвимый порт TCP/7070
Статус исправления Исправлено в версии 8.0.3

Рекомендации по безопасности

Владельцам AnyDesk на базе Linux настоятельно рекомендуется обновиться до версии 8.0.3 или новее. Если обновление невозможно, следует ограничить доступ к порту 7070 и убедиться, что сервис AnyDesk не доступен из внешних сетей, так как уязвимость позволяет обходить механизм подтверждения сессии.

Источник: Github ↗