← voltar
CVE-2018-14667criticalsob ataqueCWE-94

CVE-2018-14667

100Vexday Risk Score

Priorize a correção. Ela está sob exploração confirmada pelo CISA e tem prova de conceito pública.

ssvc Actcvss 9.8epss 74%
da publicação à arma12 dias
Publicada no NVD6 de nov.
1ª PoC+12d
CISA KEV+1787d
probabilidade de exploração
74%top 1% das CVEs
exploração observada
simCISA + VulnCheck
9 exploit(s) público(s)
Ação exigida pela CISAprazo federal: 2023-10-19

Apply mitigations per vendor instructions or discontinue use of the product if mitigations are unavailable.

Resumo

CVE-2018-14667 é uma falha de injeção de Expression Language (EL) no componente UserResource do RichFaces 3.x, framework de componentes JSF hoje sem suporte da comunidade. Um atacante não autenticado envia um objeto Java serializado malicioso que, ao ser processado pelo resource handler, tem campos avaliados como EL, resultando em execução remota de código no servidor de aplicação. Está no catálogo KEV da CISA com exploração confirmada e existe ferramenta de exploração pública (Richsploit), o que torna o risco real e não apenas teórico apesar da idade do componente.

Detalhamento técnico

A falha está na classe org.ajax4jsf.resource.UserResource$UriData, usada pelo mecanismo de resources do RichFaces 3.x para servir arquivos/recursos referenciados por componentes JSF (ex.: mediaOutput, fileUpload). O UriData é serializado, codificado e enviado ao cliente como parte da URL do recurso; no request seguinte o servidor decodifica e desserializa esse objeto para reconstituir o caminho do recurso solicitado. O problema é que campos desse objeto são posteriormente avaliados como expressões EL pelo framework, sem sanitização — classifica-se como injeção de EL (CWE-917) combinada com desserialização de dado não confiável (CWE-502), já que o vetor de entrada é um blob serializado controlado pelo atacante.

Como é explorada

O atacante monta um objeto UriData (ou usa a codificação esperada pelo endpoint UserResource) contendo uma expressão EL maliciosa nos campos que o RichFaces interpreta, encoda esse objeto como o resource resolver espera e o envia via HTTP para o endpoint de recursos exposto pela aplicação JSF. Não é necessária autenticação nem interação do usuário — a superfície é a própria requisição HTTP ao endpoint de resources, que costuma estar publicamente acessível em qualquer aplicação que use RichFaces 3.x. Como a avaliação EL no RichFaces 3.x roda com plenos privilégios do contexto do servidor de aplicação, uma exploração bem-sucedida entrega execução arbitrária de código no processo do servidor (JBoss/Tomcat/etc.), não apenas leitura de dados ou negação de serviço.

Versões

Afetadas
RichFaces Framework 3.x até 3.3.4, conforme descrição oficial (linha 3.x completa, hoje sem suporte upstream da comunidade JBoss/RichFaces).
Corrigidas em
Não existe release upstream da comunidade RichFaces 3.x corrigindo a falha diretamente. A Red Hat publicou patches específicos para produtos que embarcam RichFaces 3.3.1: JBoss Enterprise Application Platform 5.2.0 (pacotes richfaces-3.3.1-6.SP3_patch_03.ep5.el6 para RHEL6 e richfaces-3.3.1-9.SP3_patch_03.ep5.el5 para RHEL5, via RHSA-2018:3517 e RHSA-2018:3518), JBoss SOA Platform 5.3.1 (RHSA-2018:3519) e JBoss BRMS 5.3.1 standalone (RHSA-2018:3581).

Como se proteger

A linha RichFaces 3.x está fora de manutenção pela comunidade desde antes de 2018; não há release 'corrigida' da própria comunidade além do que a Red Hat empacotou para seus produtos. Quem usa JBoss EAP 5.2.0, JBoss SOA Platform 5.3.1 ou JBoss BRMS 5.3.1 (standalone) deve aplicar os patches específicos de RichFaces distribuídos via RHSA-2018:3517/3518 (EAP), RHSA-2018:3519 (SOA Platform) e RHSA-2018:3581 (BRMS), que atualizam o pacote richfaces para as builds 3.3.1-6.SP3_patch_03 (RHEL6) e 3.3.1-9.SP3_patch_03 (RHEL5) — restart do processo JBoss é necessário para o patch surtir efeito.

Como detectar

Procurar requisições HTTP ao endpoint de resources do RichFaces (padrões de path/resource servlet associados a org.ajax4jsf/UserResource) contendo parâmetros longos codificados (base64) que decodifiquem para dados binários com assinatura de stream Java serializado (bytes 0xAC 0xED no início do payload decodificado) — sinal forte de tentativa de exploração via objeto serializado malicioso. Não há um único indicador confiável e universal porque o endpoint e a codificação variam por versão/configuração da aplicação; ausência de logs de aplicação detalhados no nível de resource servlet dificulta a detecção retroativa, e a existência da ferramenta pública Richsploit facilita varreduras automatizadas que podem não deixar rastro distinto de tráfego HTTP legítimo do próprio framework.

Pesquisado e redigido com IA a partir do advisory do fornecedor e de análises públicas, com as fontes acima. Confira sempre a versão corrigida no advisory oficial antes de agir.
The RichFaces Framework 3.X through 3.3.4 is vulnerable to Expression Language (EL) injection via the UserResource resource. A remote, unauthenticated attacker could exploit this to execute arbitrary code using a chain of java serialized objects via org.ajax4jsf.resource.UserResource$UriData.
CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Produtos afetados
[UNKNOWN] · RichFaces
⚠ Recursos públicos, para você avaliar a exposição de sistemas que controla ou está autorizado a testar. Teste apenas com autorização.