← volver
CVE-2016-8735criticalbajo ataque

CVE-2016-8735

100Vexday Risk Score

Prioriza la corrección. Ella está bajo explotación confirmada por CISA y tiene prueba de concepto pública.

ssvc Actcvss 9.8epss 90%
de la publicación al arma1028 días
Publicada en NVD6 abr
1ª PoC+1028d
CISA KEV+2227d
probabilidad de explotación
90%top 1% de las CVE
explotación observada
CISA + VulnCheck
1 exploit(s) público(s)
Acción exigida por CISAplazo federal: 2023-06-02

Apply updates per vendor instructions.

Resumen

Falha de deserialização remota no listener opcional JmxRemoteLifecycleListener do Apache Tomcat, usado para expor JMX via RMI com autenticação/SSL. O Tomcat não replicou a correção que a Oracle aplicou em CVE-2016-3427, deixando a troca de credenciais JMX vulnerável ao mesmo vetor de RCE. O próprio time do Tomcat classificou como 'Important', não crítico, porque o listener não é padrão e expor a porta JMX à rede é configuração rara — o CVSS 9.8 supõe esse cenário incomum como se fosse trivial.

Detalle técnico

O JmxRemoteLifecycleListener é um componente opcional do Tomcat (não habilitado por padrão) que configura um conector JMX RMI com autenticação e, opcionalmente, SSL, para permitir monitoramento remoto da JVM. A Oracle corrigiu em 2016, via CVE-2016-3427, uma falha no mecanismo de troca de credenciais do JMX RMI Connector Server que permitia deserialização de objetos arbitrários antes da autenticação ser validada. O Tomcat mantinha sua própria implementação desse listener e não incorporou o ajuste equivalente, então o mesmo padrão de deserialização insegura (CWE-502) permanecia explorável em quem usasse o listener do Tomcat em vez do padrão puro da JVM.

Cómo se explota

Pré-requisito determinante: a instância precisa ter o JmxRemoteLifecycleListener configurado explicitamente em server.xml — não é comportamento padrão de nenhuma instalação Tomcat — e a porta RMI/JMX resultante precisa estar acessível pela rede ao atacante. Com essas duas condições satisfeitas, o atacante se conecta à porta JMX e explora a deserialização durante a negociação de credenciais, sem precisar de credencial válida, obtendo execução de código no contexto do processo Tomcat/JVM.

A Apache Foundation e a Red Hat descrevem o cenário como raro: poucas instalações usam esse listener, e é 'altamente incomum' que a porta JMX fique exposta a um atacante, mesmo quando o listener está ativo. Isso contradiz a leitura direta do CVSS 9.8 (que assume rede acessível por padrão) — o vetor exige uma configuração de monitoramento avançado que a maioria dos ambientes de produção não expõe externamente.

Existe PoC pública e a CVE está no catálogo KEV da CISA, confirmando exploração real, mas isso reforça o risco para o subconjunto de organizações que efetivamente usam JMX remoto sobre RMI com este listener, não para toda instalação Tomcat.

Versiones

Afectadas
Apache Tomcat 9.0.0.M1 até 9.0.0.M11; 8.5.0 até 8.5.6; 8.0.0.RC1 até 8.0.38; 7.0.0 até 7.0.72; 6.0.0 até 6.0.47. Versões anteriores não suportadas também podem ser afetadas.
Corregidas en
Tomcat 6.0.48 ou posterior; 7.0.73 ou posterior; 8.0.39 ou posterior; 8.5.8 ou posterior (8.5.7 continha o fix mas não foi lançado como binário); 9.0.0.M13 ou posterior (9.0.0.M12 continha o fix mas não foi lançado). Backports aplicados também em Red Hat JBoss Web Server 3.1.0 via RHSA-2017:0455, RHSA-2017:0456 e RHSA-2017:0457.

Cómo protegerse

Solução definitiva é atualizar para Tomcat 6.0.48+, 7.0.73+, 8.0.39+, 8.5.8+ ou 9.0.0.M13+ (o mail da Apache observa que 8.5.7 e 9.0.0.M12 continham a correção mas não chegaram a ser lançados como binários — a recomendação prática é ir para 8.5.8 e 9.0.0.M13). Distribuições derivadas, como JBoss Web Server 3.1.0 (RHSA-2017:0455/0456/0457), empacotaram o mesmo fix.

Se a atualização não for viável de imediato, o paliativo real é: remover ou desabilitar o JmxRemoteLifecycleListener em server.xml caso não seja estritamente necessário, ou, se for necessário, restringir o acesso à porta JMX/RMI via firewall/segmentação de rede a apenas hosts de monitoramento confiáveis — isso neutraliza o pré-requisito de alcançabilidade que a falha exige.

Não adianta tratar isso como problema de aplicação web: a falha está na camada JMX/RMI, fora do pipeline HTTP, então WAF ou hardening de servlet não mitigam. A mitigação de rede (bloquear a porta) é eficaz e de baixo custo justamente porque o vetor de ataque depende inteiramente de conectividade de rede à porta JMX.

Cómo detectar

Não há assinatura confiável em log de acesso HTTP do Tomcat, porque o vetor passa pela camada JMX/RMI, fora do pipeline de requisições web. O sinal a procurar é tráfego de rede em direção à porta configurada para o JmxRemoteLifecycleListener (porta custom, definida em server.xml, distinta das portas HTTP/AJP padrão) originado de IPs não pertencentes à infraestrutura de monitoramento legítima, e conexões RMI seguidas de payloads de deserialização anômalos. Auditar server.xml em busca do listener configurado é o primeiro passo para saber se o ambiente sequer está exposto a este vetor.

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.
Remote code execution is possible with Apache Tomcat before 6.0.48, 7.x before 7.0.73, 8.x before 8.0.39, 8.5.x before 8.5.7, and 9.x before 9.0.0.M12 if JmxRemoteLifecycleListener is used and an attacker can reach JMX ports. The issue exists because this listener wasn't updated for consistency with the CVE-2016-3427 Oracle patch that affected credential types.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
PoCs públicas encontradas1
githubgithub.com/ianxtianxt/CVE-2016-87350
⚠ Recursos públicos, para evaluar la exposición de sistemas que controlas o estás autorizado a probar. Prueba solo con autorización.