Tornar al Blog

Nextcloud i CVE-2026-110447: el forat s'obre quan alguna cosa cau

Prestatgeries metàl·liques d'una sala d'arxiu amb caixes i lligalls de documents
On viuen els documents d'una casa, en paper o en disc, el problema és el mateix: ningú no té apuntat del tot què hi ha. Foto de Mojmir Churavy via Wikimedia Commons (CC0 1.0). Retallada, enfosquida i amb rètols superposats.

El 14 d'octubre Collabora va publicar l'avís de la CVE-2026-110447: injecció de comandes del sistema operatiu, sense autenticació i sense interacció de l'usuari, en una app opcional de Nextcloud que molta gent va instal·lar una tarda per poder obrir documents al navegador. Puntua 9,2 sobre 10 en CVSS 4.0. Ja s'estava explotant des de setembre, amb webshells plantats en servidors d'empreses que no sabien que tenien allò instal·lat.

Fins aquí, un avís més d'un dimecres d'octubre. El que fa que aquest mereixi mitja hora del teu temps és una frase del mateix avís, literal: «The attack only works while the built-in CODE server is not running. So on a container restart, an upgrade, or after a crash.» L'atac només funciona mentre el servidor de documents integrat no s'està executant. En un reinici del contenidor, en una actualització, o després que hagi caigut.

Llegeix-la un altre cop pensant en el teu calendari. La finestra d'explotació és la teva finestra de manteniment. I les altres dues vegades que s'obre són les que no apuntes enlloc: el procés que es va morir dimarts a les tres de la matinada i va tornar sol, i el que es va morir i no va tornar.

Per què el forat necessita que alguna cosa estigui caiguda

L'app es diu Collabora Online - Built-in CODE Server (richdocumentscode) i és la versió «tot en un»: en lloc de muntar un servidor de Collabora a part, posa el motor dins de la mateixa instal·lació de Nextcloud. Per parlar amb aquest motor hi ha un intermediari en PHP, apps/richdocumentscode/proxy.php.

Aquest intermediari té una cortesia que resulta ser la porta: si ningú no contesta a l'altra banda, intenta arrencar el motor ell mateix. Per arrencar-lo construeix una línia de comandes de shell i, en construir-la, hi posa dades que vénen de la petició. Si el que ve a la petició té la forma $(...), el shell no ho tracta com a text: ho executa. I ho executa amb l'usuari del servidor web, que és l'usuari que pot escriure al directori de les apps.

D'aquí surt la precondició. Si el motor s'està executant, l'intermediari es limita a passar la petició i no construeix res: no hi ha comanda, no hi ha injecció. El forat no és un estat permanent del sistema, és un estat transitori. I aquí ve l'incòmode: aquest estat transitori no el provoca l'atacant. El provoques tu, cada vegada que actualitzes. O el provoca el mateix servidor, quan el procés es queda sense memòria a les tantes.

Un apunt per a qui cregui que això ja ho va pedaçar: l'avís dedica una frase a aclarir-ho. «This is not the same path as CVE-2025-66208, and the fix for that issue does not prevent it.» No és el mateix camí que la fallada anterior del mateix component, i haver corregit aquella no et cobreix d'aquesta.

El 9,2 porta una lletra que gairebé ningú no llegeix

El vector complet de l'avís és CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N. La peça que gairebé mai no surt a les notícies és AT:P: Attack Requirements: Present. És un camp que CVSS 4.0 va afegir precisament per a això, per dir que l'atac depèn que es doni una condició de desplegament o d'execució que no sempre hi és. En altres fallades, aquest AT:P és un consol raonable: la condició és rara, o depèn d'una cursa que cal guanyar amb sort.

Aquí no. És el cas més clar que recordem en què posar-se al dia amb les actualitzacions obre, durant uns segons, exactament la porta que les actualitzacions vénen a tancar. No és cap paradoxa profunda: és una propietat de l'arrencada sota demanda. El que sí que canvia és com es llegeix el número, perquè el 9,2 no diu quantes vegades al mes es dóna la condició. Això només ho saps tu, i probablement tampoc.

La teva monitorització diu verd

Pensa en què vigila avui el teu sistema de monitorització sobre aquesta màquina. Gairebé sempre: que el port 443 contesti, que la pàgina d'inici torni 200, que el certificat no caduqui, que el disc no s'ompli. Amb el motor de documents mort, les quatre coses continuen en verd. Nextcloud contesta, la gent entra, els fitxers se sincronitzen i el client d'escriptori no es queixa. L'única cosa que no funciona és obrir un document al navegador, i això gairebé mai no genera un tiquet: genera que algú el descarregui i l'obri al seu portàtil, que és el que hauria fet igualment.

És el mateix patró del qual ja hem escrit en un altre context: la tasca surt en verd i s'ha saltat discos. El verd d'un tauler no diu que tot funcioni; diu que el que mesurem funciona. Nosaltres monitoritzem amb Zabbix i SmokePing i fa anys que tenim la mateixa dèria: l'alerta útil no vigila la portada, vigila el procés. Un check que miri si el motor de documents té el seu socket escoltant no t'hauria protegit de la CVE —el forat existeix precisament mentre no hi ha ningú escoltant— però t'hauria dit una cosa que avui no saps: quantes hores d'aquest mes vas estar en l'estat vulnerable.

El pedaç va sortir com una versió normal

La cronologia:

Data Què va passar
9 sepEs puja el commit que ho corregeix. Títol: «tidy up how the coolwsd launch command is built». Ni la paraula seguretat.
10-11 sepPrimers atacs documentats per administradors: peticions a proxy.php?status el 10 a les 19:51 i l'11 a les 09:56 (hora peninsular). Les víctimes corrien la 26.4.302.
11 sepSurt la 26.4.303, que és la versió corregida. El registre de canvis no menciona que arregli una fallada de seguretat.
14 octEs publica l'avís i la CVE. Trenta-tres dies després que el pedaç estigués disponible.

Durant aquells trenta-tres dies, qui tenia les actualitzacions al dia va estar protegit. Però no per una decisió: per casualitat. Ningú no podia prioritzar un pedaç que ningú no havia marcat com a urgent. És el mirall d'una cosa que vam explicar fa unes setmanes —el pedaç del teu switch feia 97 dies que estava publicat— i convé no treure'n la lliçó fàcil. La fàcil seria «actualitza sempre tot a cegues». La real té matís: el 24 de setembre va sortir la 26.4.402 i, segons un usuari recollit per IT-Connect, el servidor CODE va deixar d'arrencar en instal·lacions on l'open_basedir de PHP-FPM no permet /dev/null. Actualitzar a cegues tampoc no és gratis.

Deshabilitar no és desinstal·lar

L'avís dedica una línia a això i és la línia més important per a qui tingui pressa: «It is not sufficient to disable the app to avoid the problem, it must be upgraded to >= 26.4.303 or removed.» No n'hi ha prou amb deshabilitar l'app: cal actualitzar-la o treure-la.

«Deshabilitat» és un estat que entén Nextcloud, no el servidor web. El fitxer proxy.php continua al disc, dins de la carpeta que Apache o nginx serveixen, i continua sent un PHP executable al qual es pot arribar per URL. Qui demana aquell fitxer no passa per la lògica d'apps de Nextcloud: passa per l'intèrpret de PHP. L'interruptor del tauler d'administració apaga l'app per als teus usuaris, no per a internet.

Si ja t'ha passat

Els informes públics dels administradors afectats i la cobertura tècnica coincideixen en què mirar. Nosaltres no hem respost a cap d'aquests incidents, així que ho passem tal qual, amb la seva procedència: fitxers amb nom shx*.php o shrf*.php (a l'informe públic hi apareixen shxa35d0.php i shrf4645.php) dins d'apps/richdocumentscode, i als registres d'accés peticions a proxy.php?status des del 10 de setembre la ruta de les quals contingui %2e%2e, $( o ${IFS}. Com a adreces associades a l'activitat se citen 139.28.18.122 i 89.38.98.50.

El que van buscar després diu força de qui hi havia a l'altra banda i de per què això no és un problema «de fitxers»: bases de dades de contrasenyes (.kdbx), carpetes de gestors de credencials, carteres de criptomonedes (wallet.dat, keystore.json). Un servidor de fitxers d'empresa és, de fet, el lloc on la gent desa el fitxer del gestor de contrasenyes «mentre» canvia de portàtil. Ja vam tractar aquesta mateixa lliçó amb una altra eina autoallotjada: el panell de dades que també era el clauer. Si trobes alguna cosa, l'ordre no és «esborrar el webshell i continuar»: és rotar credencials, perquè l'accés va durar el que va durar i tu no saps quant.

Quan això no és el teu problema

Ho diem aviat i clar, perquè l'alternativa és que algú passi la tarda buscant una fallada que no té. Afecta només l'app opcional del servidor CODE integrat. No afecta un servidor de Collabora Online muntat a part —ni en Docker, ni amb paquets de Linux, ni allotjat per un tercer— ni el desplegament Nextcloud All-in-One, ni Nextcloud Office si mai no vas instal·lar aquella app. Si la teva instal·lació està en una d'aquestes caselles, tanca la pestanya: avui no et toca.

I una cosa que tampoc no afirmarem: quants servidors hi ha exposats. No ho hem mesurat i no hi ha xifra pública: el nombre de servidors afectats és desconegut, i la premsa especialitzada diu haver preguntat a Nextcloud sense arribar a publicar-ne resposta. Tampoc no és, a dia d'avui, al catàleg de vulnerabilitats explotades de CISA: ho hem comprovat contra la versió 2026.10.16 del catàleg, 1.748 entrades, i la CVE-2026-110447 no hi apareix. Aquest catàleg mai no ha imposat dates a una empresa espanyola —obliga les agències federals nord-americanes—, però és el termòmetre que gairebé tothom mira. Aquí no marca res. Només l'avís del fabricant i el fet que ja s'estigui fent servir.

El que faríem aquesta setmana

  1. Esbrinar si la tens, abans que res. La pregunta no és «fem servir Nextcloud?», és «està instal·lada l'app del servidor CODE integrat i en quina versió?». Són dues preguntes diferents i la segona gairebé mai no té responsable.
  2. Actualitzar a 26.4.303 o superior, o treure-la. Si ningú no edita documents al navegador —i en moltes cases ningú no ho fa—, treure-la és la bona opció: menys superfície i una app menys per mantenir. Deshabilitar-la no compta.
  3. Mirar enrere als registres fins al 10 de setembre buscant els patrons de dalt, i al directori de l'app els fitxers que no has posat tu. Si apareix alguna cosa, això deixa de ser una actualització i passa a ser un incident amb rotació de credencials.
  4. Afegir un check del procés, no de la portada. Que la monitorització sàpiga distingir «la web contesta» de «tots els serveis de la web estan actius». Això no arregla la CVE: arregla que la pròxima caiguda silenciosa la vegis tu abans que ningú.
  5. I la pregunta que generalitza això a tot el teu parc: quins altres serveis tens que arrenquen sols, sota demanda, quan algú els demana? Aquests tenen un estat «parat» que ningú no ha revisat mai. Aquesta fallada no és sobre Nextcloud: és sobre arrencar coses al vol amb dades que vénen de fora.

El que fem nosaltres, i el que no afirmem

No som resellers de cap plataforma concreta i això no és un argument contra el programari autoallotjat: nosaltres el fem servir. Operem contenidors en producció amb Docker Swarm i Kubernetes, amb desplegaments reproduïbles i reversibles des de GitLab, i tenim eines autoallotjades al nostre propi dia a dia —n8n, per exemple— tractades com el que són: serveis de producció, inventariats, amb responsable i amb finestra d'actualització. La diferència entre un servidor de documents propi i un problema no és si és autoallotjat; és si algú té escrit, en algun lloc, que aquella peça existeix i de qui és. Això és la meitat del manteniment informàtic que de debò serveix.

I el que no afirmem: no hem executat l'exploit, no hem respost a cap d'aquests incidents i no sabem quants sistemes hi ha afectats. Els indicadors de dalt són dels informes públics, no de la nostra telemetria.

Fonts (consultades el 17-10-2026): la frase «The attack only works while the built-in CODE server is not running. So on a container restart, an upgrade, or after a crash», la frase «It is not sufficient to disable the app to avoid the problem, it must be upgraded to >= 26.4.303 or removed», la puntuació 9,2 amb el seu vector complet i la versió corregida surten de l'avís de seguretat de Collabora Online (GHSA-g3vx-3m76-fghh, 14-10-2026). La classificació CWE-78 i el «as exploited in the wild in September and October 2026», de la fitxa de la CVE-2026-110447 a la base d'avisos de GitHub. La data i el títol del commit del 9 de setembre, les hores dels dos primers atacs documentats (10-09 19:51 i 11-09 09:56), la versió 26.4.302 de les víctimes, la sortida de la 26.4.303 l'11 de setembre sense menció de seguretat, els problemes d'arrencada de la 26.4.402 en algunes configuracions de PHP-FPM, les adreces IP i els patrons de registre, d'IT-Connect (15-10-2026). Els patrons de webshell shx*.php i shrf*.php i la cerca posterior de bases de contrasenyes, carpetes de gestors de credencials i carteres de criptomonedes, d'IT-Connect i Security Online; els noms de fitxer concrets i les marques de temps, del fil públic on els administradors afectats ho van reportar. Que no hi ha xifra de sistemes afectats i que se li va preguntar a Nextcloud, de BleepingComputer. L'absència al catàleg de vulnerabilitats explotades de CISA l'hem comprovada nosaltres contra la versió 2026.10.16 del catàleg (1.748 entrades). Nostre, i ho acotem: la lectura del AT:P com a condició que produeix el teu propi calendari de canvis, l'argument de per què no n'hi ha prou amb deshabilitar, allò de la monitorització en verd, els cinc passos i l'enquadrament del «quan no és el teu problema» (l'abast exacte del que no està afectat és de l'avís i de BleepingComputer).

Quantes hores va estar caigut el teu servidor de documents aquest mes?

Si la resposta és «no ho sé», tampoc no pots acotar quant temps vas estar exposat. Nosaltres operem plataformes autoallotjades com a serveis de producció —inventari, responsable i finestra d'actualització— a dades i aplicacions, i la vigilància que distingeix «contesta» de «està sencer» és part del suport IT 24x7. Si vols saber quines peces de les teves arrenquen soles i ningú no mira, ho revisem amb tu.

Parlar amb everyWAN

Etiquetes:

Compartir:

Subscriu-te al nostre butlletí

Per rebre històries del món IT, novetats d'everyWAN i ofertes exclusives per a subscriptors, dona't d'alta a la nostra llista de correu

everyWAN
everyWAN