← back
CVE-2022-26352criticalunder attackransomware

CVE-2022-26352

100Vexday Risk Score

Patch now. It under exploitation confirmed by CISA and has a working public exploit.

ssvc Actcvss 9.8epss 91%
from disclosure to weapon0 days
Published on NVDJul 17
metasploitMay 3
CISA KEV+39d
exploitation probability
91%top 1% of all CVEs
observed exploitation
yesCISA + VulnCheck
1 public exploit(s)
Action required by CISAfederal deadline: 2022-09-15

Apply updates per vendor instructions.

Summary

Falha de path traversal na API ContentResource do dotCMS (versões 3.0 a 22.02) permite que o nome de arquivo enviado em um upload multipart escape do diretório de armazenamento de assets e grave o arquivo em outro local do sistema de arquivos. Se o tipo de conteúdo alvo tiver permissão de criação anônima habilitada, um atacante sem autenticação pode depositar um arquivo executável (ex.: .jsp) e obter execução remota de código. O CVSS 9.8 reflete o cenário sem autenticação; em instalações onde a criação anônima de conteúdo está desabilitada (o padrão em muitos deployments corporativos), a exploração exige um usuário autenticado com permissão de escrita de conteúdo, o que reduz bastante o risco real.

Technical detail

O problema está no endpoint de upload de arquivos binários da ContentResource API (REST), usado para associar um arquivo a um campo de conteúdo via requisição multipart/form-data. O nome do arquivo enviado pelo cliente é usado para compor o caminho final de gravação sem normalização prévia contra sequências de travessia de diretório (../), classificando-se como CWE-22 (Path Traversal), combinado com CWE-434/ausência de validação de tipo de arquivo — a CISA classifica o par como CWE-22 e CWE-138 no KEV.

How it’s exploited

O vetor é uma requisição POST multipart contra a API ContentResource (endpoint de conteúdo do dotCMS) contendo uma parte de arquivo cujo campo de nome inclui sequências de travessia de diretório. O servidor grava o arquivo no caminho resultante sem restringi-lo ao repositório de assets, podendo posicioná-lo dentro da árvore da aplicação web servida pelo container servlet. Se a extensão escolhida for .jsp (ou outra reconhecida pelo container como executável) e o local de gravação estiver dentro de um diretório servido publicamente, uma requisição HTTP subsequente para esse arquivo executa código arbitrário com os privilégios do processo do dotCMS/Tomcat.

O pré-requisito decisivo, presente na própria descrição oficial, é o estado da permissão "criação de conteúdo anônima" (CMS Anonymous) sobre o tipo de conteúdo alvo. Com essa permissão concedida — configuração usada em sites que expõem formulários públicos ou envio de arquivos por visitantes não autenticados — o ataque é totalmente pré-autenticação. Sem ela, o atacante precisa de credenciais válidas com permissão de escrita de conteúdo, o que muda o vetor de "crítico remoto anônimo" para "escalonamento por usuário autenticado de baixo privilégio".

Há exploração confirmada: a CVE está no catálogo KEV da CISA desde 25/08/2022 (prazo de correção 15/09/2022), existe PoC pública (via SSD Secure Disclosure/PacketStorm), módulo Metasploit e template Nuclei, o que torna a varredura e exploração em massa triviais para quem tem acesso à API exposta na internet.

Versions

Affected
dotCMS 3.0 até 22.02 (conforme descrição oficial da CVE).
Fixed in
Não confirmado com o texto integral do advisory do fornecedor nas fontes consultadas; a CISA referencia o advisory dotCMS SI-62 como fonte da correção. Antes de considerar o ambiente corrigido, verifique diretamente a nota de release/advisory do fornecedor para a versão que resolve o CVE-2022-26352.

How to protect

A correção definitiva é atualizar o dotCMS para uma versão além de 22.02, que corrige a sanitização do nome de arquivo na ContentResource API — o advisório do fornecedor (SI-62, referenciado pela CISA) trata dessa versão corrigida; confirme o número exato de build na nota de release do seu ramo antes de considerar o ambiente corrigido, pois a fonte consultada aqui não trouxe o texto completo do advisory com o número de versão.

Se a atualização não for possível de imediato, o paliativo real é remover/negar a permissão de criação de conteúdo anônima ("CMS Anonymous") em todos os tipos de conteúdo que aceitam upload de arquivo, e restringir o acesso de rede ao endpoint da ContentResource API a clientes confiáveis. Um WAF ou proxy reverso pode bloquear requisições multipart cujo campo de nome de arquivo contenha sequências de travessia (../, codificações equivalentes), mas isso é controle compensatório, não correção — variações de encoding podem contornar filtros ingênuos.

Não funciona como mitigação apenas desabilitar a execução de JSP no container: dependendo da configuração, outras extensões executáveis (scripts, arquivos de configuração de deploy) podem ser usadas como vetor secundário, e o problema de fundo — gravação fora do diretório pretendido — continua presente.

How to detect

Procure por requisições POST/PUT com Content-Type multipart/form-data direcionadas ao endpoint de conteúdo da ContentResource API (ex.: caminhos sob /api/content) contendo, no campo de nome de arquivo da parte multipart, sequências de travessia de diretório (../, %2e%2e%2f e variantes de encoding). No sistema de arquivos, sinal forte é o aparecimento de arquivos .jsp (ou outras extensões executáveis) fora da estrutura normal de assets do dotCMS, especialmente dentro da árvore do webapp servida pelo container. Correlacione com uma requisição GET subsequente ao mesmo caminho retornando 200 — padrão típico de webshell dropado seguido de acesso de verificação/execução. Não há assinatura única confiável sem visibilidade dos logs de aplicação do dotCMS; ambientes que só logam no nível do proxy podem não capturar o payload multipart completo.

Researched and written with AI from the vendor advisory and public analysis, with the sources above. Always confirm the fixed version in the official advisory before acting.
An issue was discovered in the ContentResource API in dotCMS 3.0 through 22.02. Attackers can craft a multipart form request to post a file whose filename is not initially sanitized. This allows directory traversal, in which the file is saved outside of the intended storage location. If anonymous content creation is enabled, this allows an unauthenticated attacker to upload an executable file, such as a .jsp file, that can lead to remote code execution.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Affected products
n/a · n/a
⚠ Public resources, to assess the exposure of systems you control or are authorized to test. Test only with authorization.