The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Уязвимость в eBPF, позволяющая выполнить код на уровне ядра Linux

25.06.2021 13:21

В подсистеме eBPF, позволяющей запускать обработчики внутри ядра Linux в специальной виртуальной машине с JIT, выявлена уязвимость (CVE-2021-3600), позволяющая локальному непривилегированному пользователю добиться выполнения своего кода на уровне ядра Linux. Проблема вызвана некорректным усечением 32-разрядных регистров при выполнении операций "div" и "mod", что может привести к чтению и записи данных за границей выделенной области памяти.

Уязвимость внесена в некорректном исправлении 32-разрядного деления на ноль в выпуске 4.15, которое также было бэкпортировано в ветки 4.4.x, 4.9.x и 4.14.x. Эксплуатация уязвимости возможна для ядер, начиная с версии 4.14, в которой был изменён метод отслеживании значений в верификаторе BPF. Проблема устранена в ядре Linux 5.11. Исправление бэкпортировано в ветки 5.10.x и 5.4.x, но не перенесено в ветки 4.19.x и 4.14.x. Обновление с исправлением уязвимости выпущено для Ubuntu и Debian Sid. Проявляется ли проблема в SUSE и RHEL пока не ясно.

  1. Главная ссылка к новости (https://www.openwall.com/lists...)
  2. OpenNews: Уязвимости в подсистеме eBPF, позволяющие обойти защиту от атак класса Spectre
  3. OpenNews: Уязвимости в подсистеме eBPF, позволяющие выполнить код на уровне ядра Linux
  4. OpenNews: Уязвимости в подсистеме eBPF ядра Linux
  5. OpenNews: Уязвимость в ядре Linux, позволяющая повысить свои привилегии через BPF
  6. OpenNews: В eBPF найдена возможность обхода защиты ядра Linux от атаки Spectre
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/55388-bpf
Ключевые слова: bpf, kernel, linux
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (60) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 13:29, 25/06/2021 Скрыто ботом-модератором [﹢﹢﹢] [ · · · ]     [к модератору]
  • –2 +/
     

     ....ответы скрыты (3)

  • 1.2, OnTheEdge (ok), 13:29, 25/06/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +9 +/
    неделя дыр в eBPF
     
     
  • 2.4, Аноним (4), 13:32, 25/06/2021 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Да какая уж тут неделя, можно уже год говорить, а с учетом 4.15 - я даже не знаю
     
     
  • 3.6, OnTheEdge (ok), 13:38, 25/06/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    никогда он мне не нравился
     
     
  • 4.7, Ivan_83 (ok), 13:40, 25/06/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    BPF штука клёвая, просто линуксойды как обычно тащат всё в рот не помыв и не потестировав :)
     
     
  • 5.13, Аноним (13), 14:30, 25/06/2021 [^] [^^] [^^^] [ответить]  
  • +8 +/
    Просто у любого API в ядре есть только два состояния - Experimental и Deprecated. Как все дыры закроют BPF, можно будет заменять на что-то другое, а пока только на свой страх и риск..
     
  • 5.14, BorichL (ok), 14:30, 25/06/2021 [^] [^^] [^^^] [ответить]  
  • +4 +/
    А помоему они это не в рот затащили, а как обычно, через жо.
     
     
  • 6.25, adolfus (ok), 17:12, 25/06/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Через си они это затащили, который не умеет делить целые числа, отдавая операцию на откуп библиотеке. И если половина программистов пишут for(int i = 0;;) вместо for(size_t i = 0;;), то какие к ним могут быть претензии, что он не умеет обращаться с результатом в ..div_t.
     
     
  • 7.32, BorichL (ok), 17:58, 25/06/2021 [^] [^^] [^^^] [ответить]  
  • +/
    > Через си они это затащили, который не умеет делить целые числа, отдавая
    > операцию на откуп библиотеке. И если половина программистов пишут for(int i
    > = 0;;) вместо for(size_t i = 0;;), то какие к ним
    > могут быть претензии, что он не умеет обращаться с результатом в
    > ..div_t.

    Прообраз то тоже на Си был реализован...

     

  • 1.9, PnD (??), 13:46, 25/06/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +7 +/
    Дежурный комментарий.
    "Что может пойти не так со встроенным в ядро компилятором, если к нему предоставить доступ всем подряд."

    * Не ленимся выставлять "kernel.unprivileged_bpf_disabled = 1". Ну а кто балуется с контейнерами, наверное сам сообразит.

     
     
  • 2.19, Аноним (19), 16:31, 25/06/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Дежурный комментарий.
    Почему вы до сих пор не на BSD? Там такого нет.
     
     
  • 3.20, Аноним (-), 17:01, 25/06/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Дежурный комментарий.
    > Почему вы до сих пор не на BSD? Там такого нет.

    Уже успели утянуть:



    Author: Jung-uk Kim <jkim@FreeBSD.org>
    Date:   Tue Dec 6 02:58:12 2005 +0000
        Add experimental BPF Just-In-Time compiler for amd64 and i386.
        Use the following kernel configuration option to enable:
                options BPF_JITTER
        If you want to use bpf_filter() instead (e. g., debugging), do:
                sysctl net.bpf.jitter.enable=0
        to turn it off.



     
     
  • 4.31, Аноним (31), 17:52, 25/06/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Но про реализацию в freebsd я не помню чтобы были новости об уязвимостях, тем более несколько на одной неделе. Почему Linux до сих пор не импортировал из BSD идеально работающий код?
     
     
  • 5.47, Аноним (-), 22:15, 25/06/2021 [^] [^^] [^^^] [ответить]  
  • +/
    > Почему Linux до сих
    > пор не импортировал из BSD идеально работающий код?

    Потому что там есть Фатальный Недостаток?
    Тем более, пингвинятам уже давно важен не "идеально работающий код", а сам процесс его ваяния, улучшения и выкидывания из-за "стагнации" (т.е. как только оно начинало нормально работать) ...

     
     
  • 6.51, Аноним (51), 02:20, 26/06/2021 [^] [^^] [^^^] [ответить]  
  • +/
    >Потому что там есть Фатальный Недостаток?

    Какой?

     
     
  • 7.59, Аноним (59), 12:08, 26/06/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >> Потому что там есть Фатальный Недостаток?
    > Какой?

    Отсутствие пользователей.

     
     
  • 8.66, Аноним (-), 01:19, 28/06/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Л-логика ну, помимо очевидного плюха в лужу - пользователей фряхи всяко пара с... текст свёрнут, показать
     
  • 7.61, Аноним (-), 13:15, 26/06/2021 [^] [^^] [^^^] [ответить]  
  • +/
    >>Потому что там есть Фатальный Недостаток?
    > Какой?

    NIH.
    Не получится запулить очередной
    "never finished, never complete, but tracking progress of technology". (с)

     
  • 4.54, Аноним (-), 04:23, 26/06/2021 [^] [^^] [^^^] [ответить]  
  • +/
    успели, а главное как быстро! И машину заправить не забыли. Молодцы.
     
  • 3.21, Аноним (21), 17:02, 25/06/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Потому, что не под GPL.
     
  • 3.22, Аноним (21), 17:04, 25/06/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Там ещё много чего нет. Нет поддержки такого же количества железа, во-первых.
     
     
  • 4.48, Аноним (-), 22:18, 25/06/2021 [^] [^^] [^^^] [ответить]  
  • +/
    > Там ещё много чего нет. Нет поддержки такого же количества железа, во-первых.

    Т.е. в архитектурных и реализационных ошибках eBPF виновата поддержка большого кол. железа?


     
     
  • 5.64, Аноним (64), 11:21, 27/06/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Зачем так искажать ход беседы? Это ответ на вопрос почему не использовать BSD - от неё мало толка.
     
  • 4.55, Аноним (-), 04:25, 26/06/2021 [^] [^^] [^^^] [ответить]  
  • +/
    > Нет поддержки такого же количества железа, во-первых.

    то есть такого же, как в "вашем" шиндовс?

     
     
  • 5.63, Майор (??), 11:17, 27/06/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Мальчик, у меня Шиндошс не было. Сначала была OS/2, рядом появился GNU/Linux, затем он только и остался.
     
     
  • 6.65, др. Аноним (?), 01:17, 28/06/2021 [^] [^^] [^^^] [ответить]  
  • +/
    >> Нет поддержки такого же количества железа, во-первых.
    > Мальчик, у меня Шиндошс не было. Сначала была OS/2, рядом появился GNU/Linux, затем он только и остался.

    О да, расскажите нам еще этих кулстори о "крутой" поддержке пингвином железа в те времена!
    Или это такое ловкое переобувание в прыжке?

     
  • 2.24, Аноним (21), 17:10, 25/06/2021 [^] [^^] [^^^] [ответить]  
  • +/
    >"kernel.unprivileged_bpf_disabled = 1"

    Вот и я уже несколько говорил, зачем это обычным пользователям позволять?

     
  • 2.49, Аноним (49), 23:26, 25/06/2021 [^] [^^] [^^^] [ответить]  
  • +/
    а есть возможность насовсем отключить эту гадость?
     

  • 1.10, Шарп (ok), 13:51, 25/06/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Что-то не вижу своё сообщение, которое я писал про уязвимость в eBPF. Поэтому повторю.

    >еBPF

    Уникальное шерето с JIT компиляцией. Очень по хипстерски. Такого в ядре ещё не было.

     
     
  • 2.11, Аноним (11), 13:57, 25/06/2021 [^] [^^] [^^^] [ответить]  
  • +/
    https://www.opennet.ru/opennews/art.shtml?num=55371

    На месте все

     
     
  • 3.17, Шарп (ok), 15:33, 25/06/2021 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Ааа, это новая уязвимость. Тогда ладно.
     

  • 1.12, Аноним (12), 14:01, 25/06/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Тивоизированные вёдра получат рут и свободные прошивки?
     
     
  • 2.16, Аноним (16), 14:52, 25/06/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Нет дыры залезут в систему и апдейтом их никогда не стереть.
     

  • 1.15, ryoken (ok), 14:43, 25/06/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    "Шо, опять?!"
     
  • 1.18, deeaitch (ok), 16:08, 25/06/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Кто бы сомневался что в самой этой идее предпологается дыравость.
     
  • 1.26, Ordu (ok), 17:31, 25/06/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > выявлена уязвимость (CVE-2021-3600), позволяющая локальному непривилегированному пользователю добиться выполнения своего кода на уровне ядра Linux
    > локальному непривилегированному

    А как это предлагается локальному непривилегированному эксплуатировать? Он ведь не может загружать произвольный bpf байткод, так? То есть выходит, он должен найти существующий загруженный байткод, и дальше подсовывать тому специально-оформленные данные? Но если так, то разве это локальная уязвимость? Ведь bpf работает с данными из сети.

    Нипанятна...

     
  • 1.27, Онаним (?), 17:42, 25/06/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Што, о5?
    Ну не место JIT в ядре, не место.
    Стоило бы подумать о том, как это в юзерспейс вытащить.
     
     
  • 2.29, псевдонимус (?), 17:49, 25/06/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Линусу зад зализать, например. Попробуй, вдруг поможет.
     
     
  • 3.37, Lex (??), 18:29, 25/06/2021 [^] [^^] [^^^] [ответить]  
  • +2 +/
    В подобных случаях зад если и лижут, то тому, кто имеет хоть какие-то полномочия..

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

     
     
  • 4.39, псевдонимус (?), 18:31, 25/06/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Ну вот и ты давно все понял. А ребята  постарше нас с тобой поняли в начале нулевых.
     
  • 2.34, Ordu (ok), 18:23, 25/06/2021 [^] [^^] [^^^] [ответить]  
  • +/
    > Стоило бы подумать о том, как это в юзерспейс вытащить.

    Фильтрацию файрвола вытащить в юзерспейс? Это по два переключения контекста на каждый пакет? Хмм... Ну если тебе надо, ты и вытаскивай. Впрочем, я думаю, для этого ничего особенного делать не надо в ядре, существующих возможностей достаточно.

     
     
  • 3.35, Онаним (?), 18:27, 25/06/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Не обязательно на каждый, есть же очереди обработки.
    Спихивать оптом всё считанное из сетевухи в один приём.
    Пока мало - будет на каждый. С ростом трафика - уже пачками.

    Ну мне-то не надо, в моём случае решение простое: выключил дырчатый механизм, и всё.

     

  • 1.28, псевдонимус (?), 17:47, 25/06/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Му-ха-ха-ха-ха!!

    Так вам и надо!

     
  • 1.33, макпыф (ok), 18:07, 25/06/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    какая уже? 3-я или 4-я?
     
     
  • 2.36, Онаним (?), 18:27, 25/06/2021 [^] [^^] [^^^] [ответить]  
  • +/
    N'ная, и далеко не последняя.
     
  • 2.38, псевдонимус (?), 18:29, 25/06/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Там сама задумка ######.
     

  • 1.40, Аноним (40), 18:58, 25/06/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Шо опять?
     
  • 1.41, Аноним (40), 19:07, 25/06/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Миллионы глаз как всегда просмотрели?
     
     
  • 2.42, Аноним (42), 19:55, 25/06/2021 [^] [^^] [^^^] [ответить]  
  • +3 +/
    И ты не поверишь нашли!!!! Кто бы мог подумать. Как сказали так и сделали.
     
  • 2.50, ИмяХ (?), 00:20, 26/06/2021 [^] [^^] [^^^] [ответить]  
  • +/
    синдром Дженовезе
     

  • 1.43, Ананоним (?), 21:59, 25/06/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Я ж говорил СмехЖириновского.mpg, а модератор вырезал. И да, кто там хвалился что у него ядро 4.9? Типа не гадость. Оказалось гадость как и 5.x.
     
  • 1.44, Ананоним (?), 22:02, 25/06/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Весто того, чтоы бы тащить в ядро всё что не попадя, лучше бы упрощали, разделив его на бинарные подсистемы с раздельной сборкой и поставкой. Типа стандарта виндовых драйверов.
     
     
  • 2.57, Аноним (57), 05:39, 26/06/2021 [^] [^^] [^^^] [ответить]  
  • +/
    За упрощение зарплату пока что еще никому не заплатили.
     
     
  • 3.58, Ананоним (?), 09:56, 26/06/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Что и требовалось понять про ситуацию. Кушать хочется программистам, и ради этой великой цели они готовы любую хорошую штуку засовершенствовать до кучи д***ма.
     

  • 1.45, Ананоним (?), 22:04, 25/06/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Всё таки забавное явление это ваше бекпортирование жуков.
     
     
  • 2.46, Ананоним (?), 22:07, 25/06/2021 [^] [^^] [^^^] [ответить]  
  • +/
    > бекпортирование

    Ой, простите за наглоязычность, взадовставление конечно.

     

  • 1.52, Аноним (52), 03:36, 26/06/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Че не смеетесь? Не смешно? Не поняли да? Это Linux!
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру