← volver
CVE-2020-7961criticalbajo ataqueCWE-502

CVE-2020-7961

100Vexday Risk Score

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

ssvc Actcvss 9.8epss 100%
de la publicación al arma6 días
Publicada en NVD20 mar
1ª PoC+6d
metasploit25 nov
CISA KEV+593d
probabilidad de explotación
100%top 1% de las CVE
explotación observada
CISA + VulnCheck
26 exploit(s) público(s)
Acción exigida por CISAplazo federal: 2022-05-03

Apply updates per vendor instructions.

Resumen

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.

Detalle 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.

Cómo se explota

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.

Versiones

Afectadas
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).
Corregidas en
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.

Cómo protegerse

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.

Cómo 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.

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.
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
Productos afectados
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/dinosn/liferay-ga4-rce-research6githubgithub.com/thelostworldFree/CVE-2020-7961-payloads5githubgithub.com/CrackerCat/CVE-2020-7961-Mass2githubgithub.com/wcxxxxx/CVE-2020-79611githubgithub.com/manrop2702/CVE-2020-79610githubgithub.com/neverhavenamee/CVE-2020-79610githubgithub.com/d4ngkh04w/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/NMinhTrung/LIFERAY-CVE-2020-79610vulncheckvulncheck.com/xdb/132215df805cno verificadocve_referencepacketstormsecurity.com/files/157254/Liferay-Portal-Java-Unmarshalling-Remote-Code-Execution.htmlno verificadocve_referencepacketstormsecurity.com/files/158392/Liferay-Portal-Remote-Code-Execution.htmlno verificadovulncheckvulncheck.com/xdb/beb61a49daa0no verificadovulncheckvulncheck.com/xdb/5fbe8f7dc4b1no verificadovulncheckvulncheck.com/xdb/d888e243ebd9no verificadovulncheckvulncheck.com/xdb/09210c30ba35no verificadovulncheckvulncheck.com/xdb/7a60b00ba043no verificadovulncheckvulncheck.com/xdb/6e87149cbdcdno verificadovulncheckvulncheck.com/xdb/76603fe1d8bbno verificadovulncheckvulncheck.com/xdb/94b3db176f2dno verificadovulncheckvulncheck.com/xdb/c4e4be4c284ano verificado
⚠ Recursos públicos, para evaluar la exposición de sistemas que controlas o estás autorizado a probar. Prueba solo con autorización.