CVE-2019-16928
Prioriza la corrección. Ella está bajo explotación confirmada por CISA.
Apply updates per vendor instructions.
Resumen
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.
Detalle 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).
Cómo se explota
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.
Versiones
Cómo protegerse
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'.
Cómo 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.