← back
CVE-2019-16928criticalunder attackCWE-787

CVE-2019-16928

70Vexday Risk Score

Prioritize patching. It under exploitation confirmed by CISA.

ssvc Actcvss 9.8epss 42%
from disclosure to weapon
Published on NVDSep 27
CISA KEV+888d
exploitation probability
42%top 1% of all CVEs
observed exploitation
yesCISA + VulnCheck
Action required by CISAfederal deadline: 2022-03-17

Apply updates per vendor instructions.

Summary

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.

Technical detail

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

How it’s exploited

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.

Versions

Affected
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).
Fixed in
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.

How to protect

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

How to detect

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.

Researched and written with AI from the vendor advisory and public analysis, with the sources above. Always confirm the fixed version in the official advisory before acting.
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
Affected products
n/a · n/a