CVE-2015-4852
Corrija agora. Ela está sob exploração confirmada pelo CISA e tem exploit funcional público.
Apply updates per vendor instructions.
Resumo
Deserialização de objeto Java não confiável no componente WLS Security do Oracle WebLogic Server, explorável remotamente e sem autenticação via protocolo T3 na porta TCP 7001. A falha não está no código próprio da Oracle, mas no uso de uma cadeia de gadgets da biblioteca Apache Commons Collections empacotada dentro do WebLogic (com.bea.core.apache.commons.collections.jar), que permite converter a desserialização de um objeto arbitrário em execução de comando no sistema operacional. O CVSS 9.8 é coerente com a realidade: não há pré-condição relevante além de acesso de rede à porta 7001, e a CISA confirma exploração ativa no catálogo KEV.
Detalhamento técnico
A causa raiz é CWE-502 (Deserialization of Untrusted Data). O serviço WebLogic T3, usado para comunicação RMI/JVM entre servidores e clientes, aceita objetos Java serializados diretamente do socket antes de qualquer autenticação, e os passa para ObjectInputStream.readObject(). Como o classpath do WebLogic inclui a biblioteca Apache Commons Collections, um atacante pode montar um stream serializado que instancia classes dessa biblioteca — como InvokerTransformer e ChainedTransformer, encadeadas via PriorityQueue ou outra estrutura serializável — para invocar métodos arbitrários por reflexão durante o processo de desserialização, chegando a Runtime.exec().
Essa técnica de 'gadget chain' foi apresentada publicamente por Chris Frohoff e Gabriel Lawrence (@frohoff/@gebl) na AppSecCali 2015 e depois operacionalizada por breenmachine/@dronesec (FoxGlove Security), que demonstraram RCE pré-autenticação não só em WebLogic, mas também em WebSphere, JBoss, Jenkins e OpenNMS — todos consumindo a mesma biblioteca vulnerável de formas distintas.
Um ponto importante de escopo, documentado na própria thread da MITRE em oss-security: a MITRE recusou-se a emitir um CVE genérico para a Apache Commons Collections em si, entendendo que o comportamento da biblioteca (permitir reflexão arbitrária via Transformer) não é, isoladamente, uma falha de codificação, mas um design perigoso quando exposto a entrada não confiável. O CVE-2015-4852 foi solicitado e atribuído pela própria Oracle, e por decisão da MITRE seu escopo é restrito ao produto WebLogic Server — não cobre a lib Commons Collections nem outros produtos afetados pela mesma técnica, que receberam (ou não) IDs próprios separadamente.
O atacante controla integralmente o conteúdo do objeto serializado enviado ao socket; o servidor não valida o tipo de classe antes de desserializar, então qualquer classe disponível no classpath do processo Java pode ser instanciada e ter métodos invocados durante o processo.
Como é explorada
O vetor é rede pura: conexão TCP à porta 7001 (ou outra porta onde o listener T3 esteja exposto), sem necessidade de credenciais, sessão ou interação do usuário — condição que casa com o vetor CVSS AV:N/PR:N/UI:N. O exploit publicado por FoxGlove Security (weblogic.py) abre a conexão, envia um handshake T3 mínimo (string de protocolo e cabeçalhos T3 como 'AS:255', 'HL:19', 'PU:t3://...') e, em seguida, injeta um payload binário que combina um objeto weblogic.rjvm.ClassTableEntry com um objeto serializado da cadeia Commons Collections contendo o comando a executar.
A complexidade de exploração é baixa: o handshake T3 é trivial de reproduzir e o payload de deserialização, uma vez construído, é reutilizável contra qualquer instância vulnerável — daí a existência de módulo Metasploit e de múltiplas PoCs públicas (Exploit-DB 42806, 46628, ferramentas ysoserial para gerar a cadeia CommonsCollections). Não é preciso conhecer credenciais, nem que a aplicação WebLogic exponha qualquer funcionalidade customizada: a superfície vulnerável é o próprio listener administrativo T3, presente por padrão em instalações WebLogic.
O resultado final é execução de comando arbitrário com os privilégios do processo WebLogic (frequentemente root/Administrator em instalações mal configuradas). A CISA lista a CVE no catálogo KEV com confirmação de exploração ativa; dado o tempo decorrido desde a divulgação (2015) e a trivialidade do vetor, a falha continua sendo usada em campanhas de varredura oportunista contra instâncias WebLogic expostas à internet.
Versões
Como se proteger
A Oracle publicou um Security Alert fora do ciclo trimestral de CPU especificamente para esta CVE (blogs.oracle.com/security/entry/security_alert_cve_2015_4852), com patch para as versões afetadas 10.3.6.0, 12.1.2.0, 12.1.3.0 e 12.2.1.0. O caminho correto é aplicar o patch/overlay indicado nesse Security Alert para a versão instalada; não há aqui um número de patch específico verificado nas fontes consultadas, então confirme o patch ID exato junto ao Security Alert oficial da Oracle antes de aplicar.
Como esta falha é sobre uma biblioteca (Commons Collections) empacotada dentro do produto, e a Apache Software Foundation não tratou o comportamento da lib como vulnerabilidade isolada (ver discussão MITRE/oss-security), atualizar apenas o jar da Commons Collections sem o patch da Oracle não é garantia de correção — o vetor de exploração passa pelo protocolo T3 do WebLogic, não pela lib isolada. Onde patch imediato não for viável, o controle compensatório real é restringir o acesso de rede à porta do listener T3 (tipicamente 7001) a hosts administrativos confiáveis, via firewall ou segmentação, e desabilitar o protocolo T3 em interfaces expostas à internet quando ele não for necessário para clientes externos.
Não funciona como mitigação: expor a porta 7001 atrás de um proxy HTTP reverso simples sem inspecionar o protocolo T3, ou confiar em autenticação de aplicação — o listener T3/RMI aceita o objeto serializado antes de qualquer checagem de credencial da aplicação.
Como detectar
Em nível de rede, o indício mais confiável é tráfego na porta TCP 7001 (ou outra porta com listener T3) iniciado com o handshake de protocolo T3 (string 't3 12.x.x' seguida de cabeçalhos como 'AS:', 'HL:', 'MS:', 'PU:') imediatamente seguido de um stream com a assinatura de objeto Java serializado (bytes 0xAC 0xED 0x00 0x05) contendo referências textuais a classes da cadeia de exploração, como 'org.apache.commons.collections.functors.InvokerTransformer', 'ChainedTransformer' ou 'weblogic.rjvm.ClassTableEntry'. IDS/IPS com assinatura para esses padrões, ou logging de payloads brutos no nível de socket, conseguem capturar tentativas.
Em nível de host, comandos inesperados executados pelo processo WebLogic (java) sem correlação com uma requisição HTTP de aplicação, ou processos filhos anômalos (shell, ferramentas de rede) originados do processo do servidor de aplicação, são sinal forte de exploração bem-sucedida. Não há um log de aplicação padrão do WebLogic que registre a tentativa de forma amigável — a exploração ocorre no nível de protocolo RMI/T3 antes de qualquer log de camada de aplicação, o que torna a detecção baseada em log de aplicação pouco confiável isoladamente.