Path traversal and file disclosure vulnerability in Apache HTTP Server 2.4.49
Patch now. It under exploitation confirmed by CISA and has a working public exploit.
Apply updates per vendor instructions.
Summary
Falha de path traversal na normalização de caminhos do Apache HTTP Server 2.4.49, que permite mapear URLs para arquivos fora dos diretórios configurados por diretivas Alias-like (como o document root). Se essas áreas fora do diretório esperado não estiverem protegidas pelo padrão 'require all denied', um atacante remoto e não autenticado consegue ler arquivos arbitrários e, quando CGI está habilitado no path afetado, executar comandos no sistema. Importa porque afeta uma única versão amplamente adotada logo após seu lançamento, teve exploração ativa confirmada quase imediatamente e o patch inicial (2.4.50) foi corrigido de forma incompleta, gerando uma segunda CVE (2021-42013).
Technical detail
A vulnerabilidade (CWE-22, path traversal) está na mudança feita à normalização de caminhos ('path normalization') introduzida especificamente na versão 2.4.49 do httpd. O código responsável por resolver a URL recebida em um caminho de arquivo no sistema não trata corretamente sequências de travessia de diretório quando certos bytes são codificados. O atacante controla o path da requisição HTTP e consegue, através de sequências de '../' codificadas de forma que escapam da validação, fazer o servidor resolver a URL para um arquivo fora do diretório configurado por diretivas Alias, ScriptAlias ou similares — inclusive fora do document root.
How it’s exploited
O vetor é uma requisição HTTP simples, sem autenticação, contra qualquer endpoint que mapeie para um diretório gerenciado por Alias-like directives — o caso documentado publicamente usa o endpoint '/cgi-bin/' com sequências de traversal codificadas (ex.: '.%2e/'). A pré-condição real para exploração de leitura de arquivos é que os arquivos fora do diretório configurado não estejam protegidos pela diretiva padrão 'require all denied' — em instalações com essa proteção intacta, a leitura de arquivos falha. Para RCE, é necessário adicionalmente que mod_cgi (ou extensão equivalente) esteja habilitado para o path aliasado explorado; pesquisadores (Will Dormann, Hacker Fantastic, Tim Wadhwa-Brown) demonstraram RCE tanto em Windows quanto em Linux nessa condição, chamando um shell (`/bin/sh` no Linux) via POST para executar comandos. A CVE está no catálogo KEV da CISA por exploração confirmada em campo, e existem módulo Metasploit, template Nuclei e PoCs públicas — a barreira técnica para exploração é baixa quando a configuração vulnerável existe.
Versions
How to protect
Atualizar para 2.4.51 é a correção completa — a 2.4.50 corrigiu parcialmente CVE-2021-41773, mas o próprio fix foi insuficiente e recebeu CVE-2021-42013 (também corrigida apenas na 2.4.51). Atualizar apenas para 2.4.50 não elimina o risco. Como paliativo quando a atualização não é imediata: garantir que blocos '' com 'Require all denied' estejam configurados fora dos diretórios explicitamente liberados, e desabilitar mod_cgi (ou qualquer handler de scripts) em diretórios aliasados que não precisem dele — isso reduz o impacto de RCE mesmo que a leitura de arquivos ainda seja possível. Não existe mitigação via WAF genérica confiável, já que a exploração usa encoding de caracteres que pode ser normalizado de formas variadas; regras de assinatura tendem a ser contornáveis. A única correção real é a atualização de versão.
How to detect
Em logs de acesso do Apache, procurar por requisições contendo sequências de traversal codificadas em paths que apontam para diretórios com Alias/ScriptAlias, notadamente variações de '/cgi-bin/' seguidas de padrões como '.%2e/' ou codificações duplicadas de '%2e' (ex.: '%%32%65') repetidas múltiplas vezes no path — esse padrão específico foi usado em exploração pública e é um indicador forte de tentativa de exploração. Requisições POST para esses paths com corpo contendo comandos de shell reforçam a suspeita de tentativa de RCE via CGI. A ausência desses padrões não garante que não houve tentativa, já que variações de encoding podem escapar de assinaturas simples.