А теперь уязвимость в ядре Линукса, в сетевом стеке! Remote code execution, просто 50 минут долбишь по сети определенными пакетами и удаленно исполняешь любые команды под рутом на сервере. Всё как мы любим.
Фиксится фильтрацией IPv4 TCP-пакетов с опциями в заголовках, для 99% людей это ни на что не повлияет, а если у вас повлияет (MultiPath TCP) — то вы лучше меня знаете, что делать. Если не понимаете, что всё это значит и у вас есть серверы — попросите своего агента прочитать вот эту ужасно нейрослопную статью и применить фикс.
Интересно, что исправлению в апстриме ядра Линукса уже две недели, а официальных обновлений от Ubuntu и Redhat всё ещё нет. Прямо видно, как старые системы и подходы не справляются с потоком.
Совсем апокалипсиса наверное не будет, потому что 1) уязвимости подвержены только многопроцессорные системы, и большинство IoT железок защищены ценой 2) большая часть серверов не торчит наружу в сетевом уровне.
Но если у вас есть сервера — рекомендую уделить пару минут. Хороших выходных!

Dmitrii
Ну вообще утверждение что мы лучше знаем не совсем верно. Если у вас на сервере запущено приложение собранное на Го (с какой то версии определенной) и оно слушает сеть - то вы потенциально уязвимы т.к. оно включает эту фичу.
😍️2
Samat Galimov
эм, если тебе реально нужен mptcp, то ты понимаешь, что делаешь :)
просто go код от этого не отвалитя
Alexey Guskov
> уязвимости подвержены только многопроцессорные системы, и большинство IoT железок защищены ценой
даже low-end IoT железки уже лет 10 как многоядерные (allwinner, rockchip)
Правда надо смотреть какое там ядро и какие дефолтные настройки стоят
Dmitrii
Да в том-то и дело что нет.
Если у вас на машине работает скажем прометеус, траефик, гошный реверс прокси, куски графаны, мимр, локи, виктория метрикс и тд, кубернетес - все они включают MPTCP.
👍️2
uncleroot🪬
шапки говорят что фикс пока не проходит стабилити тесты
Никита Венский
Вы абсолютно правы. Надо было пофиксить уязвимость. Хотя инфра и так в закрытом контуре... Уже хапанул дерьма, особенно с ранчером
Samat Galimov
Если ты фильтруешь пакеты с настройками, то не важно что там приложения включают
Mirtha🌿 Mi
Просто отрубить, ибо не всегда удобно бежать и сразу обновлять ядро, при том не все выпустили еще
if sysctl -n net.mptcp.enabled >/dev/null 2>&1; then if [ "$(id -u)" -eq 0 ]; then ROOT="" elif command -v sudo >/dev/null 2>&1; then ROOT="sudo" else echo "Ошибка: нужны права root или установленный sudo" exit 1 fi echo "net.mptcp.enabled=0" | $ROOT tee /etc/sysctl.d/99-disable-mptcp.conf >/dev/null $ROOT sysctl --system echo "MPTCP успешно отключён" else echo "MPTCP не поддерживается ядром или параметр недоступен" fi
ну или просто (сработает до reboot)
sysctl -w net.mptcp.enabled=0Например, если одновременно подключены Wi-Fi и Ethernet, MPTCP может использовать оба канала для одного соединения, тогда такая манипуляция может нарушить работу. Тогда лучше всеже обновить ядро.
ну эт уже перфекционизм выше моего)) судя по описаниям этой проблемой не так уж просто восспользоваться, это и канал хороший должен быть чтоб долбить сервер, и многояденость. какой фильтр то?
hs ☁️
убунту - это давно уже не линукс
Дмитрий ⬡ Лапшин
Вроде приложения на Го настраивают mptcp по умолчанию, так что не то чтобы не касается
Samat Galimov
Ты отвечаешь нейросети-спамеру!
Mirtha🌿 Mi
серьезно? твоя или как?
Samat Galimov
ну открой профиль, посмотри там ссылка одна, это чисто спамер, который работает на то, чтобы ты открыл ссылку в её профиле
мой антиспам зарезает большинство таких, её тип сейчас тоже дотюню
там проблема не в mptcp, а в ipv4 header options , и достаточно их зафильтровать
tcp options остаются, рафик неуионовен
Egor Suvorov
А если ядро настолько старое, что не поддерживает MPTCP..?
То всё ещё проблема может быть, потому что, судя по CVE, хватает версии 4.4
Delisted Account
Тогда ФВ фильтровать, как в статье и предложено.
Кучно, однако, пошло
Igor Batrakov
Спасибо @samatg 🙏 На фоне патчей PHP на десятках проектов эта уязвимость как-то прошла мимо меня. Сэкономил выходные
Сделал, по совету - дал агенту статью и попросил сначала сверить её с первоисточниками CVE и трекером Ubuntu, сошлось
Пока поставил на серверы отдельную таблицу nftables - она на самом раннем этапе отбрасывает входящие IPv4 TCP-пакеты с IP-опциями в заголовке. Небольшой systemd-юнит поднимает фильтр после перезагрузки. Проверял до и после. Cоединение с опцией Record Route без фильтра проходит, с фильтром - нет, счётчик отброшенных растёт, а обычные соединения, сайты и туннели живы.
Несколько граблей, которые не были описаны
1. Не включайте штатный nftables.service, чтобы правило сохранилось. В стандартном конфиге Ubuntu стоит flush ruleset он сносит правила UFW и Docker, а заодно и сам фильтр. Своя таблица и свой юнит.
2. Проверять снаружи почти бесполезно. Пакеты с IP-опциями часто режут ещё транзитные провайдеры, так что пустой результат не доказывает. Проверять надо с самого сервера на его же публичный адрес и обязательно сначала без фильтра, а то "не подключилось" может значить что угодно.
3. Если VPN крутится в контейнере со своим сетевым пространством, трафик подключённых клиентов к сервисам внутри контейнера идёт мимо фильтра на хосте. От интернета закрыто, от собственных клиентов нет. Актуально, если среди клиентов есть те, кому не доверяешь 🙂
4. MPTCP в свежих ядрах включён по улолчанию, а программы на Go начиная с 1.24 слушают через него сами. Если думаете, что MPTCP у вас нет, лучше проверить.
5. Счётчик фильтра потихоньку растёт и без моих проверок. Детально пока не разбирался, что-то из дикой природы интернета.
Серверов много, версии Ubuntu (извините 🙂) на них разные, а исправленных ядер пока нет. Поэтому настроил Hermes следить за их релизами, как залатют обновлюсь и сниму фильтры.
Ещё есть Кинетики. Такой фильтр на них не поставить, так что жду прошивку и держу наружу минимум портов🤷♂️
👍️