В любимой прошивке раскопали шикарную 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 вам физически не нужОн, то вырубайте его на интерфейсах от греха подальше. Меньше протоколов - крепче сон 💤
Типичный 🥸 Сисадмин