FlawOpen

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

● CVE-2015-3306 · CVSS 10.0 · Crítica
Pesquisa · FlawOpen

CVE-2015-3306: cópia não autenticada no mod_copy do ProFTPD

A CVE-2015-3306 permitia que clientes sem autenticação usassem comandos do mod_copy do ProFTPD para copiar arquivos no servidor. A correção upstream verifica a autenticação nos dois handlers SITE CPFR e SITE CPTO; a CISA incluiu a falha no KEV em 08/10/2026. Um comunicado conjunto do FBI/CISA/NSA e parceiros, publicado em 8 de outubro de 2026, lista a CVE-2015-3306 entre as CVEs exploradas com sucesso recuperadas dos scripts do MicroScan; não identifica uma vítima nem a data de um incidente para esta CVE.[1], [2], [5], [6]

💡 Explicação em Linguagem Simples (ELI5)

Imagine um funcionário do arquivo que aceita de qualquer pessoa os pedidos “copie este arquivo” e “coloque a cópia aqui”. Não basta conferir apenas um pedido: as etapas de origem e destino precisam pertencer a uma sessão autenticada.[3]

Conceitos Centrais e Termos

SITE CPFR / SITE CPTO
Comandos do mod_copy do ProFTPD que selecionam a origem e o destino de uma cópia no servidor.[3], [5]
mod_copy
Módulo opcional do ProFTPD que implementa comandos de cópia de arquivos no servidor.[3], [5]
CWE-284
Controle de acesso inadequado: uma operação protegida pode ser alcançada sem a autorização exigida pela política.[1]

Mapeamentos de frameworks

Análise de Causa Raiz

Em implantações afetadas do ProFTPD 1.3.5 com mod_copy disponível e habilitado, os handlers copy_cpfr() e copy_cpto() aceitavam o caminho dos comandos SITE CPFR/SITE CPTO sem exigir uma sessão autenticada. A PR upstream #109 adicionou uma verificação do estado autenticado aos dois handlers após as verificações básicas de encaminhamento do comando, mas antes da validação do número mínimo de argumentos, do processamento dos caminhos de origem/destino e das operações de cópia, retornando FTP 530 / EPERM quando a sessão não está autenticada. O módulo continua limitado às permissões do sistema operacional do processo ProFTPD. Portanto, o impacto em arquivos depende dessas permissões e da configuração. O Debian descreveu execução arbitrária de código como possível, não automática; isso exige condições adicionais específicas, como um caminho gravável que seja consumido como código.[3], [5], [4]

Matriz operacional: exposição e verificação de pacotes corrigidos

Estado da implantaçãoO que as fontes confirmamAção de defesa
ProFTPD 1.3.5 com mod_copy disponível e habilitadoO registro do Ubuntu descreve leitura e gravação remotas de arquivos por SITE CPFR e SITE CPTO; o NVD lista ProFTPD 1.3.5 como afetado.Confirme a compilação exata do pacote, o carregamento do módulo e a exposição dos comandos; atualize usando o pacote corrigido da distribuição.
Correção upstream: PR #109 / commit 35b65aaA correção adiciona verificações de autenticação a copy_cpfr() e copy_cpto() antes das operações de cópia.Verifique se ambos os comandos rejeitam sessões não autenticadas; mantenha as permissões do sistema de arquivos como um limite separado.
Debian wheezy / jessie / stretch e sidO Debian corrigiu essas ramificações nas versões 1.3.4a-5+deb7u3, 1.3.5-1.1+deb8u1 e 1.3.5-2, respectivamente.Compare a revisão instalada do pacote Debian com a versão corrigida correspondente; não confie apenas no número da versão upstream.
Suporte a CopyEngine offO PR #109 adiciona a diretiva; a documentação do módulo informa compatibilidade a partir de 1.3.6rc1.Use CopyEngine off quando a versão instalada oferecer suporte e o recurso não for necessário; caso contrário, remova o módulo ou atualize.

Fluxo de Ataque Passo a Paso

Passo 1

Sessão não autenticada alcança mod_copy

O problema se aplica quando o módulo afetado está presente e seus comandos de cópia estão expostos.[5], [1]

Passo 2

Comandos de cópia não verificam autenticação

Antes da correção, CPFR e CPTO podiam prosseguir sem verificar o estado de autenticação da sessão.[3]

Passo 3

Servidor copia dentro dos limites de permissão

A cópia solicitada pode expor ou alterar arquivos acessíveis à conta do serviço; execução de código depende de condições adicionais.[5], [4]

Passo 4

Correção protege as duas operações

A mudança upstream retorna um erro de autenticação em cada handler antes da lógica de cópia.[3]

Código-Fonte: Vulnerável vs. Seguro

O trecho vulnerável omite a verificação de autenticação em copy_cpfr(); o trecho corrigido insere a verificação upstream do estado da sessão antes da validação de argumentos e das alterações de estado. A PR #109 aplica a mesma proteção a copy_cpto(). Este é um trecho de código, não um programa independente.[3]

IMPLEMENTAÇÃO VULNERÁVEL
/* Trecho reduzido de copy_cpfr() antes do PR #109 upstream. */
if (cmd->argc < 3 ||
    strncasecmp(cmd->argv[1], "CPFR", 5) != 0) {
    return PR_DECLINED(cmd);
}
CHECK_CMD_MIN_ARGS(cmd, 3);
/* O tratamento do caminho de origem continua sem uma verificação de autenticação. */
PATCH SEGURO E ROBUSTO
/* Trecho reduzido da correção 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);

Lista de Verificação de Segurança para Engenharia

Fontes