Репост из: Типичный Сисадмин
🚨 Один пакет до рута. В OpenWrt нашли критическую дыру в DHCPv6-сервере (CVSS 9.8)
В любимой прошивке раскопали шикарную RCE. Вся магия происходит в демоне odhcpd, который отвечает за выдачу IPv6-адресов. И да, по дефолту этот демон крутится с правами root 😬
Разрабы допустили классическое переполнение фиксированного 512-байтового стекового буфера (pdbuf). Чтобы взломать роутер, атакующему не нужна авторизация. Достаточно плюнуть снаружи всего один нужный UDP-пакет на 547 порт.
На Гитхабе подробно расписали сразу два независимых вектора атаки в функциях build_ia() и dhcpv6_ia_handle_IAs().
Хакер отправляет DHCPv6 REQUEST, в который напихано аномальное количество опций (например, 22 невалидных IA_PD и параметр RECONF_ACCEPT). Демон начинает формировать ответ со статусами ошибок, но забывает проверить, осталось ли место в буфере. В итоге ответ тупо пишется за пределы выделенной памяти, а переменная buflen уходит в integer underflow (переполнение через ноль).
И это довольно фатально... если на взрослых Linux-серверах от такого спасает защита стека и рандомизация памяти, то на роутерах эти механизмы часто отключены ради экономии ресурсов. В итоге обычное переполнение превращается в гарантированное удаленное выполнение кода. Готовые питоновские скрипты с эксплойтами уже лежат в паблике.
Уязвимость закрыли в свежих релизах 24.10.8 и 25.12.5. Кстати, ветка 24.10 в сентябре этого года всё - заканчивается, так что лучше сразу накатывать 25.12. Заодно апдейт закроет еще пачку веселых багов, вроде HTTP request smuggling в веб-морде uhttpd и утечек памяти.
Ну или если IPv6 вам физически не нужОн, то вырубайте его на интерфейсах от греха подальше. Меньше протоколов - крепче сон 💤
Типичный 🥸 Сисадмин
В любимой прошивке раскопали шикарную RCE. Вся магия происходит в демоне odhcpd, который отвечает за выдачу IPv6-адресов. И да, по дефолту этот демон крутится с правами root 😬
Разрабы допустили классическое переполнение фиксированного 512-байтового стекового буфера (pdbuf). Чтобы взломать роутер, атакующему не нужна авторизация. Достаточно плюнуть снаружи всего один нужный UDP-пакет на 547 порт.
На Гитхабе подробно расписали сразу два независимых вектора атаки в функциях build_ia() и dhcpv6_ia_handle_IAs().
Хакер отправляет DHCPv6 REQUEST, в который напихано аномальное количество опций (например, 22 невалидных IA_PD и параметр RECONF_ACCEPT). Демон начинает формировать ответ со статусами ошибок, но забывает проверить, осталось ли место в буфере. В итоге ответ тупо пишется за пределы выделенной памяти, а переменная buflen уходит в integer underflow (переполнение через ноль).
И это довольно фатально... если на взрослых Linux-серверах от такого спасает защита стека и рандомизация памяти, то на роутерах эти механизмы часто отключены ради экономии ресурсов. В итоге обычное переполнение превращается в гарантированное удаленное выполнение кода. Готовые питоновские скрипты с эксплойтами уже лежат в паблике.
Уязвимость закрыли в свежих релизах 24.10.8 и 25.12.5. Кстати, ветка 24.10 в сентябре этого года всё - заканчивается, так что лучше сразу накатывать 25.12. Заодно апдейт закроет еще пачку веселых багов, вроде HTTP request smuggling в веб-морде uhttpd и утечек памяти.
Ну или если IPv6 вам физически не нужОн, то вырубайте его на интерфейсах от греха подальше. Меньше протоколов - крепче сон 💤
Типичный 🥸 Сисадмин