Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
Dead.Letter-CVE-2026-45185 — Scanner de vulnerabilidade baseado em shell para CVE-2026-45185 (Dead.Letter) no Exim MTA. Detecta use-after-free em builds com GnuTLS, verifica versão, biblioteca TLS e configuração CHUNKING. Produz saída JSON para integração CI/CD. | Kitploit
Ferramentas/GitHubGitHub/liamromanis101/dead.letter-cve-2026-45185
Scanners de VulnerabilidadesAnálise de VulnerabilidadesExploraçãoScripting e AutomaçãoAuditoria de ConfiguraçãoSegurança de RedeDevSecOpsSegurança de Email
GitHub
liamromanis101/dead.letter-cve-2026-45185

Dead.Letter-CVE-2026-45185

Scanner de vulnerabilidade baseado em shell para CVE-2026-45185 (Dead.Letter) no Exim MTA. Detecta use-after-free em builds com GnuTLS, verifica versão, biblioteca TLS e configuração CHUNKING. Produz saída JSON para integração CI/CD.

Ver Repositório
227há 3 mesesAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

CVE-2026-45185 — "Dead.Letter" Scanner de Vulnerabilidade do Exim

Um script shell para detectar se um sistema Linux é vulnerável ao CVE-2026-45185, um use-after-free no agente de transferência de correio Exim que pode levar à execução remota de código.

Projetado para uso em pipelines CI/CD, ferramentas de gerenciamento de configuração e auditorias ad-hoc do sistema. Produz saída tanto legível por humanos quanto legível por máquina (JSON).


A Vulnerabilidade

CVE-2026-45185 (também conhecido como: Dead.Letter) é um bug use-after-free na análise de corpo de mensagem BDAT (dados binários) do Exim, acionado quando o TLS é tratado pelo GnuTLS.

Durante o desligamento do TLS, o Exim libera seu buffer de transferência TLS — mas um invólucro de recepção BDAT aninhado ainda pode processar bytes recebidos e chamar ungetc(), escrevendo um único byte \n na região liberada. Essa escrita de um byte corrompe metadados do alocador de heap, a partir dos quais um invasor pode obter primitivas de memória adicionais e alcançar execução remota de código.

PropriedadeDetalhe
CVECVE-2026-45185
AliasDead.Letter
TipoUse-After-Free (CWE-416)
ComponenteManipulador BDAT/CHUNKING do Exim (apenas builds com GnuTLS)
Vetor de ataqueRede — não autenticado, requer apenas uma conexão TLS e a extensão CHUNKING
Versões afetadasExim 4.97 – 4.99.2, apenas builds com GnuTLS
Corrigido emExim 4.99.3
Descoberto porFederico Kirschbaum, XBOW Security Lab (relatado em 1 de maio de 2026)

Builds com OpenSSL não são afetados. A vulnerabilidade é específica para Exim compilado com USE_GNUTLS=yes. Se seu Exim possui vínculo com OpenSSL, você não está vulnerável independentemente da versão.


O que o Script Verifica

O script funciona através de uma árvore de decisão, parando e marcando o sistema como não vulnerável assim que uma condição segura definitiva é confirmada:

Verificação 1 — Presença do Exim Pesquisa em $PATH e locais de instalação comuns (/usr/sbin/exim, /usr/sbin/exim4, /usr/local/sbin/exim). Se o Exim não for encontrado, o sistema não é vulnerável e o script sai imediatamente.

Verificação 2 — Versão do Exim Analisa a saída de exim -bV e compara com a faixa afetada (4.97 – 4.99.2). Versões ≥ 4.99.3 são tratadas como corrigidas. Versões fora da faixa conhecida são marcadas como não vulneráveis (com uma nota se não forem reconhecidas).

Verificação 3 — Biblioteca TLS (a porta crítica) Usa três métodos de detecção em sequência:

  1. Informações de build de exim -bV (mais confiável — o Exim relata seus próprios recursos de tempo de compilação, ex: Support for: GnuTLS)
  2. Vinculação de bibliotecas compartilhadas via ldd
  3. Varredura de binário com strings (fallback)

Se OpenSSL for detectado → o veredito muda para não vulnerável independentemente da versão. Se GnuTLS for detectado → a superfície de ataque é confirmada como presente. Se nenhum puder ser determinado → o resultado é inconclusivo.

Verificação 4 — Configuração de CHUNKING/BDAT (verificação de workaround) Só é executada se o sistema ainda estiver marcado como vulnerável neste ponto. Verifica se chunking_advertise_hosts foi explicitamente definido como um valor vazio no arquivo de configuração do Exim, o que desabilita a publicidade de BDAT e bloqueia o vetor de ataque. Lida tanto com arquivos de configuração únicos quanto com layout de configuração dividida do Debian (fragmentos de /etc/exim4/conf.d/).

Nota: se chunking_advertise_hosts estiver ausente da configuração (o padrão), o Exim anuncia CHUNKING para todos os hosts (*). A opção deve ser explicitamente definida com um valor vazio para desabilitá-la.

Verificação 5 — Mitigações informacionais do sistema Não altera o veredito, mas relata fatores que afetam a explorabilidade:

  • Nível ASLR (/proc/sys/kernel/randomize_va_space) — deve ser 2
  • Versão do glibc — 2.32+ tem verificações de integridade de metadados de heap mais fortes
  • Saída de checksec para o binário do Exim (PIE, RELRO, stack canaries) se checksec estiver instalado
  • Sandboxing da unit systemd: MemoryDenyWriteExecute, NoNewPrivileges, SystemCallFilter

Requisitos

  • Bash 4.0 ou posterior
  • Linux com sistema de arquivos /proc (para verificação de ASLR)
  • Coreutils padrão: grep, awk, ldd, head
  • checksec (opcional — para análise de hardening do binário)
  • systemctl (opcional — para inspeção da unit systemd)
  • Deve ser executado com privilégios suficientes para ler o arquivo de configuração do Exim (tipicamente root, ou um usuário no grupo Debian-exim no Debian/Ubuntu)

Nenhuma dependência externa é necessária para as verificações principais de vulnerabilidade.


Uso

root@kitploit:~
chmod +x check_cve_2026_45185.sh
./check_cve_2026_45185.sh

Opções

FlagDescrição
--jsonSaída dos resultados como um objeto JSON (veja abaixo)
--quietSuprime toda a saída; apenas o código de saída é definido
--no-colorDesabilita códigos de cor ANSI (útil para arquivos de log)
--help / -hExibe informações de uso

Códigos de Saída

CódigoSignificado
0Não vulnerável (ou uma condição segura definitiva foi encontrada)
1Vulnerável
2Inconclusivo — não foi possível determinar um ou mais fatos necessários; trate como potencialmente vulnerável
3Erro do script ou ambiente não suportado

Exemplo de Saída

Legível por humanos (padrão)

root@kitploit:~
CVE-2026-45185 (Dead.Letter) — Avaliação de Vulnerabilidade do Exim
===================================================================

[VERIFICAÇÃO] Verificando instalação do Exim...
[AVISO]  Binário do Exim encontrado: /usr/sbin/exim4
[VERIFICAÇÃO] Verificando versão do Exim...
        Versão detectada: 4.99.1
[FALHA]  Exim 4.99.1 está na faixa vulnerável (4.97 – 4.99.2).
[VERIFICAÇÃO] Verificando vinculação da biblioteca TLS (GnuTLS vs OpenSSL)...
[FALHA]  Exim está vinculado ao GnuTLS — este build ESTÁ afetado.
[VERIFICAÇÃO] Verificando configuração de publicidade CHUNKING (BDAT)...
        Arquivo de configuração: /etc/exim4/exim4.conf
[AVISO]  chunking_advertise_hosts não está desabilitado — BDAT está ativo (por padrão anuncia para todos os hosts).
        Dica: adicione 'chunking_advertise_hosts =' (valor vazio) à sua configuração principal para desabilitar BDAT como workaround.
[VERIFICAÇÃO] Verificando mitigações de exploração a nível de sistema (informativo)...
[APROVADO]  ASLR: randomização completa (randomize_va_space=2)
        Versão do glibc: 2.35 (2.32+ tem verificações de metadados de heap mais fortes)
[AVISO]  systemd: MemoryDenyWriteExecute não definido — recomenda-se adicionar à unit
[AVISO]  systemd: NoNewPrivileges não definido

------------------------------------------------------------
VEREDITO
------------------------------------------------------------
VULNERÁVEL — CVE-2026-45185
  Motivo: Versão do Exim 4.99.1 está na faixa vulnerável 4.97–4.99.2

Ações recomendadas:
  1. Atualizar o Exim para 4.99.3 ou posterior (correção principal)
  2. Como workaround, defina 'chunking_advertise_hosts =' (vazio) na configuração do exim
  3. Adicione MemoryDenyWriteExecute=yes e NoNewPrivileges=yes à unit systemd
  4. Certifique-se de que ASLR está em 2: echo 2 > /proc/sys/kernel/randomize_va_space
------------------------------------------------------------

Saída JSON (--json)

root@kitploit:~
{
  "cve": "CVE-2026-45185",
  "alias": "Dead.Letter",
  "host": "mailserver-01",
  "timestamp": "2026-05-12T17:00:00Z",
  "verdict": "vulnerable",
  "reason": "Exim version 4.99.1 is in vulnerable range 4.97–4.99.2",
  "exit_code": 1,
  "findings": {
    "exim_binary": "/usr/sbin/exim4",
    "exim_version": "4.99.1",
    "exim_version_vulnerable": "true",
    "tls_library": "gnutls",
    "tls_library_detected": "gnutls",
    "exim_config": "/etc/exim4/exim4.conf",
    "chunking_advertised": "true",
    "aslr_level": "2",
    "glibc_version": "2.35"
  },
  "mitigations": [
    "aslr=full"
  ]
}

Integração CI/CD

GitHub Actions

root@kitploit:~
- name: Check for CVE-2026-45185
  run: |
    chmod +x check_cve_2026_45185.sh
    ./check_cve_2026_45185.sh --json | tee vuln-report.json
    exit $(jq '.exit_code' vuln-report.json)

- name: Upload vulnerability report
  if: always()
  uses: actions/upload-artifact@v4
  with:
    name: cve-2026-45185-report
    path: vuln-report.json

GitLab CI

root@kitploit:~
check-exim-vuln:
  stage: security
  script:
    - chmod +x check_cve_2026_45185.sh
    - ./check_cve_2026_45185.sh --json > vuln-report.json
  artifacts:
    when: always
    paths:
      - vuln-report.json
  allow_failure: false

Ansible

root@kitploit:~
- name: Run CVE-2026-45185 check
  script: check_cve_2026_45185.sh --json
  register: vuln_check
  failed_when: vuln_check.rc == 1
  changed_when: false

- name: Show vulnerability report
  debug:
    msg: "{{ vuln_check.stdout | from_json }}"

Parseando saída JSON com jq

root@kitploit:~
# Obter apenas o veredito
./check_cve_2026_45185.sh --json | jq -r '.verdict'

# Verificar se uma mitigação específica foi encontrada
./check_cve_2026_45185.sh --json | jq '.mitigations | contains(["aslr=full"])'

# Executar em vários hosts e coletar resultados
for host in mail1 mail2 mail3; do
  ssh "$host" 'bash -s' < check_cve_2026_45185.sh --json
done | jq -s '.'

Remediação

Correção principal — atualizar o Exim

root@kitploit:~
# Debian / Ubuntu
apt-get update && apt-get install --only-upgrade exim4

# RHEL / CentOS / Fedora
dnf upgrade exim

# A partir da fonte
# Baixe 4.99.3 de https://ftp.exim.org/pub/exim/exim4/
# e reconstrua com suas configurações existentes de Local/Makefile

Verifique após a atualização:

root@kitploit:~
exim -bV | head -1
# Esperado: Exim version 4.99.3 ...

Workaround temporário — desabilitar CHUNKING/BDAT

Se não puder atualizar imediatamente, adicionar a seguinte linha à seção de configuração principal do seu arquivo de configuração do Exim desabilita completamente a publicidade de BDAT, bloqueando o vetor de ataque:

root@kitploit:~
chunking_advertise_hosts =

O valor vazio significa "nenhum host" — o Exim não anunciará mais a extensão CHUNKING nas respostas EHLO. Reinicie o Exim após fazer esta alteração:

root@kitploit:~
# Debian / Ubuntu
systemctl restart exim4

# Outros sistemas systemd
systemctl restart exim

Verifique se CHUNKING não é mais anunciado:

root@kitploit:~
# Conecte-se e verifique a resposta EHLO — CHUNKING não deve aparecer
echo QUIT | openssl s_client -connect localhost:25 -starttls smtp 2>/dev/null \
  | grep -i chunking
# Sem saída = CHUNKING está desabilitado

Isto é um workaround, não uma correção. Alguns servidores de correio remetentes usam BDAT para entrega de mensagens grandes. Desabilitá-lo pode causar problemas de compatibilidade com esses remetentes. Atualize para 4.99.3 o mais rápido possível.

Reforçando a unit systemd (defesa em profundidade)

Mesmo em um sistema corrigido, adicionar essas diretivas à unit systemd do Exim reduz o impacto de qualquer futura vulnerabilidade de corrupção de memória:

root@kitploit:~
# /etc/systemd/system/exim4.service.d/hardening.conf
[Service]
NoNewPrivileges=yes
MemoryDenyWriteExecute=yes
ProtectSystem=strict
PrivateTmp=yes
RestrictAddressFamilies=AF_INET AF_INET6
SystemCallFilter=@system-service
root@kitploit:~
systemctl daemon-reload && systemctl restart exim4

Limitações

  • O script realiza detecção estática apenas. Não tenta explorar a vulnerabilidade nem confirmar a explorabilidade sob as condições de execução específicas do sistema alvo.
  • Em sistemas onde o binário do Exim não pode ser executado (ex: restrições de permissão em um contêiner), a detecção da biblioteca TLS recorre a ldd e strings, que podem ser menos confiáveis.
  • Versões do Exim abaixo de 4.97 estão fora da faixa afetada conhecida para este CVE específico, mas não são mantidas e provavelmente são vulneráveis a outros problemas não corrigidos. A atualização é recomendada independentemente.
  • O script requer acesso de leitura ao arquivo de configuração do Exim para verificar o workaround de CHUNKING. Se executado sem privilégios suficientes, a etapa de verificação da configuração será relatada como inconclusiva em vez de falha.

Referências

  • The Hacker News — New Exim BDAT Vulnerability Exposes GnuTLS Builds to Potential Code Execution
  • Projeto Exim — Documentação de segurança
  • Especificação Exim — CHUNKING (chunking_advertise_hosts)
  • Especificação Exim — Configuração TLS
  • XBOW Security Lab
Baixar ferramenta