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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2026-36355 — CVE-2026-36355: Realtek rtl819x Jungle SDK - Чтение/запись памяти ядра без аутентификации через отладочные ioctl | Kitploit
Инструменты/GitHubGitHub/totekuh/cve-2026-36355
Безопасность встроенных системПовышение привилегийАнализ уязвимостейЭксплуатацияБезопасность беспроводных сетейАппаратная БезопасностьЭксплуатация Бинарных Файлов
GitHubtotekuh/cve-2026-36355

CVE-2026-36355

CVE-2026-36355: Realtek rtl819x Jungle SDK - Чтение/запись памяти ядра без аутентификации через отладочные ioctl

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

Популярное

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

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

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

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

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

CVE-2026-36355: Realtek rtl819x Jungle SDK — неаутентифицированное чтение/запись памяти ядра через отладочные ioctl

  • CVE: CVE-2026-36355
  • CWE: CWE-782, CWE-787, CWE-200
  • Исследователь: Daniil Gordeev
  • Раскрыто: 2026-05-03

Краткое описание

Драйвер Wi-Fi ядра rtl8192cd из не входящего в дерево ядра Realtek rtl819x «Jungle SDK» предоставляет два IOCTL — write_mem (0x89F5) и read_mem (0x89F6) — без каких-либо проверок контроля доступа. Любой локальный пользователь, способный открыть беспроводной сетевой интерфейс, обслуживаемый драйвером, может читать или записывать произвольную виртуальную память ядра, что напрямую приводит к получению прав root.

Обработчики активируются макросом _IOCTL_DEBUG_CMD_ в 8192cd_cfg.h, который определён безусловно (без #ifdef DEBUG), поэтому набор отладочных команд попадает во все рабочие сборки.

Референсный эксплойт (kpwn) получает uid=0 из непривилегированной оболочки без единого захардкоженного адреса — как раскладка task_struct, так и расположение init_task автоматически определяются во время выполнения, что делает его переносимым между версиями ядра и сборками OEM-производителей.

Затронутые продукты

Уязвимость находится в драйвере Wi-Fi ядра Realtek rtl819x Jungle SDK во всех известных версиях вплоть до v3.4.14B. На момент раскрытия исправления нет. Драйверы rtlwifi / rtw88 / rtw89 из mainline Linux — это другие кодовые базы, и они не затронуты.

Общее ядро драйвера компилируется в несколько вариантов (rtl8192cd, rtl8192es, rtl8192ee, rtl8192fe, rtl8188ee и т. д.). Любая сборка Jungle SDK, включающая Wi-Fi драйвер, уязвима.

Вероятно затронуты — требуется проверка для каждого продукта

Realtek Jungle SDK широко распространяется по OEM-контрактам. Вендоры, перечисленные в списке вендоров CVE-2021-35395 (которая затрагивала другой, пользовательский компонент того же SDK), включают D-Link, TOTOLINK, Tenda, NEC, I-O DATA, Elecom, Buffalo, Humax, H3C и IP-COM. Выяснение того, поставляет ли каждая конкретная линейка продуктов уязвимый драйвер ядра, требует изучения исходников GPL, выпускаемых для каждого продукта; данное уведомление не утверждает этого без независимой проверки.

Тестовая среда

УстройствоOrtel 4G LTE CPE (OEM: MeiG Smart FORGE_SLT711)
SoCQualcomm MDM9607, ARMv7 Cortex-A7
ЯдроLinux 3.18.48
Модуль

Подтверждено: запись 0xDEADBEEF в .bss модуля с чтением обратно и восстановлением; полное локальное повышение привилегий с uid=1000 до uid=0 через обход init_task и перезапись учётных данных из непривилегированной оболочки.

Технические подробности

Первопричина

В 8192cd_cfg.h:

root@kitploit:~
#define _IOCTL_DEBUG_CMD_

Не обёрнуто в #ifdef DEBUG. Набор отладочных команд присутствует во всех рабочих сборках.

Уязвимые обработчики

Диспетчер rtl_ioctl() драйвера направляет 0x89F5 и 0x89F6 (в стандартном диапазоне приватных IOCTL SIOCDEVPRIVATE+5/+6, используемом беспроводными драйверами для расширений вендора) в write_mem и read_mem. Обработчики разбирают строку, предоставленную пользователем:

  • Чтение: dw,<addr>,<count> — чтение count 32-битных слов из виртуального адреса ядра addr
  • Запись: dw,<addr>,<count>,<value> — запись count 32-битных слов значения value по адресу addr

Адрес разбирается с помощью _atoi(base 16), передаётся в memcpy() для работы с виртуальным адресным пространством ядра, а результат возвращается через copy_to_user(). При этом:

  • Нет проверки capable()
  • Нет проверки access_ok() на адрес
  • Нет проверки границ диапазона адресов
  • Нет блокировок — все 59 IOCTL в наборе отладочных команд используют один общий глобальный буфер размером 2000 байт (tmpbuf1) в .bss

Примитив чтения ограничен 128 байтами за вызов; примитив записи принимает произвольную длину.

Тот же пробел в контроле доступа относится и к другим обработчикам в отладочном наборе (чтение/запись аппаратных регистров через 0x89F3/0x89F4/0x89F8–0x89FD, запись MIB через 0x89F1, чтение/запись eFuse, режим производственного тестирования). Они достижимы через тот же путь выполнения и требуют полного аудита от любого, кто исправляет эту ошибку.

Доказательство концепции

kpwn — с uid=1000 до uid=0 на MeiG FORGE_SLT711 (Ortel 4G LTE CPE), ядро 3.18.48

Референсный эксплойт kpwn.c (опубликован вместе с данным уведомлением):

  • Запускается от любого непривилегированного пользователя, root не требуется.
  • Автоматически определяет смещения task_struct (comm, cred, tasks, pid) обходом init_task, который, в свою очередь, находится перебором по .data ядра.
  • Автоматически определяет уязвимый интерфейс, проверяя каждый /sys/class/net/* на наличие примитива чтения.
  • 44 IOCTL, когда /proc/kallsyms доступен для чтения, ~7600 IOCTL при kptr_restrict=2 (полный путь сканирования .data). Безусловно даёт root-оболочку при каждом тестовом запуске.
root@kitploit:~
# Build:
arm-linux-gnueabi-gcc -static -O2 -o kpwn kpwn.c

# Run as unprivileged user:
$ id
uid=1000(pwn) gid=3003(inet) ...
$ /tmp/kpwn
kpwn — RTL8192CD kernel LPE
[*] Scanning interfaces...
[+] wlan0 — read primitive confirmed
[*] Resolving init_task...
[+] init_task @ 0xc08ecb38
[+] comm=0x3a8 cred=0x3a4 tasks=0x250 pid=0x2c0
[+] cred=0xed3a4500 uid=1000 gid=3003
[*] Overwriting credentials...
[+] uid=0 euid=0 gid=0 egid=0
*** GOT ROOT *** uid=1000 -> 0 (44 ioctls)
# id
uid=0(root) gid=0(root) groups=0(root)
Скачать инструмент
rtl8192es.ko
Дата2026-02-23