The OpenNET Project / Index page

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

Архитектура набора команд BPF получила статус предложенного стандарта

06.11.2024 14:38

Комитет IETF (Internet Engineering Task Force), занимающийся развитием протоколов и архитектуры интернета, завершил формирование RFC для архитектуры набора команд BPF и опубликовал связанную с ним спецификацию под идентификатором RFC 9669. RFC получил статус "Предложенного стандарта", после чего начнётся работа по приданию RFC статуса чернового стандарта (Draft Standard), фактически означающего полную стабилизацию и учёт всех высказанных замечаний.

Опубликованная спецификация описывает набор инструкций байткода BPF и низкоуровневую виртуальную машину, применяемую в подсистеме ядра Linux eBPF для выполнения внешних обработчиков, способных на лету менять поведение системы без необходимости изменения кода ядра. По сути eBPF реализует простейший виртуальный процессор со своим набором регистров, RISC-подобными инструкциями, стеком и счётчиком команд. Программы BPF обычно создаются на подмножестве языка Си, после чего компилируются в байткод, пригодный для выполнения в виртуальной машине. Виртуальная машина может выполнять BPF-программы как с использованием интерпретации, так и применяя JIT-компиляцию для трансляции байткода на лету в машинные инструкции.

Предполагается, что стандартизация архитектуры набора команд BPF станет стимулом для создания сторонних реализаций, совместимых с виртуальной машиной eBPF и способных выполнять BPF-программы, написанные для ядра Linux. Над созданием подобных виртуальных машин работают некоторые производители сетевых адаптеров, развивающие средства для аппаратного ускорения выполнения BPF-обработчиков сетевых пакетов. Идея в том, чтобы расширить возможности подсистемы XDP (eXpress Data Path) для выполнения BPF-программ не только на уровне сетевого драйвера, но и на стороне сетевой карты.

Например, компания Netronome добавила поддержку BPF в адаптер Netronome Agilio CX SmartNIC и предоставила коллекцию примеров универсальных BPF-программ, которые могут выполняться не только при помощи CPU в ядре с любым XDP-совместимым драйвером, но и на стороне сетевой карты, что позволяет принимать решения о отбрасывании, изменении или перенаправлении пакетов не тратя ресурсы CPU. Отдельно развивается технология XRP (eXpress Resubmission Path), позволяющая использовать BPF для выноса некоторых операций с накопителями NVMe, таких как работа с индексами и агрегирование данных, на уровень драйвера NVMe или на внешнее устройство.

Отмечается, что более широкому внедрению подобных возможностей до сих пор мешали риски, связанные с нарушением совместимости и необходимостью отслеживания состояния eBPF в ядре. Из-за данных рисков некоторые производители отложили включение средств аппаратного ускорения BPF в свои устройства до формирования стандарта.

  1. Главная ссылка к новости (https://mailarchive.ietf.org/a...)
  2. OpenNews: В ядре Linux появится возможность использования eBPF для создания планировщиков задач
  3. OpenNews: Использование BPF-программ для решения проблем в устройствах ввода
  4. OpenNews: Проект bpftime развивает реализацию eBPF, работающую в пространстве пользователя
  5. OpenNews: BumbleBee - инструментарий для упрощения создания и распространения eBPF-программ
  6. OpenNews: Создана организация eBPF Foundation
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/62187-bpf
Ключевые слова: bpf, rfc
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (59) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 15:06, 06/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +12 +/
    ну вот и сбылась мечта бекдощиков, виртуальная машина в контексте ядра.
     
     
  • 2.18, inklesspen (ok), 17:54, 06/11/2024 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Так eBPF в ядре с 2011 года 😀
     
     
  • 3.24, Аноним (24), 18:35, 06/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Ну во-первых, пока что широкого применения не замечено, не очень распространен... большой текст свёрнут, показать
     
     
  • 4.29, Аноним (-), 18:57, 06/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >   Ну во-первых, пока что широкого применения не замечено, не очень
    > распространено. Во-вторых, можно ограничить загрузку программ только одним рутом.

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

    > А поскольку байткод аппаратно независим, вот тут-то и расцветут байткодобекдоры, байткодовирусы, байткодочерви от x86_64 до роутеров и Малинок с Апельсинками.

    Эпоха бекдоров в линуксе уже - вон Bvp47 жил в ядре 10 лет.
    И это не считая всяких Miraiʼи, Rexobʼы, Xor DDoSʼы и прочую "радость".


     
     
  • 5.31, Аноним (24), 19:08, 06/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Если официальном репозитории вашего нынешнего дистра лежат пакеты с бекдорами от васянов - меняйте дистр.
     
     
  • 6.37, Аноним (-), 19:58, 06/11/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Если официальном репозитории вашего нынешнего дистра лежат пакеты с бекдорами от васянов - меняйте дистр.

    А если васяном оказался сам разработчик)?
    Или кто-то просто ошибся в коде (чесно-чесно верим))?


     
  • 4.35, Аноним (35), 19:28, 06/11/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Так может именно потому Или не сильно и хотели Линукс хакеры по понятной ... большой текст свёрнут, показать
     
  • 3.60, Аноним (1), 02:22, 07/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    In 2010, Torvalds became a United States citizen and registered to vote in the United States. As of that year, he was unaffiliated with any U.S. political party, saying, "I have way too much personal pride to want to be associated with any of them, quite frankly."

    April 2011 - The first in-kernel Linux just-in-time compiler (JIT compiler) for the classic Berkeley Packet Filter got merged.

    Linus Torvalds said, "BPF has actually been really useful, and the real power of it is how it allows people to do specialized code that isn't enabled until asked for".

     
  • 3.63, Аноним (1), 02:31, 07/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    понятие "бекдор" появилось раньше чем понятие "баг".
     
  • 2.34, Аноним (-), 19:26, 06/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > виртуальная машина в контексте ядра

    А по моему это прекрасно.

     
     
  • 3.61, Аноним (1), 02:25, 07/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Линус с вами согласен.
     
  • 2.41, Аноним (41), 20:29, 06/11/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > ну вот и сбылась мечта бекдощиков, виртуальная машина в контексте ядра.

    И номер стандарта то какой хороший. Толи 96, толи 69... а впрочем разве между этими позами есть разница?! :)

     
     
  • 3.62, Аноним (1), 02:26, 07/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > есть разница?

    вопрос надо адресовать Мяв, ибо она способна понять разницу между х**ом и пальцем.

     

  • 1.2, аНОНИМ (?), 15:11, 06/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    В нетбсд вообще луа в ядре, и ничо.
     
     
  • 2.4, Аноним (4), 15:18, 06/11/2024 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Нетбсд - это неуловимый Джо. Они могут хоть бэйсик в ядро встрить.
     

  • 1.3, Аноним (4), 15:14, 06/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +5 +/
    >более широкому внедрению подобных возможностей до сих пор мешали риски, связанные с нарушением совместимости и необходимостью отслеживания состояния eBPF в ядре

    Ждем первый вирус. Интересно, это будет шифровальщик или майнер?

     
     
  • 2.7, Аноним (7), 15:43, 06/11/2024 [^] [^^] [^^^] [ответить]  
  • +4 +/
    > шифровальщик или майнер?

    прозрачный бекап файлов и/или дампов памяти прямо в Ленгли и Форт-Мид

     
     
  • 3.42, Аноним (41), 20:33, 06/11/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > прозрачный бекап файлов и/или дампов памяти прямо в Ленгли и Форт-Мид

    Вот они заманаются то мои виртуалки по 20 гигз копировать и хранить :). Врядли они допрут рефлинкать их на образ оригинала, а без этого им придется только под одного меня целый датацентр построить.

     
     
  • 4.52, N01 (ok), 22:07, 06/11/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Вы просто не видели размера их датацентров.
     
     
  • 5.56, Аноним (-), 22:33, 06/11/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Вы просто не видели размера их датацентров.

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

     
  • 2.9, Жироватт (ok), 15:54, 06/11/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > ЕГГОГ: This eBPF module need kernel version 7.1.1-RC1 or more. You 7.0.1 is too old to run this module
    > ЕГГОГ: Этот модуль требует наличие флага компиляции -iSCISIv13.199.1
    > Для того чтобы запустить наш вирос, вам нужно: перенести файл wetpussy.ebpf по адресу /local/share/ebpf; выставить права как указано на картинке через утилиту пакет ebpf_chmod (обычный chmod не работает); три раза на промт ввести пароль su; отключить проверку подписи, добавив в гроб параметр ядра FukinSingCHECKPleaseDoNotSetZero=0; поскакать на одной ножке; найти под подушкой красный айфон и тогда, возможно, если процесс не упадет, не найдя пакетов из core, мы вам зашифруем всю систему.
     
  • 2.11, crypt (ok), 16:15, 06/11/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    я думаю, это будет какой-нибудь проприетарный сетевой драйвер от китайцев или nsa, который будет заодно подгружать свой payload.
     
  • 2.25, товарищ майор (?), 18:41, 06/11/2024 [^] [^^] [^^^] [ответить]  
  • –3 +/
    А мы вам предложим резидентный BPF-антивирус. Конечно же, от Касперского, а вы что подумали?
     
     
  • 3.36, Анон36 (?), 19:49, 06/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    тов. майёр, зайдите завтра в отдел кадров, распишитесь в выговоре о НСС

    # ll /opt/kaspersky/kesl/lib64/ | grep 'libbpf'
    -rw-r--r--  2 root root   376128 ноя  4 19:02 libbpf.so
    lrwxrwxrwx  2 root root        9 ноя  4 19:02 libbpf.so.1 -> libbpf.so

     
     
  • 4.59, Аноним (35), 00:40, 07/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Если это легальный аналог Windows-inject&hook идейно
    - было бы даже странно антивирусу, с типичной самозащитой от атак зловредами, не использвоать ВСЕ средства для перехвата контроля ОС...
    В общем, будет не мимо - когда будут дизассемблирванный дамп + комментарии что там именно зловредное.
     

  • 1.5, Аноним (5), 15:39, 06/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +10 +/
    Новость умалчивает, что продвижением eBPF как стандарта для всех ОС среди прочих является Microsoft.
    https://github.com/microsoft/ebpf-for-windows#architectural-overview

    Тут нужно вспомнить, что в Windows 2003 была добавлена отдалённо-схожий набор технологий, который позволял определять собственные куски сетевого стека NDIS еще старых версий, кастомные отладчики, а в последствии хуки на антивирусы и прочие фильтры. Он выполнял примерно те же задачи, то есть позволял кастомному коду встроиться в пайплайны в ядре. И эти технологии даже работали, но с ними была тонна проблем.
    1. Отсутствие вменяемой документации и стабильного API. То есть если ты не вендор-партнёр, то написать такое не выйдет.
    2. Технические ограничения, которые они вводили в развитие сетевого стека NDIS.
    3. Абсолютная несовместимость с какими бы то ни было способами разгрузки (offload) для IO на ASIC-ах.
    4. Нынешнее состояние minifilter drivers и Virtual File System в целом в Windows весьма плачевное

    Вот посмотрите, будет как с Kerberos, который придумали для UNIX, но массово он применяется именно в Windows.

     
     
  • 2.17, Аноним (1), 17:42, 06/11/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > среди прочих является Microsoft.

    ща Нах попросит вас понюхать кое-что :)

     
  • 2.19, Аноним (19), 17:56, 06/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Антивирусы штатно встраивают свои фильтры в сетевой стек Windows уже давно.
     

  • 1.6, Аноним (6), 15:41, 06/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Как это отключить?
     
     
  • 2.8, Аноним (8), 15:53, 06/11/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Отключить стандарт? Найти всех, кто за него топит и сделать им предложение, от которого они не смогут отказаться.
     
  • 2.10, scriptkiddis (?), 15:56, 06/11/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    В этом и пичаль в последних ядрах это уже сильно увязло и фиг отключишь
     
     
  • 3.43, Аноним (41), 20:35, 06/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > В этом и пичаль в последних ядрах это уже сильно увязло и фиг отключишь

    Да вроде отключается себе. Опять тут какие-то теоретики опеннетовские вещают, которые это даже на картинке не видели.

     
  • 2.12, Аноним (4), 16:23, 06/11/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Самому компилять ядро с выключенной поддержкой всего не нужного
     
     
  • 3.20, Аноним (19), 17:59, 06/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    И отлаживать. И бросить все остальные дела.
     
     
  • 4.48, Аноним (-), 20:58, 06/11/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > И отлаживать. И бросить все остальные дела.

    Что вы там отлаживать собрались в отключенной фиче? Если что-то вырубить - там совершенно точно багов не будет, чисто технически :)

     
  • 3.65, Аноним (65), 03:58, 07/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Оно не отключается полностью, умник.
     
  • 2.21, Аноним (19), 18:00, 06/11/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    И уйти в маргиналы. Как systemd?
     

  • 1.14, Аноним (14), 17:28, 06/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Зачем пакетому фильтру виртуальная машина?
     
     
  • 2.16, Аноним (16), 17:41, 06/11/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Нужны динамические правила и трафика там бегает на гигабиты на системе уровня core2. Как-то надо решать.
     

  • 1.15, Аноним (15), 17:41, 06/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Неплохо-неплохо.
    Опять корпы (судя по нытью анонов в этот раз Мелкомягкие) делают для опенсорса и ядра больше, чем "сообщество какиров одиночек".
    Не то чтобы я сильно удивился...
     
     
  • 2.26, Аноним (24), 18:49, 06/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Чего в данном случае они больше делают? Больше коричневой субстанции добавляют?
     
     
  • 3.58, Аноним (58), 23:32, 06/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Ор
     

  • 1.23, Аноним (23), 18:24, 06/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    А что за нытье про вирусы?
    Если кому-то хватит привилегий запустить пэйлоад BPF, то и .ko он без проблем запустит.
     
     
  • 2.27, Аноним (58), 18:52, 06/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Это значит что для вирей можно делать более удобный и близкий к ядру вход?
     
     
  • 3.30, Аноним (30), 19:01, 06/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Ничем он не более удобен, а наоборот. Людей, пишущих на Си на порядки больше, чем знающих BPF на таком уровне. Если у тебя в системе кто-то левый может запустить такие команды, не умеет уже никакого значения, BPF это или нет
     
     
  • 4.32, Аноним (32), 19:12, 06/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > знающих BPF на таком уровне

    На каком, простите, уровне? Книжка про BPF бесплатно в интернете доступна даже из-за забора. Если знаешь английский хоть немного, то не составит труда прочитать. Сам же BPF прост, даже примитивен. Если умеешь не только кодить на Си, но ещё и немного программировать, то разберёшься за пару дней, максимум за неделю.

     
     
  • 5.39, nuclight (??), 20:14, 06/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Разбежался, лол. Там сходу же будет, что твой код не пройдет ядерный верификатор. А потом еще, и еще, и вот еще таким способом тоже не пройдет. Хотя код на Си вполне валидный. У меня в итоге до заведения тикета (https://github.com/iovisor/bcc/issues/5062) в clang дошло, между прочим.

    А когда пройдет верификатор, столкнешься с тем, что предоставляемый инструментарий дичайше кастрирован. Нее, обычного Си-человека за этот отстой писать не посадишь - дофига усилий, включая дизассемблер этого самого BPF.

     
     
  • 6.47, Аноним (47), 20:54, 06/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > А когда пройдет верификатор, столкнешься с тем, что предоставляемый
    > инструментарий дичайше кастрирован. Нее, обычного Си-человека за этот отстой
    > писать не посадишь - дофига усилий, включая дизассемблер этого самого BPF.

    Типичному сишнику - давно надо настучать в бубен за то что кодит аки раздолбай, делает фиг знает что с указателями, вешает вулны и прочий UB. И прописать два года принудительных работ под asan+ubsan, со всеми статическими анализаторами, с расстрелом через повешение за нарушение правил MISRA. Особенно ежели он в кернел лезть удумает.

    Хотя можно и чисто капиталистическими методами - просто заставить оплатить ущерб от очередного CVE. Тоже нормальненько будет, даже почки продать не поможет.

     
  • 6.57, Аноним (57), 23:13, 06/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    А прочитал бы книжку — не было бы «ещё и ещё». Там весьма подробно описано как работает верификация и почему так. И как это дебажить. А ещё там написано как понять, нужно тебе BPF использовать или что-то другое. Но вместо этого ты комментарий на опеннете оставил.
     
  • 4.33, Аноним (24), 19:15, 06/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >Людей, пишущих на Си на порядки больше, чем знающих BPF на таком уровне.
    >Программы BPF обычно создаются на подмножестве языка Си, после чего компилируются в байткод, пригодный для выполнения в виртуальной машине.

    Так что, уметь достаточно в кодинг на C.

     
  • 2.28, Аноним (24), 18:54, 06/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    .ko ещё нужно собрать из исходников. Для этого сами исходники должны быть, во-первых. Во-вторых, есть хороший сдерживающий фактор - Stable API/ABI is nonsence.
     
     
  • 3.46, Аноним (-), 20:46, 06/11/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Во-вторых, есть хороший сдерживающий фактор - Stable API/ABI is nonsence.

    У нормальных людей сдерживающий фактор - подписи модулей ядра уж давно. При том для себя любимого, с своим то ключом - можно врубить и force проверки, а не просто tainted kernel при таком. И хрен вы вообще левый ko загрузите тогда.

    Более того - если вам кажется что рут излишне всемогущ, есть такая штука как режим lockdown. На хомячках им будут, конечно, доступ в их лопатники закрывать. Но ежели для себя - так довольно злая секурити фича.

     
  • 2.45, Аноним (-), 20:42, 06/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Если кому-то хватит привилегий запустить пэйлоад BPF, то и .ko он без проблем запустит.

    А где он мой ключ подписи модулей возьмет, интересно?! Без подписи ядро его пошлет в пешее эротическое.

     
     
  • 3.49, Аноним (49), 21:54, 06/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Ну если у вас действительно все так серьезно и ваша система существует не только в вашем воображении, то вы и ещё 0.001% пользователей можете по поводу модулей не переживать. Но это вряд ли вам поможет, если кто-то уже имеет доступ к системе, достаточный для установки eBPF. Ни модулей ядра, ни BPF в таком случае особо не надо
     
     
  • 4.55, Аноним (-), 22:28, 06/11/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Я действительно умею в сбор ядра своим ходом И много чего еще У меня богатое в... большой текст свёрнут, показать
     

  • 1.40, Аноним (19), 20:15, 06/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Всё идет по плану
    https://en.wikipedia.org/wiki/EBPF
     
  • 1.50, Вы забыли заполнить поле Name (?), 22:01, 06/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Не дальновидные они, нужно было WASM встраивать. Тогда можно было прям из браузера ядро патчить.
     
  • 1.51, Аноним (49), 22:04, 06/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Пишущие тут про шифровальщики - а слабо дать ссылку на PoC хотя бы в лабораторных условиях?
     
     
  • 2.64, Аноним (1), 02:41, 07/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    слабо отвалить за этот лям?
     

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



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

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