Ferret · Ferret · CVE-2026-34783
Nome do Software Vulnerável e Versões Afetadas: Ferret versões anteriores a 2.0.0-alpha.4
Descrição: Ferret é um sistema declarativo para trabalhar com dados da web. Uma vulnerabilidade de travessia de caminho existe na função de biblioteca padrão IO::FS::WRITE, permitindo que um site malicioso grave arquivos arbitrários no sistema de arquivos da máquina que executa o Ferret. Isso ocorre quando um operador extrai dados de um site que retorna nomes de arquivos contendo sequências '../' e usa esses nomes de arquivos para construir caminhos de saída. Um invasor pode controlar tanto o caminho de destino quanto o conteúdo do arquivo, levando potencialmente à execução remota de código via cron jobs, chaves autorizadas SSH, perfis de shell ou web shells. A vulnerabilidade se deve à falta de sanitização de caminho na função IO::FS::WRITE, que passa diretamente caminhos de arquivo fornecidos pelo usuário para os.OpenFile sem canonização, imposição de diretório base ou rejeição de sequências de travessia. O endpoint da API usado no ataque é 'http://evil.com/api/articles', que retorna um payload JSON contendo nomes de arquivos com sequências de travessia de caminho. O parâmetro vulnerável é o campo 'name' dentro dos dados JSON, que é usado para construir o caminho de saída. A função `IO::FS::WRITE` está diretamente envolvida na vulnerabilidade. O invasor pode segmentar caminhos como '/etc/cron.d/<name>' para execução de comandos, '~/.ssh/authorized keys' para acesso SSH e arquivos de configuração de aplicativos para roubo de credenciais.
Recomendações: Atualize para a versão 2.0.0-alpha.4 ou posterior do Ferret. Como medida temporária, rejeite a travessia de caminho em `IO::FS::WRITE` e `IO::FS::READ` resolvendo o caminho e verificando se ele não contém '..' após a limpeza. Alternativamente, implemente a imposição de diretório base para restringir as operações de FS a um diretório específico.