← voltar
CVE-2021-35464criticalsob ataqueransomwareCWE-502

CVE-2021-35464

100Vexday Risk Score

Corrija agora. Ela está sob exploração confirmada pelo CISA e tem exploit funcional público.

ssvc Actcvss 9.8epss 100%
da publicação à arma0 dias
Publicada no NVD22 de jul.
1ª PoC1 de jul.
metasploit29 de jun.
CISA KEV+104d
probabilidade de exploração
100%top 1% das CVEs
exploração observada
simCISA + VulnCheck
7 exploit(s) público(s)
Ação exigida pela CISAprazo federal: 2021-11-17

Apply updates per vendor instructions.

Resumo

Deserialização Java insegura no parâmetro jato.pageSession do ForgeRock Access Management (antigo OpenAM), explorável sem autenticação com uma única requisição HTTP para endpoints /ccversion/*. Resulta em execução remota de código no contexto do usuário que roda o AM. Está no catálogo KEV da CISA por exploração confirmada, inclusive contra pelo menos um órgão governamental, o que torna o CVSS 9.8 condizente com o risco real — não é um caso de 'crítico no papel, irrelevante na prática'.

Detalhamento técnico

A falha é uma deserialização de dados não confiáveis (CWE-502) no componente Sun ONE Application Framework (JATO), um framework legado de páginas web herdado de versões antigas do Java EE que o ForgeRock AM manteve internamente para renderizar certas páginas administrativas/de versão. O parâmetro jato.pageSession, presente em múltiplas páginas do produto, carrega um objeto Java serializado (tipicamente codificado em base64) que o servidor desserializa diretamente ao processar a requisição, sem validar o tipo ou a origem dos dados.

O atacante controla o conteúdo desse blob serializado. Como não há filtro de classes (ObjectInputFilter/allowlist) nem verificação de integridade, é possível construir uma cadeia de gadgets (bibliotecas Java presentes no classpath do AM, como as tipicamente usadas por ysoserial) que, ao serem reconstruídas pela JVM durante a desserialização, executam código arbitrário antes mesmo de qualquer lógica de negócio ser alcançada.

O vetor de rede são os endpoints /ccversion/Version, /ccversion/Masthead e /ccversion/ButtonFrame — três páginas do console administrativo do JATO que não exigem sessão válida para serem acessadas, o que elimina a barreira de autenticação. A descrição do fornecedor associa a causa raiz ao uso do JATO em conjunto com Java 8 ou anterior, versões em que certas proteções de desserialização introduzidas em JDKs mais novos (filtros globais de serialização) não estão disponíveis ou não são aplicadas pelo AM.

Como é explorada

O ataque é pré-autenticação e de baixa complexidade: uma única requisição HTTP (GET ou POST, dependendo do endpoint) para uma das três rotas /ccversion/* com o parâmetro jato.pageSession contendo o payload serializado é suficiente para acionar a desserialização. Não há necessidade de configuração não padrão do AM nem de conhecimento prévio de credenciais — é isso que justifica AC:L, PR:N e UI:N no vetor CVSS.

Existe módulo Metasploit, template Nuclei e PoC pública, o que baixou drasticamente a barreira técnica para exploração em massa a partir de scanners automatizados. A CISA registrou o CVE no catálogo KEV com evidência de exploração ativa, e há relato documentado de atores de ameaça avançados (APT) usando essa falha para obter acesso inicial a redes corporativas e governamentais, a partir do qual pivotaram lateralmente e implantaram ferramentas adicionais.

O resultado final da exploração é execução de código com os privilégios do processo do AM — que, segundo o próprio fornecedor, não deveria rodar como root, mas frequentemente roda com privilégios suficientes para leitura de configurações sensíveis (segredos de integração, chaves de assinatura de tokens SSO) e movimentação lateral, dado o papel central que o AM ocupa como provedor de identidade/SSO na rede.

Versões

Afetadas
ForgeRock Access Management (AM), incluindo a linha legada OpenAM, em todas as versões anteriores à 7.0.
Corrigidas em
AM 7.0 e versões posteriores. Hotfixes para ramos anteriores (6.5.x, 6.0.x, 5.5.x) foram publicados pelo fornecedor no artigo de knowledge base a47894244; consulte-o para o número exato de patch por linha de release.

Como se proteger

A correção definitiva é atualizar para ForgeRock AM 7.0 ou versão posterior, onde o fornecedor removeu ou isolou o uso vulnerável do JATO. Para quem não pode migrar imediatamente, o ForgeRock publicou orientações e hotfixes para ramos anteriores no knowledge base article a47894244 (backstage.forgerock.com) — consulte esse artigo para a versão exata de hotfix aplicável ao seu branch (6.5.x, 6.0.x, 5.5.x), já que os números de patch variam por linha de release e não estão confirmados aqui com precisão suficiente para citar.

Como controle compensatório imediato, bloquear ou restringir acesso externo aos endpoints /ccversion/Version, /ccversion/Masthead e /ccversion/ButtonFrame (via proxy reverso, WAF ou regra de firewall de aplicação) reduz a superfície de ataque sem exigir downtime de upgrade — mas é paliativo, não correção, pois qualquer outra página que use jato.pageSession pode estar igualmente exposta caso novos vetores sejam descobertos. Rodar o processo do AM sem privilégios de root/administrador limita o impacto de uma exploração bem-sucedida, mas não impede a execução de código nem o acesso a segredos legíveis pelo próprio processo.

Não funciona como mitigação: apenas trocar a versão do JDK (Java 9+) sem atualizar o AM, pois a causa raiz está na lógica de desserialização do próprio componente JATO dentro do produto, não somente no comportamento padrão da JVM.

Como detectar

Em logs de acesso HTTP/proxy, procure requisições para /ccversion/Version, /ccversion/Masthead ou /ccversion/ButtonFrame contendo o parâmetro jato.pageSession com valor longo em base64 — objetos Java serializados frequentemente começam com a sequência 'rO0AB' (correspondente aos magic bytes 0xACED do formato de serialização Java) antes da codificação em URL. Volume anômalo de requisições a esses três endpoints específicos, especialmente sem sessão autenticada prévia, é indicativo forte de tentativa de exploração ou de varredura automatizada com os módulos Metasploit/Nuclei públicos.

Não há um sinal 100% confiável de exploração bem-sucedida apenas pelo tráfego de rede — a confirmação exige correlacionar com comportamento pós-exploração no host (processos filhos inesperados gerados pelo processo do AM, conexões de saída não usuais, criação de artefatos/webshells), já que a própria requisição de exploração é indistinguível de uma tentativa falha sem inspeção de payload e resposta do servidor.

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.
ForgeRock AM server before 7.0 has a Java deserialization vulnerability in the jato.pageSession parameter on multiple pages. The exploitation does not require authentication, and remote code execution can be triggered by sending a single crafted /ccversion/* request to the server. The vulnerability exists due to the usage of Sun ONE Application Framework (JATO) found in versions of Java 8 or earlier
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Produtos afetados
n/a · n/a
⚠ Recursos públicos, para você avaliar a exposição de sistemas que controla ou está autorizado a testar. Teste apenas com autorização.