
Доказательство концепции эксплуатации переполнения буфера до аутентификации в GNU InetUtils telnetd (CVE-2026-32746), включая лабораторную среду Docker и скрипт обнаружения для авторизованного тестирования безопасности.
Удалённое выполнение кода до аутентификации через переполнение буфера в обработчике SLC (Set Local Characters) режима LINEMODE в 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 и достижению произвольной записи, когда end_slc() использует повреждённый указатель.
# Сборка уязвимой лабораторной среды
docker compose up -d
# Обнаружение (без разрушения)
python3 detect.py 127.0.0.1 2323
# Эксплуатация (вызывает аварийное завершение telnetd — подтверждает уязвимость)
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() записывает маркер конца субопции через повреждённый slcptr (произвольная запись)| Файл | Описание |
|---|---|
exploit.py | PoC-эксплойт для аварийного завершения/DoS |
Dockerfile | Лабораторная среда с уязвимым telnetd |
docker-compose.yml | Настройка лаборатории одной командой |
xinetd-telnet.conf | Конфигурация службы xinetd |
detect.py | Скрипт неразрушающего определения версии |
Чтобы выйти за рамки DoS, вам потребуется:
slcbuf → slcptr)end_slc() записывает через повреждённый slcptrЭтот инструмент предоставляется только для авторизованного тестирования безопасности и образовательных целей. Не используйте его против систем, которыми вы не владеете или на тестирование которых у вас нет явного разрешения. Автор не несёт ответственности за неправомерное использование.
MIT