Разкрита е информация относно уязвимостта CVE-2023-6200 в мрежовия стек на ядрото Linux, която при определени обстоятелства позволява на злоумисленик от локалната мрежа да изпълни свой код чрез изпращане на специално форматиран ICMPv6 пакет с съобщение RA (Router Advertisement), предназначено за обявяване на информация за маршрутизатора.
Уязвимостта може да бъде експлоатирана само от локалната мрежа и се проявява в системи с активирана поддръжка на IPv6 и активен параметър sysctl „net.ipv6.conf.<име_на_мрежовия_интерфейс>.accept_ra“ (може да бъде проверен с командата „sysctl net.ipv6.conf| grep accept_ra“), който по подразбиране е изключен в RHEL и Ubuntu за външните мрежови интерфейси, но е включен за интерфейса loopback, което допуска атака от същата система.
Уязвимостта е причинена от състояние на състезание при обработването на остарели записи fib6_info от събирателя на боклук, което може да доведе до достъп до вече освободена област от паметта (use-after-free). При получаване на ICMPv6 пакет с съобщение за обявяване на маршрутизатора (RA, Router Advertisement), мрежовият стек извиква функцията ndisc_router_discovery(), която при наличие на данни за времето на живот на маршрута в RA съобщението извиква функцията fib6_set_expires() и попълва структурата gc_link. За почистване на остарелите записи се използва функцията fib6_clean_expires(), която откъсва записа в gc_link и освобождава паметта, използвана от структурата fib6_info. В този момент има определен момент, когато паметта за структурата fib6_info вече е освободена, но връзката към нея все още присъства в структурата gc_link.
Уязвимостта се проявява от версия 6.6 и е отстранена в версии 6.6.9 и 6.7. Статусът на отстраняването на уязвимостта в дистрибутивите може да бъде оценен на следните страници: Debian, Ubuntu, SUSE, RHEL, Fedora, Arch Linux, Gentoo, Slackware. Сред дистрибутивите, в които се предлагат пакети с ядро 6.6, са Arch Linux, Gentoo, Fedora, Slackware, OpenMandriva и Manjaro; в останалите дистрибутиви не е изключено бэкпортването на промяната с грешка в пакети с по-стари версии на ядрото (например, в Debian се посочва, че уязвимият пакет е с ядро 6.5.13, докато проблемната промяна се е появила в версия 6.6). Като временен вариант за защита може да се изключи IPv6 или да се зададе стойност 0 на параметрите „net.ipv6.conf.*.accept_ra“.
Източник: opennet.ru
