FICHE CVE

CVE-2026-100713

Publiée le 2026-09-26 · Dernière modification le 2026-09-26

🇫🇷 EN BREF

Les installations de Froxlor utilisant le paramètre non par défaut `system.allow_customer_shell=1` sont concernées. Un attaquant disposant d'un compte client standard peut exploiter une condition de concurrence (race condition) dans le processus de synchronisation des clés SSH pour obtenir un accès root complet au serveur. Cela ne nécessite aucun privilège particulier au-delà d'un compte client, ni aucune interaction de l'utilisateur, car l'attaquant peut tenter l'exploitation à plusieurs reprises jusqu'à ce que le timing soit correct.

CVSS 4.07.1 ÉLEVÉE
Publiée2026-09-26
Dernière modification2026-09-26

DÉTAIL DU VECTEUR CVSS

Vecteur d'attaqueRéseau
Complexité d'attaqueFaible
Prérequis d'attaqueAucun
Privilèges requisFaibles
Interaction utilisateurAucune
Confidentialité (système vulnérable)Élevée
Intégrité (système vulnérable)Aucune
Disponibilité (système vulnérable)Aucune
Confidentialité (système subséquent)Aucune
Intégrité (système subséquent)Aucune
Disponibilité (système subséquent)Aucune

RÉFÉRENCES

Description officielle du NVD (en anglais)

Froxlor 2.3.10 and earlier contain a time-of-check time-of-use (TOCTOU) race condition in the SSH key synchronization cron (lib/Froxlor/Cron/System/SshKeys.php, SshKeys::generateFiles). The containment/symlink validation performed by FileDir::makeCorrectDir()/makeCorrectFile() is done only at check time; the live filesystem path is re-resolved as root at write time (file_put_contents with FILE_APPEND|LOCK_EX, followed by chmod/chown/chgrp), with a database round-trip and file reads in between, and no path or file-descriptor pinning (no O_NOFOLLOW or openat2(RESOLVE_NO_SYMLINKS)). On installations where the non-default setting system.allow_customer_shell=1 grants customers local shell access, a customer can atomically swap their ~/.ssh directory for a symlink after the check and before the write, causing the root-run cron to append the customer's public key to /root/.ssh/authorized_keys and to chown /root/.ssh to the customer, resulting in full root compromise of the panel host. The cron re-runs on every interval, allowing unlimited attempts. This is a residual race that bypasses the check-time fix introduced for GHSA-mq5v-... . The issue is fixed in Froxlor 2.3.12.