CVE-2025-24813: RCE por PUT parcial no Apache Tomcat
Uma vulnerabilidade crítica no Apache Tomcat permite a execução remota de código não autenticado usando apenas duas solicitações HTTP. O ataque explora o recurso PUT parcial do Tomcat para fazer upload de um objeto Java serializado e, em seguida, acionar a desserialização por meio de uma solicitação GET. CVSS 9.8. Afeta o Tomcat 9, 10 e 11 com configuração padrão.
| Atributo | Valor |
|---|---|
| ID do CVE | CVE-2025-24813 |
| Vetor CVSS | AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| CWE | CWE-502: desserialização de dados não confiáveis |
| Publicado | 10 de março de 2025 |
| Exploração | Ativo — PoC público lançado dentro de 30 horas |
O que é CVE-2025-24813?
Apache Tomcat suporta "PUT parcial" — um recurso HTTP que permite aos clientes fazer upload de arquivos grandes em segmentos usando Content-Range cabeçalhos. O Tomcat armazena esses uploads parciais como arquivos temporários em um diretório de trabalho. A vulnerabilidade surge de duas falhas nesta implementação:
- O nome do arquivo temporário é derivado do caminho do URL de upload, que é parcialmente controlado pelo invasor
- Se o mecanismo de persistência de sessão Java estiver habilitado (armazenando sessões em arquivos), o Tomcat poderá desserializar qualquer arquivo no diretório de trabalho que tenha um
.sessionextensão
Um invasor pode combinar essas falhas para fazer upload de um objeto Java serializado malicioso disfarçado de upload parcial e, em seguida, acionar sua desserialização solicitando uma URL que o Tomcat interpreta como uma pesquisa de sessão.
🚨 PoC público em menos de 30 horas
Uma exploração funcional foi publicada no GitHub aproximadamente 30 horas após a divulgação de CVE-2025-24813. O ataque de duas solicitações é trivialmente simples de automatizar, e campanhas de exploração em massa foram observadas em poucos dias. Qualquer servidor Tomcat voltado para a Internet sem patch e com configuração padrão deve ser considerado comprometido.
Versões afetadas
| Versão do Tomcat | Alcance afetado | Versão corrigida |
|---|---|---|
| Apache Tomcat 11.x | 11.0.0-M1 para 11.0.2 | 11.0.3+ |
| Apache Tomcat 10.x | 10.1.0-M1 para 10.1.34 | 10.1.35+ |
| Apache Tomcat 9.x | 9.0.0.M1 para 9.0.98 | 9.0.99+ |
Pré-requisitos para RCE: Ambas as condições devem ser verdadeiras:
- O servlet padrão tem gravação habilitada (
readonly=false) — NÃO é o padrão; deve ser configurado explicitamente - A persistência da sessão baseada em arquivo está configurada - OU gravações parciais de PUT chegam a um caminho acessível para desserialização
Nota sobre pré-requisitos: Algumas fontes relataram inicialmente que os pré-requisitos eram rígidos. No entanto, a análise do mundo real mostrou que certas configurações comuns do Tomcat (incluindo algumas distribuições de servidores de aplicativos) atendem a ambas as condições. Independentemente do patch – a pontuação CVSS reflete as piores condições.
O ataque de duas solicitações
# Request 1: Upload malicious serialized object as partial PUT PUT /.xxxxx HTTP/1.1 Host: target.com Content-Type: application/octet-stream Content-Range: bytes 0-1233/1234 Content-Length: 1234 [serialized Java gadget chain payload — e.g., Commons Collections] # Tomcat stores this as a temp file in work directory # File name derived from URL: .xxxxx → stored as partial upload # Request 2: Trigger deserialization via session lookup GET /.xxxxx HTTP/1.1 Host: target.com Cookie: JSESSIONID=.xxxxx # Tomcat looks up session file matching the session ID # Finds attacker's file → deserializes it → RCE
Por que o Tomcat é um alvo de alto valor
Apache Tomcat é um dos servidores de aplicativos Java mais amplamente implantados em todo o mundo, usado em:
- Aplicativos web Java corporativos
- Aplicativos Spring Boot implantados como arquivos WAR
- Aplicativos J2EE legados
- Aplicativos internos de RH, ERP e negócios
- Microsserviços nativos da nuvem
Um RCE no Tomcat geralmente significa acesso a credenciais de banco de dados, APIs internas e dados comerciais confidenciais armazenados pelos aplicativos em execução nele.
Detecção
# Check Tomcat version /opt/tomcat/bin/version.sh # or check catalina.jar manifest unzip -p /opt/tomcat/lib/catalina.jar META-INF/MANIFEST.MF | grep Implementation-Version # Check for suspicious partial PUT uploads in access logs grep 'PUT' /opt/tomcat/logs/localhost_access_log.* | grep -v '200\|201\|204' grep 'PUT.*Content-Range' /opt/tomcat/logs/localhost_access_log.* # Check for unusual files in Tomcat work directory find /opt/tomcat/work -name "*.session" -newer /opt/tomcat/conf/server.xml find /opt/tomcat/work -type f -newer /opt/tomcat/conf/server.xml # Check if default servlet write is enabled grep -r "readonly" /opt/tomcat/conf/web.xml /opt/tomcat/webapps/
Mitigação
- Corrija imediatamente: Atualize para Tomcat 9.0.99+, 10.1.35+ ou 11.0.3+
- Desative a gravação do servlet padrão (se não for necessário):
<servlet> <servlet-name>default</servlet-name> <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class> <init-param> <param-name>readonly</param-name> <param-value>true</param-value> <!-- Ensure this is true --> </init-param> </servlet> - Desative a persistência de sessão baseada em arquivo: Mude para persistência na memória ou na sessão do banco de dados
- Implante regras do WAF: Bloquear solicitações HTTP PUT com
Content-Rangecabeçalhos se não for necessário - Use filtros de desserialização Java: Configure filtros de serialização Java 9+ para restringir classes desserializáveis
Capacidade de detecção KENSAI
- Detecção de versão do Tomcat: KENSAI identifica versões do Apache Tomcat a partir de cabeçalhos HTTP, páginas de erro e caminhos padrão em todos os ativos voltados para a Internet
- Sondagem segura de exploração: Confirma a capacidade de exploração do CVE-2025-24813 sem executar cargas úteis
- Auditoria de configuração: Verifica a presença de servlet padrão habilitado para gravação e persistência de sessão baseada em arquivo
- Descoberta interna: Encontra instâncias do Tomcat em execução em redes internas por meio de agente ou varredura de rede
- Novo teste automatizado: Confirma a aplicação do patch após a correção
Encontre seus servidores Tomcat expostos antes que os invasores o façam
KENSAI identifica cada instância do Apache Tomcat em seu ambiente e testa CVE-2025-24813 e outras vulnerabilidades críticas do servidor de aplicativos Java.
Verificar vulnerabilidades do Tomcat →