← volver
CVE-2012-0507criticalbajo ataqueransomwareCWE-843

CVE-2012-0507

100Vexday Risk Score

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

ssvc Actcvss 9.8epss 98%
de la publicación al arma0 días
Publicada en NVD7 jun
1ª PoC30 mar
metasploit14 feb
CISA KEV+3556d
probabilidad de explotación
98%top 1% de las CVE
explotación observada
CISA + VulnCheck
1 exploit(s) público(s)
Acción exigida por CISAplazo federal: 2022-03-24

Apply updates per vendor instructions.

Resumen

Falha de type confusion na implementação de AtomicReferenceArray do runtime Java (JRE/JDK), presente em Java SE 5.0 Update 33 e anteriores, 6 Update 30 e anteriores, e 7 Update 2 e anteriores. Permite que um applet Java malicioso escape completamente do sandbox do Java (SecurityManager), executando código com os privilégios do usuário que abriu a página — sem exigir autenticação nem interação alem de visitar um site. Foi amplamente explorada em 2012 para distribuir o trojan Flashback em Mac OS X e incorporada a kits de exploração como o Blackhole, o que justifica sua presença no catálogo KEV da CISA e o EPSS quase máximo.

Detalle técnico

O problema está na classe AtomicReferenceArray (java.util.concurrent.atomic), parte do pacote de concorrência do JRE. A implementação usa reflexão/Unsafe internamente para acessar o array subjacente, mas não valida que o array passado ao construtor seja de fato do tipo Object[]. Isso é um erro de verificação de tipo (type confusion, próximo de CWE-843/CWE-704) que quebra a garantia de type-safety da JVM.

A descrição oficial da Oracle chama isso de 'Concurrency' e não detalha o mecanismo — a atribuição ao componente de concorrência é do próprio fornecedor. A explicação técnica de como a falha realmente funciona (confusão de tipo em AtomicReferenceArray) vem de pesquisadores terceiros e de um fornecedor downstream, não da Oracle, e a Oracle nunca confirmou publicamente esse detalhe, segundo a nota do próprio registro CVE.

Com a confusão de tipo, um applet controla um array de tipo diferente do esperado internamente pela JVM. Isso permite manipular referências de objeto para obter uma referência arbitrária tipada incorretamente, o que na prática dá ao código do applet a capacidade de burlar as checagens do SecurityManager — o mecanismo que impede applets não confiáveis de acessar arquivos, rede ou executar processos fora da sandbox.

O histórico do CVE é conturbado: o identificador foi originalmente mapeado como CVE-2011-3571, mas esse número já pertencia a outra falha, forçando a reatribuição para CVE-2012-0507 e gerando confusão em bases de dados e advisories da época (visível, por exemplo, na numeração da CVSS entre boletins da HP para a mesma falha).

Cómo se explota

O vetor é um applet Java malicioso hospedado em uma página web (drive-by download) ou entregue via e-mail/anúncio malicioso. O usuário só precisa visitar a página com o plugin Java habilitado no navegador — não há necessidade de autenticação, de interação além de carregar a página, nem de configuração não padrão. Isso é coerente com o vetor de rede e a ausência de privilégios do CVSS (AV:N/AC:L/PR:N/UI:N).

Como a falha está no próprio JRE, e não em um componente específico de sistema operacional, o exploit funcionou de forma multiplataforma. O caso mais notório foi o uso da falha pelo trojan Flashback para infectar Macs sem exigir senha do usuário nem exploração adicional de kernel — bastava o Java Web Start/plugin do navegador estar desatualizado. A falha também foi incorporada rapidamente a kits de exploração comerciais (como o Blackhole), automatizando a entrega em massa contra qualquer JRE vulnerável encontrado durante fingerprinting do navegador.

A janela de exploração real foi ampliada porque a Oracle corrigiu a falha em seu Critical Patch Update de fevereiro de 2012, mas fornecedores downstream (notadamente a Apple, que na época mantinha sua própria build do Java para OS X) demoraram semanas para distribuir a correção, deixando um grande volume de sistemas expostos a exploração ativa mesmo após o patch oficial existir — daí a presença confirmada no catálogo KEV da CISA e a disponibilidade de módulo Metasploit e PoC pública.

Versiones

Afectadas
Oracle Java SE 7 Update 2 e anteriores, 6 Update 30 e anteriores, e 5.0 Update 33 e anteriores (conforme Oracle CPU de fevereiro de 2012).
Corregidas en
Java SE 7 Update 3, 6 Update 31 e 5.0 Update 34 corrigem a falha, segundo a faixa de versões afetadas publicada pela Oracle. Builds de fornecedores downstream tiveram seus próprios ciclos de correção — por exemplo, HP-UX corrigiu em JDK/JRE 5.0.25, 6.0.14 e 7.0.01 (numeração própria da HP, não equivalente diretamente ao esquema Oracle).

Cómo protegerse

A correção definitiva é atualizar para a versão de Java imediatamente posterior à faixa vulnerável publicada pela Oracle: Java SE 7 Update 3, 6 Update 31 ou 5.0 Update 34 (ou builds equivalentes distribuídas por fornecedores downstream, como os boletins da HP-UX que corrigem a mesma CVE em suas próprias numerações de JDK/JRE 5.0.25, 6.0.14 e 7.0.01 — essas numerações são específicas do empacotamento HP e não devem ser confundidas com o esquema 'Update N' da Oracle).

Se a atualização não for possível de imediato, o controle compensatório real e amplamente adotado na época foi desabilitar o plugin Java nos navegadores (ou removê-lo do sistema), já que o vetor de exploração depende de execução de applet no contexto do navegador. Isso elimina a superfície de ataque sem exigir alteração no JRE instalado, ao custo de quebrar qualquer aplicação web que dependa de applets Java.

Não funciona como mitigação apenas manter antivírus atualizado ou confiar em filtragem de conteúdo web genérica: como a falha está na JVM e não em um payload específico, variantes do exploit circularam ofuscadas em diferentes kits, driblando assinaturas. Sandboxing adicional de navegador ou bloqueio de execução de Java por política de grupo é mais eficaz do que detecção baseada em assinatura.

Cómo detectar

Não há assinatura de rede confiável e específica para esta CVE isoladamente, porque o exploit trafega como bytecode Java (classe/applet) dentro de conexões HTTP/HTTPS normais e foi reempacotado de forma ofuscada em múltiplos kits de exploração — bloquear por assinatura de payload tende a ter alta taxa de falso negativo contra variantes. Sinais úteis em endpoint: processo do plugin Java do navegador (javaws, java.exe ou processo do plugin do browser) travando ou gerando um processo filho inesperado (shell, downloader) imediatamente após a visita a uma página com applet; presença de arquivos .jar/.class temporários baixados pelo navegador antes de um comprometimento; e, em nível de rede, requisições a domínios associados a kits de exploração da época (Blackhole) buscando arquivos JAR seguidos de payload binário. Softwares de segurança da época (como Microsoft MMPC) classificaram detecções específicas ligadas a esta CVE, o que pode servir de referência histórica em logs antigos de EDR/AV.

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.
Unspecified vulnerability in the Java Runtime Environment (JRE) component in Oracle Java SE 7 Update 2 and earlier, 6 Update 30 and earlier, and 5.0 Update 33 and earlier allows remote attackers to affect confidentiality, integrity, and availability via unknown vectors related to Concurrency. NOTE: the previous information was obtained from the February 2012 Oracle CPU. Oracle has not commented on claims from a downstream vendor and third party researchers that this issue occurs because the AtomicReferenceArray class implementation does not ensure that the array is of the Object[] type, which allows attackers to cause a denial of service (JVM crash) or bypass Java sandbox restrictions. NOTE: this issue was originally mapped to CVE-2011-3571, but that identifier was already assigned to a different issue.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Productos afectados
n/a · n/a
⚠ Recursos públicos, para evaluar la exposición de sistemas que controlas o estás autorizado a probar. Prueba solo con autorización.