FlawOpen

flawopen.com/Teardowns/cve-2015-3306-proftpd-mod-copy-unauthenticated-file-copy

● CVE-2015-3306 · CVSS 10.0 · Critique
Recherche · FlawOpen

CVE-2015-3306 : copie de fichiers sans authentification dans ProFTPD mod_copy

CVE-2015-3306 permettait à des clients non authentifiés d’utiliser les commandes mod_copy de ProFTPD pour copier des fichiers sur le serveur. Le correctif upstream vérifie l’authentification dans les deux handlers SITE CPFR et SITE CPTO ; la CISA a ajouté la faille au KEV le 08/10/2026. Un avis conjoint du FBI, de la CISA, de la NSA et de leurs partenaires, publié le 8 octobre 2026, cite CVE-2015-3306 parmi les CVE exploitées avec succès et récupérées à partir des scripts MicroScan ; il ne précise ni victime ni date d’incident pour cette CVE.[1], [2], [5], [6]

💡 Explication en Langage Simple (ELI5)

Imaginez un employé des archives qui accepte de n’importe qui les demandes « copiez ce fichier » et « déposez la copie ici ». Vérifier une seule demande ne suffit pas : les étapes de source et de destination doivent toutes deux appartenir à une session authentifiée.[3]

Concepts Clés et Termes

SITE CPFR / SITE CPTO
Commandes ProFTPD mod_copy qui définissent la source et la destination d’une copie côté serveur.[3], [5]
mod_copy
Module ProFTPD facultatif qui fournit des commandes de copie de fichiers côté serveur.[3], [5]
CWE-284
Contrôle d’accès inadéquat : une opération protégée est accessible sans l’autorisation requise.[1]

Correspondances de référentiels

Analyse de Cause Racine

Dans les déploiements concernés de ProFTPD 1.3.5 où mod_copy est disponible et activé, copy_cpfr() et copy_cpto() acceptaient les commandes SITE CPFR/SITE CPTO sans exiger une session authentifiée. La PR upstream #109 a ajouté une vérification de l’état d’authentification dans les deux handlers après les vérifications élémentaires de distribution de la commande, mais avant la validation du nombre minimal d’arguments, le traitement des chemins source/destination et la copie, avec une réponse FTP 530 / EPERM si la session n’est pas authentifiée. Le module reste limité aux droits système du processus ProFTPD ; l’impact sur les fichiers dépend donc de ces droits et de la configuration. Debian indique que l’exécution de code arbitraire est possible, mais pas automatique : elle nécessite des conditions supplémentaires propres au déploiement, par exemple un chemin inscriptible ensuite interprété comme du code.[3], [5], [4]

Matrice opérationnelle : exposition et vérification des paquets corrigés

État du déploiementCe que les sources établissentAction défensive
ProFTPD 1.3.5 avec mod_copy disponible et activéUbuntu décrit la lecture et l’écriture de fichiers à distance via SITE CPFR et SITE CPTO ; NVD indique ProFTPD 1.3.5 comme affecté.Vérifiez le build exact du paquet, le chargement du module et l’exposition des commandes ; installez le paquet corrigé de votre distribution.
Correctif upstream : PR #109 / commit 35b65aaLe correctif ajoute des contrôles d’authentification dans copy_cpfr() et copy_cpto() avant les opérations de copie.Vérifiez que les deux commandes refusent les sessions non authentifiées ; considérez les permissions du système de fichiers comme une limite distincte.
Debian wheezy / jessie / stretch et sidDebian a corrigé ces branches dans 1.3.4a-5+deb7u3, 1.3.5-1.1+deb8u1 et 1.3.5-2, respectivement.Comparez la révision du paquet Debian installé à la version corrigée correspondante ; ne vous fiez pas uniquement au numéro upstream.
Prise en charge de CopyEngine offLa PR #109 ajoute cette directive ; la documentation du module indique une compatibilité à partir de 1.3.6rc1.Utilisez CopyEngine off si la version installée le prend en charge et si la fonctionnalité est inutile ; sinon, retirez le module ou mettez à niveau.

Déroulement de l'Attaque Étape par Étape

Étape 1

Une session non authentifiée atteint mod_copy

Le problème concerne les installations où le module est présent et ses commandes de copie exposées.[5], [1]

Étape 2

Les commandes ne contrôlent pas l’authentification

Avant le correctif, CPFR et CPTO pouvaient continuer sans vérifier l’état d’authentification.[3]

Étape 3

Le serveur copie dans la limite de ses droits

La copie peut exposer ou modifier des fichiers accessibles au compte du service ; l’exécution de code dépend d’autres conditions.[5], [4]

Étape 4

Le correctif protège les deux opérations

Le changement upstream renvoie une erreur d’authentification dans chaque handler avant la logique de copie.[3]

Code Source : Vulnérable vs Sécurisé

L’extrait vulnérable omet le contrôle d’authentification dans copy_cpfr() ; l’extrait corrigé ajoute le contrôle upstream de l’état de session avant la validation des arguments et toute modification d’état. La PR #109 applique la même protection à copy_cpto(). Cet extrait n’est pas un programme autonome.[3]

IMPLÉMENTATION VULNÉRABLE
/* Extrait réduit de copy_cpfr() avant le PR #109 upstream. */
if (cmd->argc < 3 ||
    strncasecmp(cmd->argv[1], "CPFR", 5) != 0) {
    return PR_DECLINED(cmd);
}
CHECK_CMD_MIN_ARGS(cmd, 3);
/* Le traitement du chemin source continue sans vérification d’authentification. */
PATCH SÉCURISÉ ET ROBUSTE
/* Extrait réduit du correctif upstream de copy_cpfr(), PR #109. */
unsigned char *authenticated = NULL;
if (cmd->argc < 3 ||
    strncasecmp(cmd->argv[1], "CPFR", 5) != 0) {
    return PR_DECLINED(cmd);
}
authenticated = get_param_ptr(cmd->server->conf, "authenticated", FALSE);
if (authenticated == NULL || *authenticated == FALSE) {
    pr_response_add_err(R_530, _("Please login with USER and PASS"));
    pr_cmd_set_errno(cmd, EPERM);
    errno = EPERM;
    return PR_ERROR(cmd);
}
CHECK_CMD_MIN_ARGS(cmd, 3);

Liste de Contrôle de Sécurité pour l'Ingénierie

Sources