
CVE-2026-32746 — PoC переполнения буфера SLC в LINEMODE GNU InetUtils telnetd (RCE до аутентификации, CVSS 9.8)
Переполнение буфера до аутентификации в обработчике LINEMODE SLC (Set Local Characters) демона telnetd из GNU InetUtils.
CVSS 3.1: 9.8 (Critical) | CWE: CWE-120, CWE-787
Функция add_slc() в telnetd/slc.c добавляет по 3 байта на каждый триплет SLC в фиксированный буфер на 108 байт (slcbuf) без проверки границ. Неаутентифицированный злоумышленник может отправить специально сформированную субопцию SLC с 40+ триплетами (коды функций > 18/NSLC) во время согласования опций — до появления приглашения входа — что приведёт к переполнению буфера и повреждению указателя slcptr и соседних данных в BSS.
# Создание уязвимой лабораторной среды
docker compose up -d
# Обнаружение (без разрушающего воздействия)
python3 detect.py 127.0.0.1 2323
# Эксплуатация (вызывает переполнение, проверка через ответ)
python3 exploit.py 127.0.0.1 2323
# Очистка
docker compose down
Docker-настройка запускает контейнер Debian с inetutils-telnetd 2.4 под управлением xinetd, доступный на порту 2323. Полностью изолирована — ничего не затрагивает вашу хост-систему.
WILL LINEMODE, чтобы инициировать согласование LINEMODEDO LINEMODE и переходит к обработке субопции SLCadd_slc() помещает ответ "не поддерживается" (3 байта) для каждого триплета в буфер на 104 байтаslcptr и соседние данные BSSend_slc() отправляет всё от slcbuf до повреждённой позиции slcptr, включая утёкшую память BSS в ответеДля глубокого анализа эксплуатации, включая байтовые ограничения, техники выравнивания и примитив def_slcbuf/free() на 32-битных системах, см. writeup от WatchTowr.
Этот инструмент предоставляется только для авторизованного тестирования безопасности и образовательных целей. Не используйте его против систем, которыми вы не владеете или на тестирование которых у вас нет явного разрешения. Автор не несёт ответственности за неправомерное использование.
MIT
| Файл | Описание |
|---|
exploit.py | PoC-переполнение с проверкой на основе ответа |
Dockerfile | Лаборатория с уязвимым telnetd |
docker-compose.yml | Настройка лаборатории одной командой |
xinetd-telnet.conf | Конфигурация службы xinetd |
detect.py | Некомпрометирующий скрипт определения версии |