剣 KENSAI
Crítico CVE-2025-24813 Março 2026 · 8 min de leitura

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.


9.8
CRÍTICO
AtributoValor
ID do CVECVE-2025-24813
Vetor CVSSAV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
CWECWE-502: desserialização de dados não confiáveis
Publicado10 de março de 2025
ExploraçãoAtivo — 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:

  1. O nome do arquivo temporário é derivado do caminho do URL de upload, que é parcialmente controlado pelo invasor
  2. 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 .session extensã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 TomcatAlcance afetadoVersão corrigida
Apache Tomcat 11.x11.0.0-M1 para 11.0.211.0.3+
Apache Tomcat 10.x10.1.0-M1 para 10.1.3410.1.35+
Apache Tomcat 9.x9.0.0.M1 para 9.0.989.0.99+

Pré-requisitos para RCE: Ambas as condições devem ser verdadeiras:

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:

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

  1. Corrija imediatamente: Atualize para Tomcat 9.0.99+, 10.1.35+ ou 11.0.3+
  2. 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>
  3. 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
  4. Implante regras do WAF: Bloquear solicitações HTTP PUT com Content-Range cabeçalhos se não for necessário
  5. Use filtros de desserialização Java: Configure filtros de serialização Java 9+ para restringir classes desserializáveis

Capacidade de detecção KENSAI

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 →

Artigos relacionados

FortiClient EMS sob ataque ativo, a Comissão Europeia subisce uma violação CVE-2025-21418: Windows AFD.sys escalonamento de privilégios de dia zero Redirecionando...