Обычное окно подтверждения удалённого доступа оказалось бесполезно против ошибки, которая срабатывает ещё до появления запроса пользователю. Команда V12 опубликовала рабочий эксплойт AnyPwn для AnyDesk на Linux, позволяющий выполнить команду с правами root без пароля и подтверждения подключения. Для атаки достаточно сетевого доступа к уязвимой службе.
AnyPwn рассчитан на AnyDesk Linux 8.0.2 и атакует сервис через прямое TCP-соединение на порту 7070. Уязвимость находится в обработчике пакетов протокола сеанса и приводит к переполнению буфера в куче. Поскольку служба AnyDesk в Linux обычно работает с правами root, успешная эксплуатация сразу даёт атакующему максимальные системные привилегии и контроль над хостом.
Ошибка возникает при вычислении размера буфера. Обработчик прибавляет 16 байт заголовка к заявленной длине данных, используя 32-битную арифметику без проверки переполнения. Значение 0xFFFFFFF0 после сложения с 0x10 оборачивается в ноль, поэтому программа выделяет слишком маленький участок памяти, но продолжает считать длину пакета огромной и записывает данные за границы буфера.
После повреждения соседних объектов в памяти эксплойт использует ROP-цепочку, то есть собирает выполнение команды из уже существующих фрагментов машинного кода. Атака не гарантирует результат с первой попытки. Если нужный объект не окажется рядом с переполненным буфером, служба просто аварийно завершится. Опубликованные смещения рассчитаны на конкретную сборку 8.0.2.
Специалисты сообщили о проблеме 22 июня, а уже 23 июня AnyDesk выпустила версию 8.0.3. В журнале изменений компания указала лишь исправление ошибки, способной вызвать сбой, без отдельного бюллетеня безопасности. По состоянию на 12 октября у AnyPwn не найден CVE, поэтому официальной оценки CVSS тоже нет. Такая подача могла снизить срочность июньского обновления в глазах администраторов.
Полноценный эксплойт показан только для прямого подключения к TCP 7070. V12 также смогла достичь уязвимого участка кода через ретрансляторы AnyDesk, однако рабочую цепочку получения root через такой маршрут команда не продемонстрировала. AnyDesk ранее заявляла, что проблема ограничена прямыми соединениями Linux, а версии для Windows и macOS не затронуты.
Публичных подтверждений атак с AnyPwn пока нет. Для защиты рекомендуется обновить AnyDesk Linux как минимум до 8.0.3, а лучше сразу до актуальной 8.1.0. Если обновление невозможно, доступ к TCP 7070 следует ограничить доверенными узлами. Ранее в AnyDesk уже находили другую уязвимость, способную нарушить работу программы, но новый AnyPwn опаснее из-за удалённого выполнения команд с root.