LINUX.ORG.RU

Уязвимость в Linux, касающаяся сетевого протокола CAN BCM

 , ,


2

0

Недавно выявленная уязвимость в ядре Linux (CVE-2021-3609) позволяет получить root-права рядом махинаций, связанных с сетевым протоколом CAN (controller area network) BCM. Затрагивает версии с 2.6.25 до mainline 5.13-rc6 включительно.

Исследователь, выявивший уязвимость, подготовил эксплоит, действующий на ядра версий >=5.4.

Вкратце, шаги для воспроизведения:

  1. Настраиваем пространство непривилегированного пользователя.
  2. Настраиваем сетевой интерфейс vcan.
  3. Открываем два разъема CAN BCM и привязываем оба к сему интерфейсу.
  4. Вызываем sendmsg() на 1-м сокете с флагом RX_SETUP для настройки обработки поступающих сообщений CAN.
  5. Вызываем sendmsg() на 2-м сокете для отправки сообщения в 1й сокет.

Итог – получаем состояние гонки:

  • bcm_rx_handler() запускается автоматически на первом сокете для получения сообщения;
  • вызываем close() -> bcm_release() на первом сокете, чтобы освободить структуры bcm_op и bcm_sock.

Как следствие, bcm_rx_handler() все ещё работает и продолжает обращаться к структурам bcm_op и bcm_sock, которые ранее были освобождены – ситуация use-after-free.

Тот, кто управляет содержимым, bcm_sock способен переопределить указатель на функцию sk->sk_data_ready(sk) и перенаправить выполнение, имея таким образом возможность выполнить собственный код с root-правами.

На данный момент баг не исправлен в линейке наиболее используемых дистрибутивов, таких как Ubuntu, RHEL, Fedora, Debian, SUSE, Arch.

>>> Новость на OpenNet

>>> Подробности



Проверено: xaizek ()
Последнее исправление: xaizek (всего исправлений: 5)
Ответ на: комментарий от bonta

В одном только ядре (исключая остальные компоненты ос) ежегодно находят багов больше чем во всей актуальной Windows

И даже предоставите доказательства?

Код линукса открыт, если вы найдёте баг, то вы публично напишите об этом. А с виндой этим будут заниматься специальные люди, которые не будут публично писать о всех багах.

fernandos ★★★
()
Ответ на: комментарий от anonymous

Над виндой работает кучка индусов, искать баги нах никому не нужно

Даже если они найдут, то общественность об этом не узнает.

fernandos ★★★
()
Ответ на: комментарий от pekmop1024

Что, не бывает систем, в которых модуль автоподгружается при загрузке по запросу системы?

anonymous
()
Ответ на: комментарий от Legioner

Зачем публиковать, если не исправлено?

just for fun))

crypt ★★★★★
()

Каждый день передавал персональные данные по CAN шине в Интернет. Очень жаль.

BceM_IIpuBeT ★★☆☆☆
()
Ответ на: комментарий от Legioner

Зачем публиковать, если не исправлено? Автор эксплоита - урод?

А затем, чтоб не было непробиваемой уверенности, что винда решето, а линукс -защищенная глыба.))) Хорошо лечит от самоуверенности и ЧСВ

anonymous
()
Ответ на: комментарий от Parthen

То есть я не должен знать об уязвимости в моём ПО? Специально, чтобы меня взломать было легче?

Ну так у любителей швободки люди разного сорта. Вам знать не положено))). Все равные, но кое кто более равный)))

anonymous
()
Ответ на: комментарий от Parthen

Как ты думаешь, в каком случае господам хацкерам легче тебя взломать: если они знают про уязвимость, или если они не знают про уязвимость?

Legioner ★★★★★
()
Ответ на: комментарий от fernandos

Код линукса открыт, если вы найдёте баг, то вы публично напишите об этом. А с виндой этим будут заниматься специальные люди, которые не будут публично писать о всех багах.

Да ладно. С чего бы это ? Если я найду баг, то я буду его использовать чтобы установить зомбям криптомайнеры, стырить номера и коды банковских карт, закачать порно и тд. В любой системе кстати.

Только вот если в случае Windows, я и моя группа кулхацкеров найдет эти баги экспериментальным путем, вслепую, «нажав туда-сделав это-скопировав оттуда-записав туда-то», то в случае Linux я просто открою чувствительные участки кода, и увижу, КАК надо вызывать баг. Увижу условный int, захренячу в буфер 32769, например.

Так что таки да, в удобстве поиска багов, Linux будет получше. И поэтому дырявее.

windows10 ★★★★★
()
Ответ на: комментарий от pihter

В конфиге ядра перечисляются не только включенные, но и выключенные опции(в комментах). Чтобы grep-ом можно было узнать состояние опции. Если grep на опцию НИЧЕГО не выдает, значит ты либо ошибся в названии опции, либо она уже/еще не поддерживается твоей версией ядра. Вот за этим поддерживаемые в принципе(но отключенные при конфигурации пользователям) опции и пишутся в комментах с припиской is not set :-)

Pinkbyte ★★★★★
()

Не понимаю постоянный ор о том что тысячи глаз не помогли

если есть новость о уязвимости - значит помогли и уязвимость найдена как раз таки

DMITRY
()
Ответ на: комментарий от Pinkbyte

либо выключена опция подпунктом которой являеться искомая

в данном случае CONFIG_NET

DMITRY
()
Последнее исправление: DMITRY (всего исправлений: 1)
Ответ на: комментарий от DMITRY

Понятно, что фикс в течение нескольких часов запулят, но пока он дойдёт до потребителей, это несколько дней минимум. Надо сообщить разработчикам ядра и подождать хотя бы неделю.

Legioner ★★★★★
()
Ответ на: комментарий от Legioner

Хацкеры знают про уязвимость в любом случае, они хацкеры. И даже если не знают, то оповестив всех одновременно, шанмы взлома будут сведены к нулю.

Parthen ★★
()
Ответ на: комментарий от cyberhoffman

Вот именно, в ядре должен быть необходимый минимум, все остальное - модулями.

Dog ★★★
()
Ответ на: комментарий от pisqotron5000

А в проприетарщине о багах в ядре народ узнает только уже после появления эксплойтов.

Dog ★★★
()
Ответ на: комментарий от Parthen

Хацкеры знают про уязвимость в любом случае, они хацкеры.

Или они знали уже 10 лет и тогда пара недель ничего не решит, или они не знали, но сейчас узнают.

И даже если не знают, то оповестив всех одновременно, шанмы взлома будут сведены к нулю.

Пока все не обновятся, шансы взлома не будут сведены к нулю.

Legioner ★★★★★
()
Ответ на: комментарий от anonymous

О таких безответственных товарищах надо в полицию сообщать.

Legioner ★★★★★
()
Ответ на: комментарий от seiken

очередной эпик фейл Линукса,

ты хоть раз git с ядром смотрел? там по коммитам Линус далеко не первый

anonymous
()
Ответ на: комментарий от windows10

Когда оно научится стартовать с флешки - тогда и свалим.

Оно уже больше 10 лет как умеет. И UEFI загрузка с флешки работает.

Наверное с ReactOS попутали, оно до сих пор не умеет.

X512 ★★★★★
()
Последнее исправление: X512 (всего исправлений: 1)
Ответ на: комментарий от Legioner

Пока уязвимость не исправлена - не должен.

ахаха, опенсорсник называется:) так это, тебе закрытие ОС больше подойдут. хакеров бояться - это для лохов. нормальные пацаны технически грамотные и могут с ними справиться.:)

crypt ★★★★★
()
Ответ на: комментарий от Legioner

Как ты думаешь, в каком случае господам хацкерам легче тебя взломать: если они знают про уязвимость, или если они не знают про уязвимость?

А я ни при каком раскладе не могу быть уверен, что кулхацкеры про уязвимость не знают (тем более про такую древнюю), но вот в данном случае можно не ждать, пока разрабы жопу поднимут, а самостоятельно отключить модуль, т.е. риск взлома как раз уменьшается после огласки.

Vier_E ★★★
()
Ответ на: комментарий от slapin

Мало ли у тебя десктоп в машинке?

чо? в какой машинке?

darkenshvein ★★★★★
()
Ответ на: комментарий от windows10

Давно умеет, очень давно… просто Вы не в теме. Образ изо заливается dd или другой прогой на флешку. В каропке два загрузчика - uefi и обычный - Гайка автоматом распознает , какой использовать для выбранного режима bios /uefi или CSM/legacy/ Флешка - лаив режим или инсталлер - на выбор в начальном меню.

beos ★★★
()
Ответ на: Машинке опасносте от Camel

Основное место применение CAN это СКУД, ну и умный дом немного. И тут уязвимость заиграла новыми красками…

Если что в контроллере СКУД-да ты прошивку хрен сменить и CAN хрен отключищь… И посему мне уже три бутылки вискаря и коньяка прислали - за то что я когда-то давно, когда проектировал их сети - загнал СКУД-ы в отдельные VLAN и зафаерволил по самое небалуйся…

anonymous
()
Ответ на: комментарий от seiken

А много ли линуксоидов читает код линукса? Кто из присутствующих делает это регулярно, хотя бы раз в месяц? Думаю, никто (если не по работе). Да и по работе мало кто найдется.

anonymous
()
Ответ на: комментарий от bonta

Такая статистика некорректна (хотя бы потому, что сорцов винды нет на гитхабе). Выложи лучше про ZeroDay.

anonymous
()
Ответ на: комментарий от Slack

и? система всеравно еще без фикса. причем не зарепорть я, даже перспектив бы не было. и там не экзотические компоненты, а в BSD баги куда в более банальных вещах. софт в базовой системе сыпется просто потому, что нет защиты от пустых параметров.

так что чья бы корова мычала. я это говорю, потому что и на старых выпусках видел всякую хрень.

crypt ★★★★★
()
Последнее исправление: crypt (всего исправлений: 1)
Ответ на: комментарий от Slack

гм. то есть мы берем стабильный выпуск - находим баг. и по этой логике ты предлагаешь взять нестабильный?

crypt ★★★★★
()
Ответ на: комментарий от crypt

гм. то есть мы берем стабильный выпуск - находим баг. и по этой логике ты предлагаешь взять нестабильный?

Ну вроде это везде так, нет? Хочешь самые свежие исправления и самые свежие баги - ставь каррент, сид, арч? Не хочешь - подожди чуток, пока это всё в релиз не превратится?

UPD, да и в STABLE твой баг пофикшен: https://cgit.freebsd.org/src/tree/sbin/fsck_ffs/main.c?h=stable/13

Slack ★★★★★
()
Ответ на: комментарий от Slack

какая разница зафикшен или нет? важно ведь, что я на него наступил. если я беру редхатовый клон, то он не роняет систему после апдейта ядра. меня ведь не сам фикс интересует, а стабильная работа.

Ну вроде это везде так, нет? Хочешь самые свежие исправления и самые свежие баги - ставь каррент, сид, арч? Не хочешь - подожди чуток, пока это всё в релиз не превратится?

в перечисленных тобой дистрах это так, а вообще нет. дистры делятся на любительские и энтерпрайзные. на предприятиях ставят те, которые проходят тестирование и где отсутствуют критические баги. меня интересуют такие системы. среди них windows server, rhel, solaris... если ты утверждаешь, что фря по стабильности на уровне арча и генту... ну... ты мог бы ее сразу говном назвать. было бы короче.

crypt ★★★★★
()
Ответ на: комментарий от beos

а видеодрова с 3d/opencl/encode/decode умеет? нет? нах тогда оно нужно

anonymous
()
Ответ на: комментарий от crypt

которые проходят тестирование и где отсутствуют критические баги

Все проходит тестирование в той или иной степени, и критические баги - тоже это всё относительно. Сколько там чинили 12309? Лет 7? 5? И эта херня аффектила почти всех, а не тогда, когда ты ловишь сегфолт прыгая на левой ноге, почесывая при этом правой рукой за левым ухом. Да и я в принципе начал это все не к тому, что ФРЯХА БЕЗГЛЮЧНА, а только про то, что уязвимости про vcan во фряхе видимо нет. Да и уязвимость и баг - все же несколько разные вещи.

среди них windows server, rhel, solaris

баги что там, что там везде увы есть. Солярку вот жалко, хорошая была ОС, нынче очень узок ее сегмент. План9 вот норм, да и то, если присмотреться - допотопная хрень.

Slack ★★★★★
()
Последнее исправление: Slack (всего исправлений: 1)
Ответ на: комментарий от Slack

Все проходит тестирование в той или иной степени

К.О.

и критические баги - тоже это всё относительно

вот как только начнешь за стабильность деньги получать, так сразу станет не относительно

Сколько там чинили 12309?

пример не в тему. системы работали с этим багом, поэтому долго чинили. не критично.

Да и уязвимость и баг - все же несколько разные вещи.

да, но протокол такой редкий, что я даже о нем не слышал. из серии неуловимого дж.

crypt ★★★★★
()
Ответ на: комментарий от crypt

вот как только начнешь за стабильность деньги получать, так сразу станет не относительно

Ну если говорить про твой баг, то я например не смогу его даже нигде воспроизвести, потому-что я не вижу особого смысла использовать во фре не zfs.

Вообще из багов, которые мне когда-либо аффектили прод на фре - мне сходу припоминается только этот https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=246886

Slack ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.