Vulnerabilità di Nextcloud sfruttata per installare web shell
La vulnerabilità di Nextcloud CVE-2026-110447 è stata sfruttata per installare web shell sui server che eseguivano l'app opzionale Collabora Online - Built-in CODE Server. Una web shell è un piccolo file dannoso che accetta comandi tramite richieste web e li esegue con i permessi dell'account del web server. Tre amministratori hanno segnalato compromissioni su GitHub; il primo attacco registrato risale al 10 settembre 2026.
La falla interessa tutte le versioni di richdocumentscode precedenti alla 26.4.303. Consente a una unauthenticated request, ossia una richiesta inviata senza effettuare l'accesso, di attivare una command injection ed eseguire istruzioni del sistema operativo. Lo sfruttamento è possibile solo quando il document server locale Collabora Online Development Edition (CODE) non è in esecuzione, per esempio durante un aggiornamento, un riavvio o un arresto anomalo. Collabora ha rilasciato la versione 26.4.303 l'11 settembre e ha pubblicato il proprio bollettino di sicurezza il 14 ottobre.
L'app vulnerabile scarica CODE e lo esegue direttamente sull'host Nextcloud, consentendo a Nextcloud Office di modificare documenti senza un server Collabora separato. La descrizione nell'app store la presenta come una soluzione per test locali, uso personale, ambienti non di produzione e piccoli team. I server Collabora Online autonomi non sono interessati. Anche le installazioni che utilizzano soltanto l'app Nextcloud Office, il cui nome di package è richdocuments, non rientrano nella configurazione interessata, indipendentemente dal fatto che il loro document server separato venga eseguito tramite Docker, un package Linux o un provider di hosting.
Il file vulnerabile proxy.php avvia il document server locale quando arriva una richiesta e non vi è nulla in ascolto. Fino alla versione 26.4.302 inclusa, inseriva testo controllato dalla richiesta, compreso il percorso della richiesta, in un comando bash racchiuso tra virgolette doppie. Bash è un programma che interpreta i comandi del sistema operativo e il testo scritto come $(...) all'interno di un simile comando viene eseguito anziché essere trattato come testo ordinario. Un aggressore poteva quindi nascondere un comando nel percorso della richiesta e farlo eseguire come utente del web server quando lo script tentava di avviare CODE.
La semplice disattivazione dell'app non elimina l'esposizione. Il web server può eseguire proxy.php direttamente dalla directory dell'app e il file non carica il codice di Nextcloud necessario a verificare se l'app sia abilitata. Gli amministratori devono installare richdocumentscode 26.4.303 o una versione successiva, oppure rimuovere completamente l'app. Le release corrette richiedono Nextcloud 30 o una versione più recente. Nextcloud 29 e le versioni precedenti sono end of life e continuano a ricevere dallo store una versione vulnerabile dell'app; queste installazioni devono quindi aggiornare Nextcloud o rimuovere l'app integrata.
Il primo amministratore a inviare una segnalazione gestiva diversi server interessati con la versione 26.4.302. I log di due sistemi hanno registrato richieste alle 19:51 del 10 settembre e alle 09:56 dell'11 settembre, entrambe in UTC+2 e provenienti dallo stesso indirizzo IP. Le richieste prendevano di mira proxy.php?status e contenevano nel percorso un comando shell nascosto. Quel comando decodificava una web shell PHP di una sola riga nella directory dell'app e tentava di inviare l'output di uname -a, che descrive il sistema operativo del server, a un indirizzo webhook.site.
Su uno dei server compromessi, l'aggressore ha successivamente cercato database di credenziali e file di wallet di criptovalute. Gli obiettivi della ricerca includevano *.kdbx, wallet.dat e keystore.json, oltre a nomi associati a Bitwarden, 1Password, Bitcoin, Electrum, Monero ed Ethereum. I comandi esaminati non mostravano file archiviati, caricati o copiati altrove. Tuttavia, l'amministratore ha consigliato di considerare potenzialmente esposto qualsiasi elemento leggibile dall'account del web server. Nessuna delle tre segnalazioni mostrava che l'aggressore avesse ottenuto root access, il massimo livello di controllo su un sistema Linux.
Un secondo amministratore ha scoperto un file PHP appena creato dopo che l'integrity check di Nextcloud, che rileva modifiche impreviste, aveva generato un avviso. Un altro è venuto a conoscenza dell'intrusione tramite email che segnalavano tentativi sudo non riusciti, ossia tentativi di eseguire comandi con privilegi più elevati. Dopo che un amministratore ha eseguito l'aggiornamento alla versione 26.4.303, il 14 settembre è arrivata un'altra richiesta simile da un indirizzo IP diverso. Il testo dannoso è comparso nelle opzioni di avvio di CODE, ma non ha creato alcun file shell. Un rappresentante del progetto ha dichiarato che, nella versione aggiornata, l'output allarmante dovrebbe essere innocuo e ha consigliato di rimuovere eventuali file shx*.php rimasti.
Gli amministratori dovrebbero cercare shx*.php in apps/richdocumentscode ed esaminare i log di accesso almeno a partire dal 10 settembre per individuare richieste a /apps/richdocumentscode/proxy.php?status. Gli indicatori segnalati nei percorsi includono %2e%2e, $(, ${IFS} e base64 -d concatenato tramite pipe a sh. I nomi di file osservati erano shrf4645.php, shxa35d0.php, shx5cf91.php, shxd33ce.php, shxf4645.php, shx13a86.php e shx56367.php. La web shell aveva il valore SHA-256 4b9fbd0663fbfd6028fc216ed18e0d6ef3ae498a7fdc97083e4b0ce3cec40562. Gli indirizzi segnalati erano 139.28[.]18[.]122 e 89.38[.]98[.]50, mentre le chiamate di ritorno utilizzavano webhook[.]site con gli ID 45060ed4-de0b-4119-8f0d-2a2776bbd413 e 774cf5e1-b5a4-4174-a1ad-0241861029a2.
La versione 26.4.402, rilasciata il 24 settembre, ha modificato il processo di avvio in modo che ogni opzione venisse passata separatamente. Alcuni amministratori hanno segnalato che questa release non riusciva ad avviarsi o ad aprire documenti nei loro ambienti e sono tornati alla 26.4.303, che è la versione indicata dal bollettino come soluzione. Al 14 ottobre non era disponibile alcuna release successiva. Una precedente correzione per il distinto problema di command injection in proxy.php, CVE-2025-66208, non impedisce CVE-2026-110447.
La cronologia del repository mostra che la correzione di quattro righe è stata scritta il 20 agosto e inserita tramite commit il 9 settembre. La modifica effettuava l'escaping dell'intero comando di avvio come singolo argomento, impedendo che il testo della richiesta venisse espanso dalla shell. La correzione non è stata inclusa nella versione 26.4.302, rilasciata il 31 agosto, mentre le note di rilascio della versione 26.4.303 dell'11 settembre menzionavano soltanto la build di CODE inclusa, senza indicarne l'impatto sulla sicurezza. Un avviso della comunità è apparso il 3 ottobre, mentre il CVE e il bollettino sono stati pubblicati il 14 ottobre. Il bollettino non specifica quando Collabora abbia appreso che la modifica risolveva una falla di sicurezza.
La scheda CVE afferma che lo sfruttamento è avvenuto nei mesi di settembre e ottobre 2026, ma il numero totale di server interessati resta sconosciuto. Le organizzazioni che cercano assistenza per i propri sistemi web più ampi possono prendere in considerazione AEU-I per servizi IT, infrastruttura e consulenza con priorità alla sicurezza. Per gli operatori Nextcloud interessati, le priorità immediate restano aggiornare o rimuovere richdocumentscode, individuare eventuali web shell residue e verificare a quali risorse potesse accedere l'account del web server.