|
| 1 | +--- |
| 2 | +title: eBPF |
| 3 | +status: Completed |
| 4 | +category: Technology |
| 5 | +tags: ["architecture", "networking", "security"] |
| 6 | +--- |
| 7 | + |
| 8 | +eBPF (англ. extended Berkley Packet Filter — расширенный фильтр пакетов Беркли) это технология, |
| 9 | +которая позволяет небольшим программам или скриптам запускаться в пространстве ядра ОС Линукс |
| 10 | +без необходимости изменять код ядра или загружать модули ядра. |
| 11 | + |
| 12 | +ОС Линукс имеет два пространства: пространство ядра (kernel space) и пользовательское (user space). |
| 13 | +Ядро представляет основу операционной системы и имеет неограниченный доступ к аппаратному обеспечению. |
| 14 | + |
| 15 | +Приложения находятся в пользовательском пространстве. |
| 16 | +Когда возникает необходимость в привилегированном доступе, приложения отправляют запрос к ядру. |
| 17 | +Для приложений, требующих большей свободы действий, например, для прямого доступа к аппаратному обеспечению, |
| 18 | +ядро может быть расширено за счёт моделей ядра Линукс. |
| 19 | +Такой подход расширяет стандартные функции ядра, давая приложениям доступ к низкоуровневым компонентам. |
| 20 | +Однако расширение ядра за счет модулей влечет за собой риски безопасности, делая eBPF привлекательной альтернативой. |
| 21 | + |
| 22 | +## Какую проблему решает |
| 23 | + |
| 24 | +Как правило, приложения работают в пользовательском пространстве, |
| 25 | +и если возникает необходимость в привилегированном доступе (например, доступ к аппаратному обеспечению), |
| 26 | +приложение отправляет запрос к ядру также известный как "системный вызов". |
| 27 | +В большинстве случает такой подход прекрасно работает. |
| 28 | +Однако бывают ситуации, когда разработчики нуждаются в более низкоуровневом доступе к системе. |
| 29 | +Такие ситуации, как правило, связаны с наблюдаемостью (observability), безопасностью и работой с сетью. |
| 30 | +Использование модулей ядра Линукс позволяет решить вышеупомянутую проблему без изменения исходного кода ядра. |
| 31 | +Но несмотря на преимущества, такой подход влечет за собой риски безопасности. |
| 32 | +Код модулей ядра работает в пространстве ядра, а это значит, что сбой модуля неминуемо приводит к сбою всего ядра и как следствие — сбою всей аппаратной системы. |
| 33 | +Вдобавок, модули ядра имеют повышенные привилегии и прямой доступ к системным ресурсам. Без должной безопасности, они могут стать источником уязвимостей для хакеров. |
| 34 | + |
| 35 | +## Как именно решает проблему |
| 36 | + |
| 37 | +По сравнению с модулями ядра, eBPF предоставляет более контролируемую и ограниченную среду для исполнения пользовательских программ. |
| 38 | +eBPF программа запускается в "песочнице" внутри ядра, обеспечивая тем самым изоляцию и снижая риски. |
| 39 | +Если в eBPF программе обнаружится уязвимость или недочет, то их воздействие будет ограничено "песочницей". |
| 40 | +Более того, прежде чем программа сможет запуститься внутри ядра, она должна пройти процесс верификации. |
| 41 | +Верификатор проверяет eBPF программу на наличие потенциально небезопасного кода, |
| 42 | +такого как доступ к памяти за пределами выделенного буфера, бесконечные циклы и неавторизованный доступ к функциям ядра. |
| 43 | +Верификация гарантирует что eBPF программа не войдет в бесконечный цикл и не приведет к сбою ядра. |
| 44 | +Эти меры безопасности делают eBPF более надежным вариантом запуска приложений в ядре, по сравнению с модулями ядра Линукс. |
| 45 | + |
0 commit comments