← volver
CVE-2020-14871criticalbajo ataqueCWE-787

CVE-2020-14871

100Vexday Risk Score

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

ssvc Actcvss 10epss 80%
de la publicación al arma55 días
Publicada en NVD21 oct
1ª PoC+55d
metasploit20 oct
CISA KEV+378d
probabilidad de explotación
80%top 1% de las CVE
explotación observada
CISA + VulnCheck
11 exploit(s) público(s)
Acción exigida por CISAplazo federal: 2022-05-03

Apply updates per vendor instructions.

Resumen

Buffer overflow (CWE-787, escrita fora de limites) no módulo PAM do Oracle Solaris, na função de parsing do nome de usuário (parse_user_name), explorável remotamente e sem autenticação via SunSSH e outros serviços que invocam PAM. Atribuída CVSS 10.0 porque permite takeover completo do sistema sem nenhuma pré-condição de acesso, mas a própria Oracle nota que a falha não existe mais a partir do Solaris 11.1 — ou seja, o CVSS 10.0 só se aplica a Solaris 10 e a builds antigas de Solaris 11 ainda em suporte estendido. Está no catálogo KEV da CISA e foi usada por um grupo de ameaça (UNC1945, documentado pela Mandiant) contra servidores Solaris com SSH exposto à internet.

Detalle técnico

A falha está na implementação Sun/Oracle do PAM (Pluggable Authentication Module), especificamente no tratamento do nome de usuário recebido pelo daemon SSH (SunSSH) antes de ser passado para pam_start(). O nome de usuário não tem limite de tamanho sensato imposto antes de entrar na pilha de chamadas do PAM, permitindo que um atacante envie uma string de nome de usuário extremamente longa (relatos de exploits públicos usam strings da ordem de dezenas a ~128KB) que sobrescreve estruturas de memória além do buffer alocado.

O commit de mitigação do OpenSSH portátil (8.5, novembro de 2020) descreve o problema como 'buffer overflow in Solaris' PAM username handling', corrigido no lado do cliente/servidor SSH checando strlen(user) contra PAM_MAX_RESP_SIZE antes de repassar ao PAM, mas apenas quando a implementação de PAM é identificada como 'Sun-derived' (flag PAM_SUN_CODEBASE). Isso confirma que o bug reside no PAM da Oracle, não no OpenSSH — o OpenSSH apenas evita ser um dos vetores de disparo.

Exploits públicos catalogados no Packet Storm nomeiam a função vulnerável como 'parse_user_name' dentro do PAM do SunSSH, com variantes para Solaris 10 x86 e Solaris 11.0 x86/libpam, indicando que a rota de heap overflow (técnicas como 'House of Mind' foram citadas em discussões relacionadas de exploração de PAM em glibc/Solaris) foi adaptada para diferentes versões e arquiteturas.

Por ser um componente PAM, e não exclusivamente o SSH, a Oracle descreve o vetor como 'via multiple protocols' — qualquer serviço de rede em Solaris que autentique via PAM e passe o nome de usuário sem sanitização (login, telnet, ftp, além de sshd) é uma superfície de ataque potencial, embora o exploit documentado publicamente seja via SunSSH.

Cómo se explota

O vetor documentado e com exploits públicos é o daemon SunSSH do Solaris: o atacante conecta-se ao serviço SSH exposto e envia, no campo de nome de usuário durante a negociação de autenticação, uma string malformada e excessivamente longa. Não é necessária autenticação prévia, nem chave, nem conta válida — o overflow ocorre antes de qualquer verificação de credencial, na fase de parsing do username pelo PAM. Não há interação do usuário nem configuração não padrão exigida: basta o serviço estar acessível na rede.

Existem múltiplos exploits públicos catalogados (Packet Storm) com variantes específicas por versão e arquitetura (Solaris 10 x86, Solaris 11.0 x86 com libpam, Solaris 11.0 genérico), e um módulo Metasploit, o que reduz a complexidade prática de exploração a quase zero para quem tem acesso de rede ao serviço. Sucesso na exploração resulta em execução de código com privilégios do processo que chama o PAM — tipicamente root, já que sshd e serviços de login rodam com privilégios elevados durante a fase de autenticação.

A exploração ativa está confirmada: a Mandiant documentou o grupo UNC1945 comprometendo servidores Solaris com SSH exposto à internet, com dwell time de cerca de 519 dias antes da detecção, instalando um backdoor (SLAPSTICK) para capturar credenciais. A CISA incluiu a CVE no catálogo KEV com prazo de correção em 2022-05-03, confirmando exploração no mundo real, não apenas prova de conceito.

Versiones

Afectadas
Oracle Solaris 10 (todas as versões suportadas) e Oracle Solaris 11 em releases anteriores a 11.1; também impacta Oracle ZFS Storage Appliance (ZFSSA) em versões anteriores a 8.7, que embute componentes Solaris.
Corregidas en
Solaris 11.1 e releases posteriores, e ZFSSA 8.7 e releases posteriores, não são exploráveis para esta CVE segundo a Oracle. Para os ramos ainda vulneráveis (Solaris 10 e Solaris 11 pré-11.1), a correção é o patch distribuído no Critical Patch Update de outubro de 2020 (cpuoct2020) da Oracle — consulte o advisory oficial para o identificador de patch exato por plataforma. Separadamente, OpenSSH portátil 8.5+ adiciona mitigação client/server-side (não é a correção do PAM em si).

Cómo protegerse

A correção definitiva é migrar para uma versão de Solaris onde a falha não existe: a própria Oracle afirma que Solaris 11.1 e posteriores, e Oracle ZFS Storage Appliance (ZFSSA) 8.7 e posteriores, já não são vulneráveis a esta CVE. Para Solaris 10 e para instalações de Solaris 11 anteriores a 11.1 ainda sob suporte, é necessário aplicar o Critical Patch Update de outubro de 2020 da Oracle (cpuoct2020) — não há número de patch específico detalhado nas fontes consultadas aqui; siga o advisory oficial da Oracle para o identificador exato do patch aplicável à sua versão e arquitetura.

Como paliativo parcial quando o patch da Oracle não pode ser aplicado imediatamente: atualizar para OpenSSH portátil 8.5 ou posterior no lado do cliente/servidor SSH adiciona uma verificação que rejeita nomes de usuário excessivamente longos antes de repassá-los ao PAM, mas essa mitigação só se aplica quando o próprio OpenSSH (não o SunSSH nativo da Oracle) é usado como daemon SSH, e só protege contra o vetor via sshd — não fecha a falha no PAM em si, que continua explorável por qualquer outro serviço PAM (login, ftp, telnet) que aceite nome de usuário de rede.

Controles compensatórios reais quando não é possível corrigir: restringir acesso de rede aos serviços autenticados via PAM (SSH, login, ftp) do Solaris afetado por firewall/ACL, limitando exposição a redes confiáveis; monitorar e limitar o tamanho de campos de autenticação em proxies/gateways na frente do serviço, quando existirem. Não funciona como mitigação: apenas trocar de shell, desabilitar contas específicas, ou confiar em autenticação por chave SSH — o overflow ocorre antes da verificação de credencial, então nenhuma configuração de conta impede o ataque.

Cómo detectar

Em nível de rede/aplicação, procure tentativas de autenticação SSH (ou outros serviços PAM: login, ftp, telnet) com campos de nome de usuário anormalmente longos — muito além do que qualquer conta legítima teria (exploits documentados usam desde poucos KB até ~128KB). Logs do sshd ou do PAM que mostrem falhas de autenticação truncadas, crashes do processo de autenticação, ou reinícios inesperados do daemon sshd/pam em hosts Solaris são indícios fortes de tentativa de exploração.

Não há assinatura única confiável para todas as variantes, já que existem múltiplos exploits públicos com técnicas e tamanhos de payload diferentes por versão/arquitetura; ambientes que já sofreram comprometimento real (caso UNC1945) foram detectados por indicadores de pós-exploração — backdoors, credenciais capturadas, atividade lateral — e não pela assinatura do exploit em si, o que reforça a importância de monitorar comportamento pós-autenticação em hosts Solaris expostos à internet, não apenas o tráfego de 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.
Vulnerability in the Oracle Solaris product of Oracle Systems (component: Pluggable authentication module). Supported versions that are affected are 10 and 11. Easily exploitable vulnerability allows unauthenticated attacker with network access via multiple protocols to compromise Oracle Solaris. While the vulnerability is in Oracle Solaris, attacks may significantly impact additional products. Successful attacks of this vulnerability can result in takeover of Oracle Solaris. Note: This CVE is not exploitable for Solaris 11.1 and later releases, and ZFSSA 8.7 and later releases, thus the CVSS Base Score is 0.0. CVSS 3.1 Base Score 10.0 (Confidentiality, Integrity and Availability impacts). CVSS Vector: (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H).
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
⚠ Recursos públicos, para evaluar la exposición de sistemas que controlas o estás autorizado a probar. Prueba solo con autorización.