← voltar
CVE-2019-16928criticalsob ataqueCWE-787

CVE-2019-16928

70Vexday Risk Score

Priorize a correção. Ela está sob exploração confirmada pelo CISA.

ssvc Actcvss 9.8epss 42%
da publicação à arma
Publicada no NVD27 de set.
CISA KEV+888d
probabilidade de exploração
42%top 1% das CVEs
exploração observada
simCISA + VulnCheck
Ação exigida pela CISAprazo federal: 2022-03-17

Apply updates per vendor instructions.

Resumo

Buffer overflow baseado em heap na função string_vformat do Exim, acionado por um comando EHLO SMTP excessivamente longo. Afeta apenas a série 4.92 a 4.92.2 (não é a mesma falha da CVE-2019-15846, publicada dias antes) e está no catálogo KEV da CISA como exploração confirmada, mas o próprio caminho de exploração documentado publicamente já ocorre após o Exim ter descartado privilégios — o que reduz o impacto real em relação ao que o CVSS 9.8 sugere.

Detalhamento técnico

A falha está em string_vformat, em src/string.c, uma função interna usada para montar strings dinamicamente (crescimento de buffers 'growable-string', a struct gstring). Ao processar um argumento de tamanho grande — no caso conhecido, o conteúdo do comando EHLO recebido via SMTP — o cálculo de quanto o buffer precisa crescer estava errado: a chamada gstring_grow(g, g->ptr, width - (lim - g->ptr)) subestimava o espaço necessário, e o patch corrige isso para gstring_grow(g, g->ptr, width), passando a largura completa a alocar em vez de um valor já descontado do espaço restante. O resultado prático é escrita fora dos limites do buffer alocado no heap: um overflow de heap classificável como CWE-122 (heap-based buffer overflow), decorrente de erro aritmético em cálculo de tamanho (relacionado a CWE-131/CWE-190).

Como é explorada

O vetor documentado publicamente é enviar, durante o handshake SMTP, um comando EHLO com uma string extraordinariamente longa para um Exim vulnerável em modo de recebimento de mensagem — isso não exige autenticação nem configuração especial, apenas conectividade de rede na porta SMTP exposta (AV:N, PR:N, UI:N, condizente com o vetor CVSS). No caso relatado ao bugtracker do Exim, o processo que recebe a conexão já havia descartado privilégios elevados antes de chegar ao código vulnerável, então o crash observado nesse caminho específico é, na prática, negação de serviço (o processo derruba) e RCE com privilégios altos não foi demonstrado publicamente por esse vetor.

Versões

Afetadas
Exim 4.92 até 4.92.2, inclusive (from 4.92 up to and including 4.92.2, segundo o aviso do próprio time do Exim).
Corrigidas em
Exim 4.92.3 e posteriores. Backports conhecidos: Debian 4.92-8+deb10u3 (DSA-4536-1); pacotes corrigidos também disponibilizados por Fedora e Gentoo conforme seus respectivos avisos.

Como se proteger

A correção é atualizar para Exim 4.92.3 ou posterior, que contém o commit 478effbfd9c3cc5a627fc671d4bf94d13670d65f corrigindo o cálculo de crescimento do buffer em string_vformat. Distribuições fizeram backport: Debian corrigiu em 4.92-8+deb10u3 (buster); outras distros (Fedora, Gentoo) publicaram pacotes próprios referenciados nos avisos correspondentes — verifique o changelog específico da sua distribuição antes de assumir que está corrigido apenas por rodar uma versão 'recente'.

Como detectar

Procure em logs SMTP/Exim por comandos EHLO com tamanho anormalmente grande vindos de sessões não autenticadas, seguidos de crash, restart ou entrada de panic/core dump do processo exim. Não há assinatura de exploração massiva documentada nas fontes consultadas; a listagem no catálogo KEV da CISA indica exploração confirmada em algum contexto, mas os detalhes de campanha (IOCs, padrões de payload usados em ataques reais) não constam nas fontes lidas — trate a ausência de sinal específico como lacuna de visibilidade, não como ausência de risco.

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.
Exim 4.92 through 4.92.2 allows remote code execution, a different vulnerability than CVE-2019-15846. There is a heap-based buffer overflow in string_vformat in string.c involving a long EHLO command.
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