Уразливість, що віддалено експлуатується в TCP-стеку ядра. Linux

Компанія Anthropic розкрила інформацію про критичну вразливість (CVE-2026-98432) у TCP-стеку ядра Linux, що допускає віддалене виконання коду через відправлення спеціально оформлених пакетів. Заявлено про створення робочого експлоїту, що дозволяє виконати код лише на рівні ядра і віддалено отримати права root у системі. Підготовлений експлоїт придатний для атаки на системи із серверними процесами, що приймають з'єднання через мережеві сокети, що підтримують використання протоколу MPTCP (Multipath TCP). Підтримка MPTCP може бути активована у прив'язці до окремих мережевих сокетів, що робиться за замовчуванням у стандартній бібліотеці мови Go, починаючи з версії Go 1.24 (лютий 2025).

Підготовлений експлоїт може бути застосований при використанні будь-яких серверних програм на мові Go, включаючи HTTP-сервер Caddy, за наявності можливості відправки мережних пакетів на створюваний ними слухаючий сокет. Так як уразливість присутня безпосередньо в стеку IPv4 і не специфічна для MPTCP, не виключається створення експлоїтів, що працюють без прив'язки до MPTCP, але подібні експлоїти поки що не продемонстровані. Наприклад, можлива експлуатація вразливості при обробці запитів міграції сокетів, доступна в конфігураціях з параметром net.ipv4.tcp_migrate_req=1 або при використанні програм eBPF з опцією BPF_SK_REUSEPORT_SELECT_OR_MIGRATE.

Вразливість викликана станом гонки, що виникає при одночасному обробленні повторно переданих SYN-запитів при встановленні TCP-з'єднання. Так як функція tcp_v4_syn_recv_sock() передає дочірньому сокету параметри зі структури ireq->ireq_opt через посилання, а не через копіювання, при певному збігу обставин виникає ситуація, коли пам'ять під структури inet_opt і ireq_opt з параметрами сокету продовжують використовуватись (use-after-free).

Віддалена експлуатація здійснюється через відправлення серії синхронізованих у часі запитів мережі. Створений експлоїт успішно застосовується у тому числі до ядрів, в яких використовується рандомізація адрес (KASLR), але потрапляння у вікно стану гонки займає досить багато часу і потребує великої кількості повторних спроб. Експлуатацію полегшує те, що не попадання у вікно стану гонки призводить лише до скидання сеансу установки з'єднання (handshake), а не краху ядра, що дає можливість нескінченно продовжувати спроби. У створеному прототипі експлоїту для проведення атаки знадобилося близько години - 48 хвилин визначення розкладки пам'яті і ще 5 хвилин на організацію виконання коду.

Обхідні шляхи захисту, що гарантовано блокують вразливість, поки не представлені — як єдиний надійний варіант пропонується встановити оновлення ядра. Проблема проявляється починаючи з ядра Linux 4.4 та усунена у випусках 5.10.272, 5.15.223, 6.1.190, 6.6.159, 6.12.113, 6.18.56, 7.2.10 та 7.3. Статус усунення вразливостей у дистрибутивах можна оцінити на цих сторінках: Debian, Ubuntu, SUSE/openSUSE, RHEL, Gentoo, Arch,
Fedora.

З рекомендацій щодо протидії конкретним методам експлуатації, що не блокують уразливість у загальному вигляді, можна відзначити відключення підтримки MPTCP та виставлення sysctl-параметра ядра net.ipv4.tcp_migrate_req у значення 0:

sysctl -w net.mptcp.enabled=0
sysctl -w net.ipv4.tcp_migrate_req=0

Для визначення наявності в системі процесів, що використовують сокети з
MPTCP, можна використовувати команди:

ip mptcp endpoint show
ip mptcp limits show

Для відключення підтримки MPTCP у програмах на мові Go слід використовувати прапор «multipathtcp=0», для виставлення якого можна встановити змінну оточення «GODEBUG=multipathtcp=0». Для відключення підтримки MPTCP на етапі збирання можна додати "godebug multipathtcp=0" у файл з модулем go.mod. У коді програми використання MPTCP можна вимкнути через функції net.Dialer.SetMultipathTCP та net.ListenConfig.SetMultipathTCP.

Крім розглянутої проблеми компанія Anthropic також анонсувала серію вразливостей, що локально експлуатуються в ядрі. Linux, OpenBSD та FreeBSD, що дозволяють отримати права root в системі та вийти із ізольованих контейнерів; вразливості у Chrome та Safari, що призводять до виконання коду в системі при відкритті спеціально оформлених web-сторінок; вразливість у ядрі Windows, що веде до аварійного завершення роботи; вразливість у платформі Android, що дозволяє обійти блокування екрану та отримати доступ до персональної інформації та фотографій без розблокування пристрою (атака продемонстрована на смартфоні Google Pixel 9).

Доповнення:

  • У nginx можливість активації опції IPPROTO_MPTCP для слухаючого мережевого сокету є починаючи з версії 1.29.7, але не застосовується за умовчанням.
  • У Lighttpd опція для включення MPTCP доступна з випуску 1.4.76.
  • В Apache httpd патчі для підтримки MPTCP були додані в гілку Apache httpd 2.5-HEAD у 2024 році.
  • У systemd підтримка включення MPTCP при активації по сокету додана у версії 257.
  • В Apache Traffic Server опція для включення MPTCP підтримується, починаючи з версії 9.2.4.
  • У HAProxy, починаючи з версії 3.1.0, доступна опція «mptcp{,4,6}@ ».
  • У Traefik виставлення прапора IPPROTO_MPTCP включено за замовчуванням починаючи з випусків 2.11.26, 3.4.2 та v3.5.0-rc1.
  • У СУБД Valkey починаючи з версії 9.0.0 доступна опція «mptcp» і налаштування «mptcp yes» і «repl-mptcp yes».

Джерело: opennet.ru

Купити надійний хостинг для сайтів із захистом від DDoS, VPS VDS сервери 🔥 Купити надійний хостинг для сайтів із захистом від DDoS, VPS VDS сервери | ProHoster