← voltar
CVE-2025-24813criticalsob ataqueCWE-44CWE-502

Apache Tomcat: Potential RCE and/or information disclosure and/or information corruption with partial PUT

100Vexday Risk Score

Corrija agora. Ela está sob exploração confirmada pelo CISA e tem exploit funcional público.

ssvc Actcvss 10epss 100%
da publicação à arma0 dias
Publicada no NVD10 de mar.
1ª PoC27 de mai.
metasploit10 de mar.
CISA KEV+22d
probabilidade de exploração
100%top 1% das CVEs
exploração observada
simCISA + VulnCheck
100 exploit(s) público(s)
O que os fabricantes declaram (VEX)

Declarações oficiais dos fabricantes em formato CSAF/VEX: se o produto deles está afetado, já corrigido ou descartado — e por quê. É afirmação do fabricante, não juízo do Vexday.

Afetado
1 produto (11 componentes)
Red Hat Enterprise Linux 6
workaround: Mitigation for this issue is either not available or the currently available options do not meet the Red Hat Product Security criteria comprising ease of use and deployment, applicability to widespread installation base or stability.
Corrigido
13 produtos (122 componentes)
Red Hat Enterprise Linux AppStream (v. 10) · Red Hat JBoss Web Server 5.8 for RHEL 7 Server · Red Hat JBoss Web Server 5.8 for RHEL 8 · Red Hat JBoss Web Server 5.8 for RHEL 9 · Red Hat JBoss Web Server 6.1 for RHEL 8 · e outros 8
Não afetado
5 produtos (27 componentes)porque o código vulnerável não está presente no produto
Red Hat Enterprise Linux 7 · Red Hat JBoss Web Server 6.1 for RHEL 8 · Red Hat JBoss Web Server 6.1 for RHEL 9 · Red Hat Enterprise Linux 8 · Red Hat Enterprise Linux 9
Ação exigida pela CISAprazo federal: 2025-04-22

Apply mitigations per vendor instructions, follow applicable BOD 22-01 guidance for cloud services, or discontinue use of the product if mitigations are unavailable.

Resumo

Falha de path equivalence (CWE-44) no Default Servlet do Apache Tomcat que, combinada com suporte a PUT parcial, permite escrever, ler ou corromper arquivos fora do diretório de upload pretendido. O CVSS 10.0 reflete o cenário mais grave (RCE via deserialização), mas esse cenário depende de uma cadeia de pré-condições não padrão — na maioria das instalações reais o impacto prático é nulo ou limitado a disclosure/corrupção de arquivos, não execução de código.

Detalhamento técnico

A falha está no tratamento de nomes de arquivo com ponto interno ('file.Name') pelo Default Servlet do Tomcat quando o suporte a escrita (PUT) está habilitado. Um ponto dentro do nome do recurso faz o resolvedor de caminhos internos do Tomcat tratar dois paths como equivalentes quando não deveriam ser — classificado como CWE-44 (Path Equivalence). Isso permite que um PUT direcionado a um caminho 'público' de upload seja resolvido, na prática, para um caminho diferente e sensível, incluindo áreas usadas internamente pelo servidor, como o diretório de persistência de sessões em disco.

O vetor fica mais perigoso porque o suporte a PUT parcial (upload via cabeçalho Content-Range, para retomar uploads grandes) vem habilitado por padrão sempre que o Default Servlet tem escrita ativada. Isso dá ao atacante controle fino sobre o conteúdo final do arquivo escrito, byte a byte, o que é o que possibilita tanto a injeção de conteúdo malicioso em arquivo legítimo quanto a criação de um payload serializado Java completo dentro de um arquivo de sessão.

O caminho para RCE soma CWE-502 (Deserialization of Untrusted Data): se a aplicação usa persistência de sessão baseada em arquivo do Tomcat (FileStore/PersistentManager) com o local de armazenamento padrão, e tem no classpath alguma biblioteca explorável por gadget chain de deserialização (padrão clássico ysoserial, ex. Commons Collections), o atacante escreve um objeto serializado malicioso como se fosse um arquivo de sessão. Quando o Tomcat carrega essa 'sessão' (por exemplo, numa requisição GET normal que force a leitura do ID de sessão), ele desserializa o conteúdo e executa o gadget chain.

O advisory oficial (Mark Thomas, lista oss-security/dev@tomcat) separa explicitamente as duas classes de impacto e suas pré-condições — isso não é uma falha de RCE trivial e direta, é uma cadeia de configurações que precisa estar simultaneamente presente.

Como é explorada

Para o cenário de disclosure/corrupção de arquivos: o Default Servlet precisa ter escrita habilitada (readonly=false — não é o padrão), suporte a PUT parcial (padrão quando escrita está ativa), uma URL de upload 'sensível' que seja subdiretório de uma URL de upload 'pública', e o atacante precisa saber o nome exato dos arquivos sensíveis sendo manipulados. Sem essas condições simultâneas, não há exploração possível — é sem autenticação apenas se o endpoint de PUT já for público, o que por si só já é uma configuração de risco.

Para RCE, soma-se: a aplicação usar persistência de sessão em arquivo com localização padrão de armazenamento, e ter no classpath uma biblioteca vulnerável a deserialização. A PoC pública (absholi7ly/GitHub) demonstra exatamente esse fluxo: envia um PUT parcial contendo um payload serializado (gerado com ysoserial) para um caminho que, por path equivalence, cai no diretório de sessões (ex. via .../uploads/../sessions/), depois força uma requisição (ex. GET a um recurso que carregue aquela sessão) para acionar a deserialização. O próprio autor da PoC chama o cenário de 'teórico' porque depende dessa combinação de fatores — não é um clique único contra qualquer Tomcat exposto.

A CVE está no catálogo KEV da CISA (adicionada em 2025-04-01, prazo 2025-04-22), confirmando exploração ativa observada, e existem módulo Metasploit e template Nuclei públicos, o que reduz drasticamente a barreira técnica para quem já tem um alvo com a configuração vulnerável. O EPSS de ~0.999 indica volume alto de tentativas de exploração/varredura na internet — mas isso mede tentativas, não necessariamente sucesso, dado que a maioria dos Tomcats expostos não tem escrita habilitada no Default Servlet por padrão.

Versões

Afetadas
Apache Tomcat 11.0.0-M1 até 11.0.2; 10.1.0-M1 até 10.1.34; 9.0.0.M1 até 9.0.98. Versões EOL 8.5.0 até 8.5.100 são confirmadamente afetadas; outras versões EOL mais antigas podem também estar vulneráveis (não verificado pelo fornecedor).
Corrigidas em
11.0.3, 10.1.35 e 9.0.98, conforme recomendação oficial da Apache (nota: o advisory lista '9.0.98' tanto como limite superior da faixa afetada quanto como versão corrigida — checar o changelog exato da série 9.0.x ao aplicar patch). Debian LTS publicou backport para tomcat9 na versão 9.0.43-2~deb11u12 (Debian 11 bullseye). Não há versão corrigida para o branch EOL 8.5.x.

Como se proteger

A correção do fornecedor é atualizar para Apache Tomcat 11.0.3, 10.1.35 ou 9.0.98 (conforme publicado pela Apache), que corrigem o tratamento de path equivalence e a interação com PUT parcial. As versões EOL da série 8.5.x (8.5.0 até 8.5.100, confirmadamente afetadas) não recebem patch oficial nesse branch — quem ainda roda 8.5.x precisa migrar para uma versão suportada; distribuições com suporte estendido, como o backport feito pela Debian LTS para tomcat9 (9.0.43-2~deb11u12 no Debian 11), publicam correções próprias fora do calendário da Apache.

Se a atualização não for possível de imediato, o controle compensatório real é garantir que o Default Servlet tenha escrita desabilitada (readonly=true, que já é o padrão de fábrica) — isso por si só elimina toda a cadeia de exploração, já que sem PUT habilitado não há superfície de ataque. Onde a escrita for necessária por design da aplicação, evitar que o path de upload sensível seja subdiretório do path de upload público, e evitar persistência de sessão baseada em arquivo com o storage location padrão reduzem a exposição, mas são paliativos parciais — não fecham completamente a falha de path equivalence subjacente, apenas quebram elos específicos da cadeia até RCE.

O que não funciona como mitigação: assumir que 'meu Tomcat está seguro porque não uso upload de arquivos' sem verificar explicitamente a configuração readonly do Default Servlet em web.xml — muitas aplicações legadas habilitam escrita para funcionalidades específicas e esquecem o detalhe. WAF genérico tem eficácia limitada aqui porque o payload de exploração é um PUT com Content-Range legítimo do ponto de vista de protocolo HTTP; regras precisam ser específicas para o padrão de path equivalence com ponto interno.

Pesquisado e redigido com IA a partir do advisory do fornecedor e de análises públicas, com as fontes acima. Confira sempre a versão corrigida no advisory oficial antes de agir.
Path Equivalence: 'file.Name' (Internal Dot) leading to Remote Code Execution and/or Information disclosure and/or malicious content added to uploaded files via write enabled Default Servlet in Apache Tomcat. This issue affects Apache Tomcat: from 11.0.0-M1 through 11.0.2, from 10.1.0-M1 through 10.1.34, from 9.0.0.M1 through 9.0.98. The following versions were EOL at the time the CVE was created but are known to be affected: 8.5.0 though 8.5.100. Other, older, EOL versions may also be affected. If all of the following were true, a malicious user was able to view security sensitive files and/or inject content into those files: - writes enabled for the default servlet (disabled by default) - support for partial PUT (enabled by default) - a target URL for security sensitive uploads that was a sub-directory of a target URL for public uploads - attacker knowledge of the names of security sensitive files being uploaded - the security sensitive files also being uploaded via partial PUT If all of the following were true, a malicious user was able to perform remote code execution: - writes enabled for the default servlet (disabled by default) - support for partial PUT (enabled by default) - application was using Tomcat's file based session persistence with the default storage location - application included a library that may be leveraged in a deserialization attack Users are recommended to upgrade to version 11.0.3, 10.1.35 or 9.0.99, which fixes the issue.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
PoCs públicas encontradas100
exploitdbwww.exploit-db.com/exploits/52134não verificadogithubgithub.com/absholi7ly/POC-CVE-2025-24813198githubgithub.com/iSee857/CVE-2025-24813-PoC97githubgithub.com/drcrypterdotru/Apache-GOExploiter19githubgithub.com/mbanyamer/Apache-Tomcat---Remote-Code-Execution-via-Session-Deserialization-CVE-2025-24813-19githubgithub.com/charis3306/CVE-2025-2481316githubgithub.com/qzy0x/cve-2025-24813_poc11githubgithub.com/Franconyu/Poc_for_CVE-2025-248139githubgithub.com/x00byte/PutScanner9githubgithub.com/u238/Tomcat-CVE_2025_248137githubgithub.com/msadeghkarimi/CVE-2025-24813-Exploit7githubgithub.com/Shivshantp/CVE-2025-248136githubgithub.com/Erosion2020/CVE-2025-24813-vulhub5githubgithub.com/Mattb709/CVE-2025-24813-Scanner5githubgithub.com/Alaatk/CVE-2025-24813-POC5githubgithub.com/cchopin/CVE-Arsenal-Lab4githubgithub.com/beyond-devsecops/CVE-2025-248134githubgithub.com/AsaL1n/CVE-2025-248134githubgithub.com/imbas007/CVE-2025-24813-apache-tomcat3githubgithub.com/EQSTLab/CVE-2025-248133githubgithub.com/Mattb709/CVE-2025-24813-PoC-Apache-Tomcat-RCE3githubgithub.com/N0c1or/CVE-2025-24813_POC3githubgithub.com/AlperenY-cs/CVE-2025-248133githubgithub.com/pirenga/CVE-2025-248132githubgithub.com/La3B0z/CVE-2025-24813-POC2githubgithub.com/fatkz/CVE-2025-248131githubgithub.com/manjula-aw/CVE-2025-248131githubgithub.com/MuhammadWaseem29/CVE-2025-248131githubgithub.com/cyglegit/CVE-2025-248131githubgithub.com/f8l124/CVE-2025-24813-POC1githubgithub.com/tonyarris/CVE-2025-24813-PoC1githubgithub.com/yuzuki-ayanami/CVE-2025-248131githubgithub.com/gregk4sec/CVE-2025-248131githubgithub.com/seahcy/CVE-2025-248131githubgithub.com/GadaLuBau1337/CVE-2025-248131githubgithub.com/ftz7/PoC-CVE-2025-248131githubgithub.com/NamelessSaint8/CVE-2025-24813-POC1githubgithub.com/hakankarabacak/CVE-2025-248130githubgithub.com/JTMH37/Apache-Tomcat-CVE-2025-24813-Lab0githubgithub.com/Dhananjayasj/CVE-2025-24813-Apache-Tomcat-Partial-PUT-Deserialization-RCE-0githubgithub.com/Loufa0/CVE-2025-248130githubgithub.com/michael-david-fry/Apache-Tomcat-Vulnerability-POC-CVE-2025-248130githubgithub.com/ps-interactive/lab-cve-2025-248130githubgithub.com/n0n-zer0/Spring-Boot-Tomcat-CVE-2025-248130githubgithub.com/Heimd411/CVE-2025-24813-noPoC0githubgithub.com/horsehacks/CVE-2025-24813-checker0githubgithub.com/ThHardvester/CVE-2025-248130githubgithub.com/x1ongsec/CVE-2025-248130githubgithub.com/yaleman/cve-2025-24813-poc0githubgithub.com/sentilaso1/CVE-2025-24813-Apache-Tomcat-RCE-PoC0githubgithub.com/CEAlbez/CVE-2025-24813-PoC0githubgithub.com/Makavellik/POC-CVE-2025-24813-Apache-Tomcat-Remote-Code-Execution0githubgithub.com/Arthurabriel/POC-CVE-2025-248130githubgithub.com/gunyakit/CVE-2025-24813-PoC-exploit0githubgithub.com/suil12/CVE-2025-24813_presentation0githubgithub.com/B1gN0Se/Tomcat-CVE-2025-248130githubgithub.com/GongWook/CVE-2025-248130githubgithub.com/Mega-Starmie/tomcat-cve-2025-24813-lab0githubgithub.com/SebastianMautner/nuclei-CVE-2025-248130vulncheckvulncheck.com/xdb/2e3eea69a36dnão verificadovulncheckvulncheck.com/xdb/2e8121be4e6cnão verificadovulncheckvulncheck.com/xdb/66bfb6dc4529não verificadovulncheckvulncheck.com/xdb/ecda97c5692cnão verificadovulncheckvulncheck.com/xdb/62446f11b151não verificadovulncheckvulncheck.com/xdb/9e52fea0ddb5não verificadovulncheckvulncheck.com/xdb/5ff5b290fccdnão verificadovulncheckvulncheck.com/xdb/41039969d4bbnão verificadovulncheckvulncheck.com/xdb/e48dddb86729não verificadovulncheckvulncheck.com/xdb/c63f2f746a4cnão verificadovulncheckvulncheck.com/xdb/40412144ed11não verificadovulncheckvulncheck.com/xdb/a23cfd526be6não verificadovulncheckvulncheck.com/xdb/62ff6f95bed3não verificadovulncheckvulncheck.com/xdb/2ed807c5c32cnão verificadovulncheckvulncheck.com/xdb/31ac53ba66b2não verificadovulncheckvulncheck.com/xdb/bec48551a957não verificadovulncheckvulncheck.com/xdb/02795c240160não verificadovulncheckvulncheck.com/xdb/3aff79b6f0d4não verificadovulncheckvulncheck.com/xdb/25d3559a5ca1não verificadovulncheckvulncheck.com/xdb/ff7c931b911dnão verificadovulncheckvulncheck.com/xdb/1f1e1835349fnão verificadovulncheckvulncheck.com/xdb/181640a7c0aenão verificadovulncheckvulncheck.com/xdb/dbf0b83e164bnão verificadovulncheckvulncheck.com/xdb/ae2ed7271091não verificadovulncheckvulncheck.com/xdb/165631271f8bnão verificadovulncheckvulncheck.com/xdb/0be326ee4646não verificadovulncheckvulncheck.com/xdb/6ca8e745ffa0não verificadovulncheckvulncheck.com/xdb/bbaae546f620não verificadovulncheckvulncheck.com/xdb/942ba42c027anão verificadovulncheckvulncheck.com/xdb/d7e6efb852d8não verificadovulncheckvulncheck.com/xdb/98e4bf40a0f3não verificadovulncheckvulncheck.com/xdb/afb2366289d2não verificadovulncheckvulncheck.com/xdb/d2328688bc63não verificadovulncheckvulncheck.com/xdb/07fe7e5e5771não verificadocve_referencegithub.com/absholi7ly/POC-CVE-2025-24813/blob/main/README.mdnão verificadovulncheckvulncheck.com/xdb/04473f7d3f5bnão verificadovulncheckvulncheck.com/xdb/9c76c97103e5não verificadovulncheckvulncheck.com/xdb/438c59eda6a1não verificadovulncheckvulncheck.com/xdb/8229a5ce661enão verificadovulncheckvulncheck.com/xdb/f95cb1d5b6afnão verificadovulncheckvulncheck.com/xdb/930571969654não verificado
⚠ Recursos públicos, para você avaliar a exposição de sistemas que controla ou está autorizado a testar. Teste apenas com autorização.