Останнім часом була оприлюднена інформація про збій що було виявлено у стеку IPv6 ядра Linux, зазначеному в CVE-2023-6200 і оцінена з балом 7.5 за шкалою CVSS, ця уразливість з'явилася з гілки 6.6 ядра Linux і створює досить серйозну проблему, оскільки дозволяє зловмисникам віддалено виконувати код.
І згадується, що ця помилка виявлена в мережевому стеку ядра Linux, що, за певних умов це може дозволити зловмиснику в локальній мережі виконати шкідливий код. Ця вразливість активується шляхом надсилання спеціально створеного пакету ICMPv6 із повідомленням RA (Router Advertisement), яке має на меті оголосити інформацію про маршрутизатор.
У ядрі Linux виявлено стан гонки. За певних умов неавтентифікований зловмисник у суміжній мережі може надіслати рекламний пакет маршрутизатора ICMPv6, спричинивши виконання довільного коду. Щоб ініціювати цю проблему, зловмисник має бути в локальній мережі, IPV6, а параметр net.ipv6.conf має бути ввімкнено...
Згадується, що Причина проблеми полягає в перегонах що відбувається, коли збирач сміття обробляє застарілі записи fib6_info, які що може призвести до доступу до звільненої області пам’яті (відоме як використання після випуску). Хоча Інтернет-протокол необхідний для передачі даних між вузлами, існують інші важливі завдання, які необхідно виконати, щоб забезпечити його надійну роботу. Ці завдання включають звіти про помилки, виявлення маршрутизатора, діагностику та інші функції, необхідні для ефективної роботи IP у середовищах IPv6. Протокол керуючих повідомлень Інтернету (ICMPv6) відіграє вирішальну роль в управлінні цими функціями в IPv6.
ICMPv6 забезпечує структуру для виявлення багатоадресного слухача (MLD) і Neighbor Discovery. Ці функції відповідають за передачу інформації про членство в групах багатоадресної розсилки (еквівалентно протоколу IGMP в IPv4) і визначення адрес (це завдання виконує ARP в IPv4).
При отриманні пакета ICMPv6 з рекламним повідомленням маршрутизатора (RA), мережевий стек викликає функцію ndisc_router_discovery(). Якщо повідомлення RA містить інформацію про час життя маршруту, ця функція викликає fib6_set_expires() і заповнює структуру gc_link. Згодом, щоб очистити застарілі записи, використовується функція fib6_clean_expires(), яка відокремлює запис у gc_link і звільняє пам’ять, яку використовує структура fib6_info. Однак є момент, коли пам'ять зі структури fib6_info вже випущено, але посилання на нього все ще присутнє в структурі gc_link.
Важливо зазначити, що цю вразливість можна використати лише з локальної мережі, і вона впливає на системи з увімкненою підтримкою IPv6 і параметром sysctl "net.ipv6.conf". .accept_ra» активний. Хоча в таких системах, як RHEL і Ubuntu, цей параметр вимкнено за замовчуванням для зовнішніх мережевих інтерфейсів, він увімкнено для інтерфейсу зворотного зв’язку, потенційно дозволяючи атаку з тієї ж системи.
Наостанок варто згадати про це уразливість була виправлена в ядрі Linux версії 6.6.9 і 6.7 а серед постраждалих дистрибутивів, які містять пакунки з ядром 6.6, можна виділити Arch Linux, Gentoo, Fedora, Slackware, OpenMandriva і Manjaro.
Крім цього, згадується, що в в інших дистрибутивах помилковою зміною може бути бекпорт із пакетами зі старішими гілками ядра. Наприклад, на Debian пакет із ядром 6.5.13 є вразливим, а проблемна зміна з’явилася у гілці 6.6). Як рішення безпеки ви можете вимкнути IPv6 або встановити параметри «net.ipv6.conf.*.accept_ra» на 0.
Для зацікавлені в тому, щоб отримати інформацію про стан ремонту уразливості в дистрибутивах можна оцінити на цих сторінках: Debian, Ubuntu, SUSE, RHEL, Fedora, Arch Linux, Gentoo y Slackware. І останнє, але не менш важливе, як завжди, ми зазвичай надаємо рекомендації користувачам і системним адміністраторам, вживаємо необхідних запобіжних заходів і виконуємо відповідні оновлення.
Якщо ви є цікаво дізнатися про це більше, Ви можете перевірити деталі в за наступним посиланням.