Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

ЛентыКонтактыКонфиденциальность© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
Dead.Letter-CVE-2026-45185 — Сканер уязвимостей на основе shell для CVE-2026-45185 (Dead.Letter) в Exim MTA. Обнаруживает use-after-free в сборках GnuTLS, проверяет версию, библиотеку TLS и конфигурацию CHUNKING. Создает JSON-вывод для интеграции CI/CD. | Kitploit
Инструменты/GitHubGitHub/liamromanis101/dead.letter-cve-2026-45185
Сканеры уязвимостейАнализ уязвимостейЭксплуатацияСкриптинг и автоматизацияАудит конфигурацииСетевая безопасностьDevSecOpsБезопасность Электронной Почты
GitHub
liamromanis101/dead.letter-cve-2026-45185

Dead.Letter-CVE-2026-45185

Сканер уязвимостей на основе shell для CVE-2026-45185 (Dead.Letter) в Exim MTA. Обнаруживает use-after-free в сборках GnuTLS, проверяет версию, библиотеку TLS и конфигурацию CHUNKING. Создает JSON-вывод для интеграции CI/CD.

Репозиторий
22265 месяцев назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

CVE-2026-45185 — Сканер уязвимости Exim «Dead.Letter»

Скрипт оболочки для обнаружения уязвимости CVE-2026-45185 в Linux-системах — это использование после освобождения (use-after-free) в агенте передачи почты Exim, что может привести к удалённому выполнению кода.

Предназначен для использования в CI/CD-конвейерах, инструментах управления конфигурацией и разовых аудитах системы. Выдаёт как человекопонятный, так и машинопонятный (JSON) вывод.


Уязвимость

CVE-2026-45185 (псевдоним: Dead.Letter) — это ошибка использования после освобождения в разборе тела сообщения в формате BDAT (двоичные данные) Exim, которая срабатывает при обработке TLS через GnuTLS.

Во время завершения сеанса TLS Exim освобождает свой буфер передачи TLS, но вложенная обёртка приёма BDAT всё ещё может обрабатывать входящие байты и вызывать ungetc(), записывая один байт \n в освобождённую область. Эта однобайтовая запись повреждает метаданные распределителя кучи, что позволяет атакующему получить дальнейшие примитивы работы с памятью и добиться удалённого выполнения кода.

СвойствоПодробности
CVECVE-2026-45185
ПсевдонимDead.Letter
ТипИспользование после освобождения (CWE-416)
КомпонентОбработчик BDAT/CHUNKING Exim (только сборки с GnuTLS)
Вектор атакиСеть — без аутентификации, требуется только TLS-соединение и расширение CHUNKING
Затрагиваемые версииExim 4.97 – 4.99.2, только сборки с GnuTLS
Исправлено вExim 4.99.3
ОбнаруженоFederico Kirschbaum, XBOW Security Lab (сообщено 1 мая 2026)

Сборки с OpenSSL не затрагиваются. Уязвимость специфична для Exim, скомпилированного с USE_GNUTLS=yes. Если ваш Exim использует OpenSSL, вы не уязвимы независимо от версии.


Что проверяет скрипт

Скрипт работает по дереву решений, останавливаясь и помечая систему не уязвимой, как только подтверждено определённое безопасное состояние:

Проверка 1 — наличие Exim Ищет в $PATH и стандартных местах установки (/usr/sbin/exim, /usr/sbin/exim4, /usr/local/sbin/exim). Если Exim не найден, система не уязвима, и скрипт немедленно завершает работу.

Проверка 2 — версия Exim Разбирает вывод exim -bV и сравнивает с уязвимым диапазоном (4.97 – 4.99.2). Версии ≥ 4.99.3 считаются исправленными. Версии вне известного диапазона помечаются как не уязвимые (с пометкой, если они не распознаны).

Проверка 3 — библиотека TLS (критический шлюз) Использует три метода обнаружения последовательно:

  1. Информация сборки exim -bV (наиболее надёжная — Exim сообщает свои возможности времени компиляции, например Support for: GnuTLS)
  2. Связывание общих библиотек ldd
  3. Сканирование бинарного файла strings (запасной вариант)

Если обнаружен OpenSSL → вердикт меняется на не уязвим независимо от версии. Если обнаружен GnuTLS → подтверждена поверхность атаки. Если ни то, ни другое не удаётся определить → результат неопределённый.

Проверка 4 — конфигурация CHUNKING/BDAT (проверка обходного решения) Запускается только если система всё ещё помечена как уязвимая. Проверяет, установлено ли chunking_advertise_hosts явно в пустое значение в конфиге Exim, что отключает объявление BDAT и блокирует вектор атаки. Обрабатывает как однофайловые конфиги, так и раздельную конфигурацию Debian (фрагменты /etc/exim4/conf.d/).

Примечание: если chunking_advertise_hosts отсутствует в конфиге (по умолчанию), Exim объявляет CHUNKING всем хостам (*). Чтобы отключить, параметр должен быть явно установлен в пустое значение.

Проверка 5 — информационные смягчения системы Не меняет вердикт, но сообщает о факторах, влияющих на эксплуатацию:

  • Уровень ASLR (/proc/sys/kernel/randomize_va_space) — должен быть 2
  • Версия glibc — 2.32+ имеет более строгие проверки целостности метаданных кучи
  • Вывод checksec для бинарного файла Exim (PIE, RELRO, канарейки стека), если установлен checksec
  • Изоляция юнита systemd: MemoryDenyWriteExecute, NoNewPrivileges, SystemCallFilter

Требования

  • Bash 4.0 или новее
  • Linux с файловой системой /proc (для проверки ASLR)
  • Стандартные coreutils: grep, awk, ldd, head
  • checksec (опционально — для анализа защиты бинарного файла)
  • systemctl (опционально — для проверки юнита systemd)
  • Должен выполняться с достаточными привилегиями для чтения конфигурационного файла Exim (обычно root или пользователь из группы Debian-exim на Debian/Ubuntu)

Для основных проверок уязвимости внешние зависимости не требуются.


Использование

chmod +x check_cve_2026_45185.sh
./check_cve_2026_45185.sh

Параметры

ФлагОписание
--jsonВывод результатов в виде объекта JSON (см. ниже)
--quietПодавить весь вывод; устанавливается только код возврата
--no-colorОтключить ANSI-цвета (полезно для логов)
--help / -hВывести информацию об использовании

Коды возврата

КодЗначение
0Не уязвим (или найдено определённое безопасное состояние)
1Уязвим
2Неопределённо — не удалось определить один или более требуемых фактов; считайте потенциально уязвимым
3Ошибка скрипта или неподдерживаемая среда

Пример вывода

Человекопонятный (по умолчанию)

CVE-2026-45185 (Dead.Letter) — Exim Vulnerability Assessment
============================================================

[CHECK] Checking for Exim installation...
[WARN]  Exim binary found: /usr/sbin/exim4
[CHECK] Checking Exim version...
        Detected version: 4.99.1
[FAIL]  Exim 4.99.1 is in the vulnerable range (4.97 – 4.99.2).
[CHECK] Checking TLS library linkage (GnuTLS vs OpenSSL)...
[FAIL]  Exim is linked against GnuTLS — this build IS affected.
[CHECK] Checking CHUNKING (BDAT) advertisement config...
        Config file: /etc/exim4/exim4.conf
[WARN]  chunking_advertise_hosts is not disabled — BDAT is active (default advertises to all hosts).
        Tip: add 'chunking_advertise_hosts =' (empty value) to your main config to disable BDAT as a workaround.
[CHECK] Checking system-level exploit mitigations (informational)...
[PASS]  ASLR: full randomisation (randomize_va_space=2)
        glibc version: 2.35 (2.32+ has stronger heap metadata checks)
[WARN]  systemd: MemoryDenyWriteExecute not set — recommend adding to unit
[WARN]  systemd: NoNewPrivileges not set

------------------------------------------------------------
VERDICT
------------------------------------------------------------
VULNERABLE — CVE-2026-45185
  Reason: Exim version 4.99.1 is in vulnerable range 4.97–4.99.2

Recommended actions:
  1. Upgrade Exim to 4.99.3 or later (primary fix)
  2. As a workaround, set 'chunking_advertise_hosts =' (empty) in exim config
  3. Add MemoryDenyWriteExecute=yes and NoNewPrivileges=yes to the systemd unit
  4. Ensure ASLR is set to 2: echo 2 > /proc/sys/kernel/randomize_va_space
------------------------------------------------------------

Вывод в JSON (--json)

{
  "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"
  ]
}

Интеграция с CI/CD

GitHub Actions

- 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)
Скачать инструмент