← volver
CVE-2025-24813criticalbajo ataqueCWE-44CWE-502

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

100Vexday Risk Score

Corrige ahora. Ella está bajo explotación confirmada por CISA y tiene exploit funcional público.

ssvc Actcvss 10epss 100%
de la publicación al arma0 días
Publicada en NVD10 mar
1ª PoC27 may
metasploit10 mar
CISA KEV+22d
probabilidad de explotación
100%top 1% de las CVE
explotación observada
CISA + VulnCheck
102 exploit(s) público(s)
Lo que declaran los fabricantes (VEX)

Declaraciones oficiales de los fabricantes en formato CSAF/VEX: si su producto está afectado, ya corregido o descartado — y por qué. Es afirmación del fabricante, no juicio de Vexday.

Afectado
1 producto (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.
Corregido
13 productos (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 · y otros 8
No afectado
5 productos (27 componentes)porque el código vulnerable no está presente en el producto
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
Acción exigida por CISAplazo 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.

Resumen

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.

Detalle 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.

Cómo se explota

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.

Versiones

Afectadas
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).
Corregidas en
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.

Cómo protegerse

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.

Investigado y redactado con IA a partir del advisory del fabricante y análisis públicos, con las fuentes citadas. Verifica siempre la versión corregida en el advisory oficial antes de actuar.
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 encontradas102
exploitdbwww.exploit-db.com/exploits/52134no 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/Alaatk/CVE-2025-24813-POC5githubgithub.com/Erosion2020/CVE-2025-24813-vulhub5githubgithub.com/Mattb709/CVE-2025-24813-Scanner5githubgithub.com/beyond-devsecops/CVE-2025-248134githubgithub.com/AsaL1n/CVE-2025-248134githubgithub.com/cchopin/CVE-Arsenal-Lab4githubgithub.com/N0c1or/CVE-2025-24813_POC3githubgithub.com/EQSTLab/CVE-2025-248133githubgithub.com/Mattb709/CVE-2025-24813-PoC-Apache-Tomcat-RCE3githubgithub.com/AlperenY-cs/CVE-2025-248133githubgithub.com/imbas007/CVE-2025-24813-apache-tomcat3githubgithub.com/MuhammadWaseem29/CVE-2025-248132githubgithub.com/yuzuki-ayanami/CVE-2025-248132githubgithub.com/pirenga/CVE-2025-248132githubgithub.com/La3B0z/CVE-2025-24813-POC2githubgithub.com/f8l124/CVE-2025-24813-POC1githubgithub.com/tonyarris/CVE-2025-24813-PoC1githubgithub.com/sentilaso1/CVE-2025-24813-Apache-Tomcat-RCE-PoC1githubgithub.com/gregk4sec/CVE-2025-248131githubgithub.com/manjula-aw/CVE-2025-248131githubgithub.com/fatkz/CVE-2025-248131githubgithub.com/NamelessSaint8/CVE-2025-24813-POC1githubgithub.com/cyglegit/CVE-2025-248131githubgithub.com/seahcy/CVE-2025-248131githubgithub.com/GadaLuBau1337/CVE-2025-248131githubgithub.com/ftz7/PoC-CVE-2025-248131githubgithub.com/Mega-Starmie/tomcat-cve-2025-24813-lab0githubgithub.com/SebastianMautner/nuclei-CVE-2025-248130githubgithub.com/Affapple/CVE-2025-24813-POC0githubgithub.com/Arthurabriel/POC-CVE-2025-248130githubgithub.com/B1gN0Se/Tomcat-CVE-2025-248130githubgithub.com/gunyakit/CVE-2025-24813-PoC-exploit0githubgithub.com/Makavellik/POC-CVE-2025-24813-Apache-Tomcat-Remote-Code-Execution0githubgithub.com/CEAlbez/CVE-2025-24813-PoC0githubgithub.com/yaleman/cve-2025-24813-poc0githubgithub.com/Heimd411/CVE-2025-24813-noPoC0githubgithub.com/x1ongsec/CVE-2025-248130githubgithub.com/Dhananjayasj/CVE-2025-24813-Apache-Tomcat-Partial-PUT-Deserialization-RCE-0githubgithub.com/JTMH37/Apache-Tomcat-CVE-2025-24813-Lab0githubgithub.com/ThHardvester/CVE-2025-248130githubgithub.com/Loufa0/CVE-2025-248130githubgithub.com/n0n-zer0/Spring-Boot-Tomcat-CVE-2025-248130githubgithub.com/hakankarabacak/CVE-2025-248130githubgithub.com/michael-david-fry/Apache-Tomcat-Vulnerability-POC-CVE-2025-248130githubgithub.com/suil12/CVE-2025-24813_presentation0githubgithub.com/ps-interactive/lab-cve-2025-248130githubgithub.com/e5dfdd568a75282b712b6d93a7a18e12/CVE-2025-248130githubgithub.com/GongWook/CVE-2025-248130githubgithub.com/horsehacks/CVE-2025-24813-checker0vulncheckvulncheck.com/xdb/9c76c97103e5no verificadovulncheckvulncheck.com/xdb/07fe7e5e5771no verificadovulncheckvulncheck.com/xdb/04473f7d3f5bno verificadocve_referencegithub.com/absholi7ly/POC-CVE-2025-24813/blob/main/README.mdno verificadovulncheckvulncheck.com/xdb/d2328688bc63no verificadovulncheckvulncheck.com/xdb/438c59eda6a1no verificadovulncheckvulncheck.com/xdb/8229a5ce661eno verificadovulncheckvulncheck.com/xdb/f95cb1d5b6afno verificadovulncheckvulncheck.com/xdb/930571969654no verificadovulncheckvulncheck.com/xdb/2e3eea69a36dno verificadovulncheckvulncheck.com/xdb/2e8121be4e6cno verificadovulncheckvulncheck.com/xdb/66bfb6dc4529no verificadovulncheckvulncheck.com/xdb/ecda97c5692cno verificadovulncheckvulncheck.com/xdb/62446f11b151no verificadovulncheckvulncheck.com/xdb/9e52fea0ddb5no verificadovulncheckvulncheck.com/xdb/5ff5b290fccdno verificadovulncheckvulncheck.com/xdb/41039969d4bbno verificadovulncheckvulncheck.com/xdb/e48dddb86729no verificadovulncheckvulncheck.com/xdb/c63f2f746a4cno verificadovulncheckvulncheck.com/xdb/40412144ed11no verificadovulncheckvulncheck.com/xdb/a23cfd526be6no verificadovulncheckvulncheck.com/xdb/62ff6f95bed3no verificadovulncheckvulncheck.com/xdb/2ed807c5c32cno verificadovulncheckvulncheck.com/xdb/31ac53ba66b2no verificadovulncheckvulncheck.com/xdb/bec48551a957no verificadovulncheckvulncheck.com/xdb/02795c240160no verificadovulncheckvulncheck.com/xdb/3aff79b6f0d4no verificadovulncheckvulncheck.com/xdb/25d3559a5ca1no verificadovulncheckvulncheck.com/xdb/ff7c931b911dno verificadovulncheckvulncheck.com/xdb/1f1e1835349fno verificadovulncheckvulncheck.com/xdb/181640a7c0aeno verificadovulncheckvulncheck.com/xdb/dbf0b83e164bno verificadovulncheckvulncheck.com/xdb/ae2ed7271091no verificadovulncheckvulncheck.com/xdb/165631271f8bno verificadovulncheckvulncheck.com/xdb/0be326ee4646no verificadovulncheckvulncheck.com/xdb/6ca8e745ffa0no verificadovulncheckvulncheck.com/xdb/bbaae546f620no verificadovulncheckvulncheck.com/xdb/942ba42c027ano verificadovulncheckvulncheck.com/xdb/d7e6efb852d8no verificadovulncheckvulncheck.com/xdb/98e4bf40a0f3no verificadovulncheckvulncheck.com/xdb/afb2366289d2no verificado
⚠ Recursos públicos, para evaluar la exposición de sistemas que controlas o estás autorizado a probar. Prueba solo con autorización.