Переполнение буфера в Toxcore, эксплуатируемое через отправку UDP-пакета

Автор Сообщение
news_bot ®

Стаж: 6 лет 9 месяцев
Сообщений: 27286

Создавать темы news_bot ® написал(а)
16-Дек-2021 02:30

В Toxcore, эталонной реализации P2P-протокола обмена сообщениями Tox, выявлена уязвимость (CVE-2021-44847), которая потенциально позволяет инициировать выполнение кода при обработке специально оформленного UDP-пакета. Уязвимости подвержены все пользователи приложений на базе Toxcore, в которых не отключён транспорт UDP. Для атаки достаточно отправить UDP-пакет, зная IP-адрес, сетевой порт и открытый DHT-ключ жертвы (данные сведения доступны публично в DHT, т.е. атака могла быть совершена на любого пользователя или узел DHT).
Проблема проявлялась в выпусках toxcore с 0.1.9 по 0.2.12 и устранена в версии 0.2.13. Из клиентских приложений обновление с устранением уязвимости пока выпустил только проект qTox. В качестве обходного пути защиты можно отключить использование UDP, оставив поддержку TCP.
Уязвимость вызвана переполнением буфера в функции handle_request(), возникающего из-за некорректного расчёта размера данных в сетевом пакете. В частности, длина зашифрованных данных определялась в макросе CRYPTO_SIZE, определённом как "1 + CRYPTO_PUBLIC_KEY_SIZE * 2 + CRYPTO_NONCE_SIZE", который в дальнейшем использовался в операции вычитания "length - CRYPTO_SIZE". Из-за отсутствия скобок в макросе вместо вычитания суммы всех значений выполнялось вычитание 1 и сложение остальных частей. Например, вместо "length - (1 + 32 * 2 + 24)" размер буфера рассчитывался как "length - 1 + 32 * 2 + 24", что приводило к перезаписи данных в стеке, находящихся за границей буфера.
===========
Источник:
OpenNet.RU
===========

Похожие новости: Теги для поиска: #_tox
Профиль  ЛС 
Показать сообщения:     

Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы

Текущее время: 22-Ноя 12:23
Часовой пояс: UTC + 5