Microsoft telah menyiapkan implementasi eBPF untuk Windows

Microsoft telah menerbitkan implementasi subsistem eBPF untuk Windows, yang memungkinkan Anda meluncurkan penangan arbitrer yang berjalan pada tingkat kernel sistem operasi. eBPF menyediakan penerjemah bytecode yang terpasang di dalam kernel, yang memungkinkan pembuatan penangan operasi jaringan yang dimuat dari ruang pengguna, mengontrol akses, dan memantau pengoperasian sistem. eBPF telah disertakan dalam kernel Linux sejak rilis 3.18 dan memungkinkan Anda menangani paket jaringan masuk/keluar, penerusan paket, manajemen bandwidth, intersepsi panggilan sistem, kontrol akses, dan penelusuran. Berkat penggunaan kompilasi JIT, bytecode diterjemahkan dengan cepat ke dalam instruksi mesin dan dieksekusi dengan kinerja kode yang dikompilasi. eBPF untuk Windows adalah sumber terbuka di bawah lisensi MIT.

eBPF untuk Windows dapat digunakan dengan alat eBPF yang ada dan menyediakan API umum yang digunakan untuk aplikasi eBPF di Linux. Antara lain, proyek ini memungkinkan Anda untuk mengkompilasi kode yang ditulis dalam C ke dalam bytecode eBPF menggunakan kompiler eBPF standar berbasis Clang dan menjalankan penangan eBPF yang sudah dibuat untuk Linux di atas kernel Windows, menyediakan lapisan kompatibilitas khusus dan mendukung Libbpf standar API untuk kompatibilitas dengan aplikasi yang berinteraksi dengan program eBPF. Ini termasuk lapisan yang menyediakan kait mirip Linux untuk XDP (eXpress Data Path) dan pengikatan soket, mengabstraksi akses ke tumpukan jaringan dan driver jaringan Windows. Rencananya termasuk menyediakan kompatibilitas tingkat kode sumber penuh dengan prosesor eBPF Linux standar.

Microsoft telah menyiapkan implementasi eBPF untuk Windows

Perbedaan utama antara implementasi eBPF untuk Windows adalah penggunaan pemverifikasi bytecode alternatif, yang awalnya diusulkan oleh karyawan VMware dan peneliti dari universitas Kanada dan Israel. Pemverifikasi berjalan dalam proses terpisah dan terisolasi di ruang pengguna dan digunakan sebelum menjalankan program BPF untuk mengidentifikasi kesalahan dan memblokir kemungkinan aktivitas jahat.

Untuk verifikasi, eBPF untuk Windows menggunakan metode analisis statis berdasarkan Interpretasi Abstrak, yang dibandingkan dengan pemverifikasi eBPF untuk Linux, menunjukkan tingkat positif palsu yang lebih rendah, mendukung analisis loop, dan memberikan skalabilitas yang baik. Metode ini memperhitungkan banyak pola eksekusi tipikal yang diperoleh dari analisis program eBPF yang ada.

Setelah verifikasi, bytecode ditransfer ke juru bahasa yang berjalan di tingkat kernel, atau melewati kompiler JIT, diikuti dengan eksekusi kode mesin yang dihasilkan dengan hak kernel. Untuk mengisolasi penangan eBPF di tingkat kernel, digunakan mekanisme HVCI (HyperVisor-enforced Code Integrity), yang menggunakan alat virtualisasi untuk melindungi proses di kernel dan memberikan konfirmasi integritas kode yang dijalankan menggunakan tanda tangan digital. Keterbatasan HVCI adalah ia hanya dapat memverifikasi program eBPF yang ditafsirkan dan tidak dapat digunakan bersama dengan JIT (Anda mempunyai pilihan antara kinerja atau keamanan tambahan).

Sumber: opennet.ru

Tambah komentar