← voltar
CVE-2020-7961criticalsob ataqueCWE-502

CVE-2020-7961

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 à arma6 dias
Publicada no NVD20 de mar.
1ª PoC+6d
metasploit25 de nov.
CISA KEV+593d
probabilidade de exploração
100%top 1% das CVEs
exploração observada
simCISA + VulnCheck
26 exploit(s) público(s)
Ação exigida pela CISAprazo federal: 2022-05-03

Apply updates per vendor instructions.

Resumo

Falha de deserialização insegura (CWE-502) no serviço JSON Web Services (JSONWS) do Liferay Portal, que permite a um atacante remoto e não autenticado enviar um objeto Java serializado malicioso e obter execução arbitrária de código no servidor. É crítica de fato, não só no papel: está na CISA KEV, tem exploração confirmada em campanha de botnet real (FreakOut) e EPSS próximo de 1.

Detalhamento técnico

O JSONWS é a camada de API do Liferay Portal que expõe métodos de serviço via HTTP/JSON para integração remota. Parte dessa camada aceita e desserializa objetos Java enviados pelo cliente sem validar o tipo ou a origem dos dados antes de reconstruí-los em memória — o clássico padrão de 'unmarshalling' inseguro (CWE-502).

Como em outras vulnerabilidades de desserialização Java da época (Struts, WebLogic, Jenkins), o problema não está em uma única classe vulnerável isolada, mas na combinação entre um ponto de entrada que aceita bytes serializados controlados pelo atacante e a presença, no classpath da aplicação, de classes ('gadgets') que podem ser encadeadas para executar código arbitrário no momento em que o objeto é reconstruído — antes de qualquer verificação de autenticação ou de lógica de negócio ser aplicada.

O atacante controla integralmente o payload serializado enviado ao endpoint JSONWS. Não é necessário autenticar-se nem ter uma sessão válida: o ponto vulnerável processa o objeto durante a desserialização, etapa que ocorre antes de qualquer checagem de permissão.

Como é explorada

O vetor é uma requisição HTTP direta ao endpoint JSONWS exposto pela instância Liferay, sem necessidade de autenticação, interação do usuário ou configuração não padrão — daí o vetor CVSS AV:N/AC:L/PR:N/UI:N. Isso torna a superfície de ataque qualquer instância do Liferay Portal acessível pela rede com a versão vulnerável.

A exploração ativa mais documentada é a campanha de botnet FreakOut (Check Point Research, janeiro de 2021), que combinou CVE-2020-7961 com CVE-2020-28188 (TerraMaster TOS) e CVE-2021-3007 (Zend Framework) em varreduras automatizadas. Nesses ataques, a exploração da desserialização é usada para injetar comandos de sistema que baixam e executam um script Python ('out.py', hospedado em domínio controlado pelo atacante) via Python 2. O script resultante integra o host a uma botnet IRC com capacidades de port scanning, coleta de fingerprint do sistema, ARP poisoning, força bruta via Telnet com credenciais padrão e, em variantes posteriores, mineração de criptomoeda (XMRig) — ou seja, o objetivo final observado na prática é controle total do host para uso como plataforma de ataque recursiva, não roubo de dados pontual.

A presença de módulo Metasploit, template Nuclei e PoC pública reduz a complexidade de exploração a praticamente zero para quem já sabe da falha: qualquer scanner automatizado consegue identificar e explorar instâncias expostas.

Versões

Afetadas
Liferay Portal CE anterior à 7.2.1 GA2, conforme descrição oficial do fornecedor. As fontes analisadas não detalham faixas específicas para Liferay DXP (edição enterprise).
Corrigidas em
Liferay Portal 7.2.1 CE GA2. Não há, nas fontes consultadas, confirmação de versões/backports específicos de Liferay DXP corrigidas — consultar advisory oficial do fornecedor para essa linha.

Como se proteger

O fornecedor corrige a falha na versão Liferay Portal 7.2.1 CE GA2 (Community Edition). Atualizar para essa versão ou posterior é a mitigação real, sem substituto equivalente conhecido — não há flag de configuração documentada que desative a desserialização vulnerável do JSONWS sem quebrar funcionalidade.

As fontes analisadas não trazem confirmação de números de build específicos para Liferay DXP (edição enterprise); quem roda DXP deve consultar diretamente o advisory oficial do fornecedor (portal.liferay.dev/learn/security/known-vulnerabilities) para o backport correspondente à sua linha de suporte, em vez de assumir que a correção da CE se aplica automaticamente.

Caso a atualização não seja imediata, restringir o acesso de rede ao endpoint JSONWS (bloqueio por firewall/reverse proxy a `/api/jsonws` e caminhos equivalentes, permitindo apenas origens confiáveis) reduz a exposição, mas é paliativo — não corrige a falha, apenas diminui a superfície até a atualização. Não depender de WAF genérico como solução definitiva: assinaturas para payloads de desserialização Java têm alta taxa de falso negativo contra variações de gadget chain.

Como detectar

Procurar por requisições HTTP (tipicamente POST) direcionadas a endpoints JSONWS (caminhos como `/api/jsonws` ou equivalentes na instalação) cujo corpo contenha um blob binário ou base64 com a assinatura de serialização Java (bytes mágicos 0xAC 0xED, que em base64 aparecem como prefixo 'rO0AB'). Esse padrão é o indicador mais confiável de tentativa de exploração de desserialização.

Em nível de host, sinais associados à campanha FreakOut incluem processos filhos do servidor de aplicação Liferay executando comandos de shell, download de scripts via wget/curl, uso de `chmod` seguido de invocação de `python2`, e conexões de saída para domínios ou IPs não corporativos logo após uma requisição JSONWS suspeita. Esses indicadores são específicos daquela campanha e não cobrem exploração futura com payloads diferentes — na ausência desses padrões, não se pode concluir que a instância não foi explorada por outro método de pós-exploração.

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.
Deserialization of Untrusted Data in Liferay Portal prior to 7.2.1 CE GA2 allows remote attackers to execute arbitrary code via JSON web services (JSONWS).
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
PoCs públicas encontradas26 VexDay Proof
exploitdbVexDay Proofwww.exploit-db.com/exploits/48332githubgithub.com/mzer0one/CVE-2020-7961-POC118githubgithub.com/ShutdownRepo/CVE-2020-796118githubgithub.com/thelostworldFree/CVE-2020-7961-payloads5githubgithub.com/dinosn/liferay-ga4-rce-research5githubgithub.com/CrackerCat/CVE-2020-7961-Mass2githubgithub.com/wcxxxxx/CVE-2020-79611githubgithub.com/NMinhTrung/LIFERAY-CVE-2020-79610githubgithub.com/Alaa-abdulridha/POC-CVE-2020-7961-Token-iterate0githubgithub.com/Alaa-abdulridha/GLiferay-CVE-2020-7961-golang0githubgithub.com/pashayogi/CVE-2020-7961-Mass0githubgithub.com/manrop2702/CVE-2020-79610githubgithub.com/neverhavenamee/CVE-2020-79610githubgithub.com/d4ngkh04w/CVE-2020-79610vulncheckvulncheck.com/xdb/5fbe8f7dc4b1não verificadocve_referencepacketstormsecurity.com/files/157254/Liferay-Portal-Java-Unmarshalling-Remote-Code-Execution.htmlnão verificadocve_referencepacketstormsecurity.com/files/158392/Liferay-Portal-Remote-Code-Execution.htmlnão verificadovulncheckvulncheck.com/xdb/beb61a49daa0não verificadovulncheckvulncheck.com/xdb/09210c30ba35não verificadovulncheckvulncheck.com/xdb/d888e243ebd9não verificadovulncheckvulncheck.com/xdb/132215df805cnão verificadovulncheckvulncheck.com/xdb/7a60b00ba043não verificadovulncheckvulncheck.com/xdb/6e87149cbdcdnão verificadovulncheckvulncheck.com/xdb/76603fe1d8bbnão verificadovulncheckvulncheck.com/xdb/94b3db176f2dnão verificadovulncheckvulncheck.com/xdb/c4e4be4c284anão verificado
⚠ Recursos públicos, para você avaliar a exposição de sistemas que controla ou está autorizado a testar. Teste apenas com autorização.