← back
CVE-2011-3544criticalunder attackCWE-284

CVE-2011-3544

100Vexday Risk Score

Patch now. It under exploitation confirmed by CISA and has a working public exploit.

ssvc Actcvss 9.8epss 97%
from disclosure to weapon42 days
Published on NVDOct 19
1st PoC+42d
metasploitOct 18
CISA KEV+3788d
exploitation probability
97%top 1% of all CVEs
observed exploitation
yesCISA + VulnCheck
1 public exploit(s)
Action required by CISAfederal deadline: 2022-03-24

Apply updates per vendor instructions.

Summary

Falha no componente de scripting da JRE/JDK (integração com o motor Rhino via javax.script/JSR 223) que permite a um applet Java ou aplicação Java Web Start não confiável escapar da sandbox e executar código arbitrário com os privilégios do usuário local. É uma das CVEs Java mais exploradas da história: virou módulo padrão de kits de exploração (Blackhole, Nuclear) entre 2012 e 2013 e está no catálogo KEV da CISA por exploração ativa confirmada.

Technical detail

O bug (CWE relacionado a controle de acesso ausente, mapeado internamente pela Oracle/OpenJDK como bug 7046823) está na forma como a JRE expõe o motor de scripting Rhino embutido a código não confiável. O componente de scripting não aplicava corretamente as checagens do SecurityManager antes de permitir que um applet ou aplicação Web Start invocasse funcionalidade do motor JavaScript interno da JVM.

Como o SecurityManager é o mecanismo que separa código 'sandboxed' (applet/Web Start não assinado) de código com privilégios totais, a ausência dessa checagem no caminho de scripting permite que o atacante alcance classes e métodos que deveriam estar fora do alcance de um applet — em particular, rotas que permitem desabilitar o próprio SecurityManager ou obter uma referência a um ClassLoader privilegiado.

O atacante não precisa controlar parâmetros de rede, autenticação ou configuração específica do JRE: o vetor é o próprio applet/JNLP malicioso, hospedado numa página web ou entregue como anexo. O único pré-requisito técnico é que a vítima tenha um JRE vulnerável instalado e habilitado no navegador (plugin Java) ou associado a arquivos .jnlp.

A confidencialidade, integridade e disponibilidade completas do CVSS (C:H/I:H/A:H) refletem que, uma vez fora da sandbox, o código roda com os privilégios do processo Java do usuário — equivalente a execução de código arbitrário local, sem elevação adicional necessária na maioria dos casos.

How it’s exploited

A exploração real ocorre via drive-by download: a vítima visita uma página com um applet malicioso (ou abre um arquivo JNLP) servido por um Java Web Start ou embutido via /. O navegador invoca o plugin Java, que carrega e executa o applet não confiável; o applet então aciona o caminho de scripting vulnerável para escapar da sandbox e executar código nativo — instalação de malware, backdoor, etc. Não há necessidade de autenticação, interação complexa da vítima (alguns cliques de 'permitir aplicativo' podem ou não aparecer dependendo da configuração de segurança do plugin) ou acesso à rede interna: é ataque remoto clássico contra cliente.

Esta CVE ficou conhecida por ser a base do módulo Metasploit 'java_rhino' (Java RHINO Script Engine Remote Code Execution) e por ter sido incorporada rapidamente aos principais exploit kits comerciais da época (Blackhole, Nuclear, entre outros), que a usavam como um dos vetores mais confiáveis de comprometimento massivo de máquinas Windows com Java desatualizado — daí a presença no catálogo KEV da CISA como exploração confirmada in-the-wild.

A complexidade de exploração é baixa: o exploit não depende de layout de memória, ASLR/DEP bypass ou heap grooming — é abuso lógico de checagem de permissão ausente, o que o torna extremamente confiável e portátil entre versões vulneráveis (6u27 e anteriores, e as builds afetadas do JDK 7).

Versions

Affected
JDK e JRE 7 (builds anteriores à correção do CPU de outubro de 2011) e JDK/JRE 6 Update 27 e anteriores, conforme a descrição oficial da Oracle. Builds derivadas de terceiros com o mesmo código-base OpenJDK/Sun JDK também foram afetadas: HP JDK/JRE 6.0.12 e anteriores em HP-UX, e builds correspondentes do IBM JDK 6 usadas em produtos como Red Hat Network Satellite Server.
Fixed in
Corrigida pela Oracle no Critical Patch Update de outubro de 2011 (bug interno OpenJDK/Sun 7046823, componente Scripting). Distribuidores de terceiros publicaram seus próprios backports: HP-UX JDK/JRE 6.0.13 ou posterior (HPSBUX02730); IBM JDK 6 SR14 nos pacotes java-1.6.0-ibm usados pelo Red Hat Network Satellite Server 5.4 (RHSA-2013:1455). Não há confirmação direta nas fontes consultadas do número de build exato da Oracle para JDK 7 e 6 correspondente a este CVE específico — consulte o Critical Patch Update de outubro de 2011 da Oracle para o número de build oficial da sua plataforma.

How to protect

A correção definitiva é atualizar para uma versão do Java SE lançada no Critical Patch Update de outubro de 2011 da Oracle, que corrigiu este e outros defeitos do mesmo lote de scripting/2D/AWT/RMI listados nos boletins de terceiros (HP, Red Hat) — atualize para a versão de JDK/JRE 6 e 7 recomendada pelo fornecedor da sua distribuição Java na época (Oracle, OpenJDK ou IBM JDK, conforme o caso), pois cada um empacotou o fix em builds próprias e numeradas diferentemente.

Se não for possível atualizar imediatamente, o paliativo real é desabilitar ou desinstalar o plugin Java do navegador (Java Deployment Toolkit / Java plugin) e desassociar arquivos .jnlp da execução automática via Java Web Start — isso elimina o vetor de entrega, já que o applet/Web Start nunca chega a rodar. Definir o nível de segurança do Java Control Panel para 'High' ou exigir assinatura/confirmação explícita reduz superfície mas não corrige a falha de checagem em si — não é mitigação confiável contra um applet que já tenha permissão de execução.

O que NÃO funciona: manter o Java instalado apenas 'atualizado no sistema' sem desabilitar o plugin do navegador não protege, pois o vetor primário é o navegador carregando o applet automaticamente; e confiar em antivírus de endpoint para bloquear os exploit kits que empacotavam este CVE mostrou-se historicamente insuficiente, dado o volume e a variação constante de payloads observados nas campanhas Blackhole/Nuclear.

How to detect

Não há assinatura de rede confiável e específica para esta falha isolada: a exploração ocorre inteiramente dentro do processo Java do cliente após o carregamento do applet/JNLP, sem payload de rede distintivo além do download HTTP do próprio applet malicioso. Em ambientes com telemetria de endpoint, o indicador mais útil é um processo java.exe/javaw.exe gerando processos filhos inesperados (cmd.exe, powershell.exe, downloads de executáveis) imediatamente após acesso a uma página web ou abertura de um .jnlp — padrão comum às campanhas de exploit kit que usaram este CVE em 2012-2013. Logs de proxy/IDS podem mostrar requisições a arquivos .jar ou .jnlp hospedados em domínios associados a exploit kits daquele período, mas isso é evidência indireta, não prova de exploração deste CVE específico.

Researched and written with AI from the vendor advisory and public analysis, with the sources above. Always confirm the fixed version in the official advisory before acting.
Unspecified vulnerability in the Java Runtime Environment component in Oracle Java SE JDK and JRE 7 and 6 Update 27 and earlier allows remote untrusted Java Web Start applications and untrusted Java applets to affect confidentiality, integrity, and availability via unknown vectors related to Scripting.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Affected products
n/a · n/a
⚠ Public resources, to assess the exposure of systems you control or are authorized to test. Test only with authorization.