Rapport CTI technique du 26 octobre 2026
Résumé exécutif
CVE-2026-110447 affecte Collabora Online : Built-in CODE Server (l'application Nextcloud richdocumentscode) avant la version 26.4.303. Il s'agit d'une injection de commande OS (CWE-78) dans le point d'accès proxy.php, exploitable à distance sans authentification lorsque le serveur CODE n'est pas en cours d'exécution. Le score CVSS est de 9.2, classé Critique. La vulnérabilité est exploitée dans la nature depuis septembre 2026. Elle a été ajoutée au catalogue CISA KEV le 23 octobre 2026, avec une échéance de remédiation au 26 octobre 2026.
Le correctif publié est richdocumentscode 26.4.303. Les déploiements Nextcloud avec cette application installée sont exposés, en particulier lorsque le serveur CODE est arrêté après un redémarrage, une mise à niveau ou un plantage. Les serveurs Collabora Online autonomes, les installations Docker ou par paquet de distribution et les offres d'hébergement Collabora ne sont pas affectés. Des webshells PHP ont été retrouvés sur plusieurs instances Nextcloud.
Chronologie
| Date | Événement |
|---|---|
| 10 septembre 2026 | Premières requêtes d'exploitation observées dans les journaux, publiées dans l'issue GitHub #354. |
| 11 septembre 2026 | Ouverture du rapport d'incident dans l'issue GitHub #354. |
| 3 octobre 2026 | Alerte communautaire Nextcloud recommandant une mise à jour immédiate de richdocumentscode. |
| 14 octobre 2026 | Publication de la CVE-2026-110447 et du score CVSS 9.2. |
| 15-16 octobre 2026 | Découverte de webshells supplémentaires et d'un fichier Nx_33143.php via l'analyse d'intégrité Nextcloud. |
| 23 octobre 2026 | Ajout au catalogue CISA KEV, tri forensique requis selon BOD 26-04. |
| 26 octobre 2026 | Échéance de remédiation CISA, date du présent rapport. |
Fiche vulnérabilité
CVE-2026-110447 | CVSS 9.2 Critique | Collabora Online : Built-in CODE Server (richdocumentscode)
Le mécanisme est une injection de commande OS dans proxy.php. L'application Built-in CODE Server utilise un appel PHP exec pour démarrer Collabora. Quand le serveur CODE n'est pas démarré, la requête HTTP transmise à proxy.php?status peut injecter une commande shell. Les journaux publiés montrent des requêtes GET vers /x$(...)/../apps/richdocumentscode/proxy.php?status et /x$(...)/%2e%2e/apps/richdocumentscode/proxy.php?status. L'attaquant combine un chemin relatif encodé, une substitution de commande $(...), une obfuscation des espaces par ${IFS} et un payload encodé en base64 exécuté par sh. Le payload décodé écrit un fichier PHP puis interroge un domaine de rappel avec le résultat de uname -a.
Versions affectées et corrigées:
| Statut | Version ou configuration |
|---|---|
| Affecté | richdocumentscode 26.4.302 et versions antérieures; NVD précise avant 26.4.303. |
| Corrigé | richdocumentscode 26.4.303. |
| Non affecté | richdocumentscode non installé; Collabora via Docker ou paquet de distribution; hébergement Collabora. |
Conditions d'exploitation: accès réseau au point proxy.php?status, aucune authentification requise selon les journaux, et serveur CODE non démarré. La faille est différente de CVE-2025-66208 et n'existe pas dans les serveurs Collabora Online autonomes.
Un PoC public est disponible : l'issue GitHub #354 publie les requêtes HTTP complètes, les payloads décodés et le code du webshell PHP. L'exploitation active est confirmée par NVD, le catalogue CISA KEV et les webshells retrouvés sur des instances Nextcloud. Le tri forensique est requis par BOD 26-04. L'usage par un rançongiciel est inconnu.
Diagramme de la chaîne d'attaque

Analyse technique
Étape 1 : Accès initial via proxy.php
L'attaquant envoie une requête GET vers le chemin /x$(...)/../apps/richdocumentscode/proxy.php?status ou /x$(...)/%2e%2e/apps/richdocumentscode/proxy.php?status. Le composant visé est l'application Nextcloud richdocumentscode. L'injection n'aboutit que si le serveur CODE n'est pas démarré, par exemple après un redémarrage récent.
Étape 2 : Exécution de commande shell
Le chemin contrôlé est passé à un appel PHP exec et interprété par sh. Le payload base64 décode une commande qui crée un fichier PHP via echo et redirection, puis exécute curl ou wget vers webhook.site avec le résultat de uname -a encodé. L'obfuscation ${IFS} remplace les espaces pour contourner certains filtres. Le processus s'exécute avec les privilèges du compte serveur web.
Étape 3 : Dépôt du webshell
Les fichiers créés incluent shrf4645.php, shxa35d0.php et Nx_33143.php, placés dans apps/richdocumentscode. Le code récupéré est &1'); ?> ou une variante . L'attaquant vérifie l'accès par des requêtes ?c=id.
Étape 4 : Découverte et rappel
Une fois le webshell actif, l'attaquant exécute des commandes de découverte ciblant des artefacts de mots de passe et de cryptomonnaie: *.kdbx, wallet.dat, keystore.json, bitwarden, 1password, .bitcoin, .electrum, .monero, .ethereum. Les journaux examinés ne montrent pas de commande explicite d'archivage ou d'exfiltration de fichiers, mais le webshell tournant sous le compte serveur web peut lire ou modifier tout ce qui est accessible à ce compte. Le rappel vers webhook.site transmet des informations système.
Exposition
Sont exposées les instances Nextcloud qui ont installé richdocumentscode et qui exposent proxy.php?status sur Internet, notamment pendant les fenêtres où le serveur CODE est arrêté. La vulnérabilité ne touche pas les serveurs Collabora Online autonomes, ni les déploiements Collabora via Docker ou paquet de distribution, ni les offres d'hébergement Collabora. Un utilisateur du forum indique que l'exploitation a pu se produire même avec l'application désactivée; ce point n'est pas confirmé par l'éditeur dans les extraits disponibles.
Indicateurs de compromission
| Type | Valeur |
|---|---|
| IP source observée | 139.28.18.122 |
| Domaine de rappel | webhook.site |
| Fragment d'identifiant de rappel | 774cf5e1-b... (tronqué dans la source) |
| Fichier webshell | /apps/richdocumentscode/shrf4645.php |
| Fichier webshell | /apps/richdocumentscode/shxa35d0.php |
| Fichier webshell | /apps/richdocumentscode/Nx_33143.php |
| Motif de fichier | /apps/richdocumentscode/shx*.php |
| Motif de requête | GET /apps/richdocumentscode/proxy.php?status avec $(...), ${IFS}, %2e%2e |
| Motif de vérification | ?c=id |
Pistes de détection:
- Revoir les journaux d'accès HTTP à partir du 10 septembre 2026 pour proxy.php?status, chaînes $(...), ${IFS}, %2e%2e et base64.
- Exécuter l'analyse d'intégrité Nextcloud et rechercher tout fichier EXTRA_FILE dans apps/richdocumentscode.
- Rechercher les fichiers PHP inattendus nommés shx*, shrf*, Nx_* et contenant system($_GET ou shell_exec.
- Surveiller les connexions sortantes vers webhook.site et tout domaine de rappel similaire.
- Inspecter les requêtes ?c=id ou ?c= vers ces fichiers.
- Considérer tout accès du compte serveur web aux fichiers confidentiels, kdbx, wallet.dat, keystore.json, comme compromis potentiel.
MITRE ATT&CK
| Tactique | Technique | ID | Justification |
|---|---|---|---|
| Initial Access | Exploit Public-Facing Application | T1190 | Injection OS dans proxy.php accessible par HTTP. |
| Execution | Command and Scripting Interpreter: Unix Shell | T1059.004 | Substitution de commande et exécution via sh. |
| Defense Evasion | Obfuscated Files or Information | T1027 | Encodage base64 et obfuscation des espaces avec ${IFS}. |
| Persistence | Server Software Component: Web Shell | T1505.003 | Dépôt de fichiers PHP webshell dans l'application. |
| Discovery | System Information Discovery | T1082 | Commande uname -a dans le rappel. |
| Credential Access | Unsecured Credentials: Credentials in Files | T1552.001 | Recherche de *.kdbx, wallet.dat, keystore.json, bitwarden, 1password. |
Cette cartographie est une lecture analytique CyberAfrik. Aucune cartographie ATT&CK officielle n'est publiée dans les sources exploitées.
Remédiation : checklist opérationnelle
- Mettre à jour richdocumentscode vers 26.4.303 ou une version ultérieure; c'est le correctif publié.
- Si la mise à jour n'est pas possible immédiatement, retirer l'application richdocumentscode ou discontinuer son usage conformément à la consigne CISA.
- Ne pas considérer le correctif seul comme suffisant: rechercher les webshells déposés via l'analyse d'intégrité Nextcloud et l'inspection de apps/richdocumentscode pour shx*, shrf*, Nx_*.
- Revoir les journaux d'accès depuis le 10 septembre 2026 pour les requêtes proxy.php?status avec substitution de commande.
- Faire pivoter les secrets lisibles par le compte du serveur web: mot de passe de base de données, mots de passe d'application, clés.
- Bloquer ou surveiller les connexions sortantes vers webhook.site et les domaines de rappel.
- Vérifier l'exposition Internet de proxy.php?status et restreindre l'accès si l'application doit rester.