Microsoft опублікувала реалізацію підсистеми eBPF для Windows

Microsoft опублікувала реалізацію підсистеми eBPF для Windows

Microsoft опублікувала реалізацію підсистеми eBPF для Windows, що дозволяє запускати довільні обробники, які працюють на рівні ядра операційної системи. eBPF надає вбудований в ядро інтерпретатор байт-коду, який дозволяє створювати обробники мережевих операцій, що використовуються користувачами, контролювати доступ і контролювати продуктивність системи. eBPF включений в ядро Linux з моменту випуску 3.18 і дозволяє обробляти вхідні/вихідні мережеві пакети, перенаправляти пакети, управляти пропускною здатністю, перехоплювати системні виклики, контролювати доступ і виконувати трасування. Завдяки використанню компіляції just-in-time (JIT) байт-код на льоту перекладається в машинні інструкції і виконується з виконанням скомпільованого коду. Вихідний код eBPF для Windows відкритий під ліцензією MIT.

eBPF для Windows може використовуватися з існуючими інструментами для роботи з eBPF і надає типовий API, який використовується для додатків eBPF на Linux. Зокрема, проект дозволяє компілювати код, написаний на мові C, в байт-код eBPF за допомогою стандартного компілятора eBPF на базі Clang і запускати вже створений для Linux обробників eBPF поверх ядра Windows, забезпечуючи спеціальний рівень сумісності і підтримуючи рідний Libbpf API для сумісності з додатками, що взаємодіють з програмами eBPF. Сюди входять Linux-подібні hook-and-XDP (eXpress Data Path) і шари зв'язування сокетів, які абстрагують доступ до мережевого стека і мережевих драйверів Windows. З планів відзначається забезпечення повної сумісності на вихідному рівні з типовими обробниками Linux eBPF.

Ключовою відмінністю реалізації eBPF для Windows є використання альтернативного верифікатора байт-коду , спочатку запропонованого співробітниками VMware і дослідниками з канадських та ізраїльських університетів. Верифікатор запускається в окремому ізольованому  процесі в призначеному для користувача просторі і використовується до виконання програм BPF з метою виявлення помилок і блокування можливої шкідливої активності.

EBPF для Windows використовує абстрактну інтерпретацію, яка в порівнянні з верифікатором Linux eBPF показує більш низький рівень помилкових спрацьовувань, підтримує аналіз циклу і забезпечує хорошу масштабованість. Метод враховує безліч типових шаблонів виконання, отриманих на основі аналізу існуючих програм eBPF.

Після перевірки байт-код передається інтерпретатору рівня ядра або передається через JIT-компілятор з подальшим виконанням отриманого машинного коду з правами ядра. Ізоляція на рівні ядра обробників eBPF використовує механізм цілісності коду (HVCI), що застосовується HyperVisor, який використовує інструменти віртуалізації для захисту процесів в ядрі і забезпечує підтвердження цифровим підписом цілісності виконуваного коду. Обмеженням HVCI є можливість перевірки тільки інтерпретованих програм eBPF і неможливість використання спільно з JIT (надається вибір - або продуктивність, або додатковий захист).

eBPF - відома технологія для забезпечення програмованості та гнучкості, особливо для розширення ядра ОС, для таких випадків використання, як захист DoS та спостережуваність. Цей проект є незавершеним процесом, який дозволяє використовувати існуючі ланцюжки інструментів eBPF та API, знайомі в екосистемі Linux, для використання поверх Windows. Тобто цей проект приймає існуючі проекти eBPF як підмодулі та додає шар між ними, щоб вони працювали поверх Windows.


Опубліковано: 10 травня 2021


Вибрати програмне забезпечення


Напишіть запит на програмне забезпечення нам у Viber
+380503703627


Контакти Ай Ті Про

info@itpro.ua
Телефон: +38 (044) 257-24-44