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

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

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

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

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

Категории

Все категории
Loading categories
zephyr-lwm2m-firmware-update-oob-read-cve-2026-10672-truncated-package-uri — Эксплойт доказательства концепции для CVE-2026-10672, чтение за пределами буфера в Zephyr RTOS клиенте извлечения обновления прошивки LwM2M. Включает автономную C-реализацию и вредоносный сервер CoAP/LwM2M для тестирования. | Kitploit
Инструменты/GitHubGitHub/hunt-benito/zephyr-lwm2m-firmware-update-oob-read-cve-2026-10672-truncated-package-uri
Безопасность встроенных системБезопасность IoTАнализ уязвимостейЭксплуатацияФаззингСтатьи и ИсследованияОбучение и ОбразованиеЭксплуатация Бинарных Файлов

Популярное

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

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

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

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

Смотреть все инструменты →
Поделиться
GitHub
hunt-benito/zephyr-lwm2m-firmware-update-oob-read-cve-2026-10672-truncated-package-uri

zephyr-lwm2m-firmware-update-oob-read-cve-2026-10672-truncated-package-uri

Эксплойт доказательства концепции для CVE-2026-10672, чтение за пределами буфера в Zephyr RTOS клиенте извлечения обновления прошивки LwM2M. Включает автономную C-реализацию и вредоносный сервер CoAP/LwM2M для тестирования.

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

CVE-2026-10672 — PoC чтения за пределами буфера при обновлении прошивки LwM2M в Zephyr

Доказательство концепции для CVE-2026-10672, чтения за пределами буфера в клиенте получения обновления прошивки LwM2M Zephyr RTOS (subsys/net/lib/lwm2m/lwm2m_pull_context.c).

Уязвимость

  • CVE: CVE-2026-10672
  • CVSS: 8.2 Высокий (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:L)
  • CWE: CWE-125 (Чтение за пределами буфера)
  • Компонент: lwm2m_pull_context_start_transfer() в lwm2m_pull_context.c
  • Причина: memcpy(context.uri, uri, LWM2M_PACKAGE_URI_LEN) копирует ровно 128 байт в char uri[128] без нуль-терминатора, когда предоставленный сервером URI пакета (/5/0/1) имеет длину ≥ 128 байт. Последующие вызовы strlen(context.uri), http_parser_parse_url() и опция CoAP PROXY_URI добавляют и затем читают за границей буфера в смежную память структуры (is_firmware_uri, указатели на функции result_cb / write_cb и контекст DTLS-соединения). Избыточно прочитанные байты извлекаются в исходящем CoAP-запросе.
  • Буфер: context.uri[128] (CONFIG_LWM2M_SWMGMT_PACKAGE_URI_LEN, по умолчанию 128; LWM2M_PACKAGE_URI_LEN определён как это значение)
  • Затронутые версии: Zephyr v3.0.0 – v4.4.0 (рефакторинг контекста получения, который ввёл копирование, впервые появился в v3.0.0)
  • Исправлено в: Zephyr v4.4.1 и v4.3.1
  • Коммит с исправлением: 99a164df5cea5af76e32b57c6d51854f018969a2 — добавляет проверку strlen(uri) >= sizeof(context.uri) → -ENOMEM и переключается на strcpy().

Содержимое

ФайлНазначение
poc.cАвтономная C-реализация уязвимых/исправленных путей кода. Добросовестно переобъявляет (буфер и смежные поля, которые считываются за границей) и потребителей CoAP , вызывающих утечку.

Сборка и запуск C-реализации

root@kitploit:~
gcc -O0 -g -o poc poc.c
./poc

Ожидаемый результат: URI пакета длиной 200 байт приводит к опции CoAP PROXY_URI размером 141 байт — 128-байтовый URI плюс 13 утекших байт из context.is_firmware_uri, выравнивания структуры и указателей на функции result_cb/write_cb. Исправленный код отклоняет URI с ошибкой -ENOMEM и ничего не копирует.

Подтверждение с ASan

root@kitploit:~
gcc -O0 -g -fsanitize=address -o poc-asan poc.c
./poc-asan

Зонд выделяет ровно 128 байт, заполняет их ненулевыми байтами (имитируя полный context.uri без терминатора) и вызывает strlen():

root@kitploit:~
ERROR: AddressSanitizer: heap-buffer-overflow
READ of size 129 at 0x...
0x... is located 0 bytes after 128-byte region [...,0x...)

Запуск вредоносного LwM2M-сервера

root@kitploit:~
# Собрать и просмотреть CoAP-пакеты без отправки:
python3 lwm2m_evil_server.py --dry-run --uri-len 200

# Отправить на уязвимый клиент (NoSec CoAP, UDP/5683):
python3 lwm2m_evil_server.py --target 10.0.0.42 --port 5683 --uri-len 200 --listen 2

Сценарий отправляет CoAP PUT /5/0/1 (запись LwM2M ресурса URI пакета), а затем CoAP POST /5/0/2 (выполнение LwM2M Update, которое запускает получение прошивки и вызывает ошибку). В рабочем LwM2M сессия выполняется через DTLS (UDP/5684); злоумышленником может быть вредоносный/скомпрометированный сервер управления или атакующий на пути (on-path), когда аутентификация сервера DTLS не применяется.

Полная статья

https://www.hunt-benito.com/blog/zephyr-lwm2m-firmware-update-oob-read-cve-2026-10672-truncated-package-uri/

Отказ от ответственности

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

Скачать инструмент
struct firmware_pull_context
uri[128]
PROXY_URI
lwm2m_evil_server.pyМинимальный сервер CoAP/LwM2M, который доставляет URI пакета увеличенного размера в /5/0/1 уязвимого клиента по UDP (режим NoSec) — сетевая часть атаки. Без внешних зависимостей.