ΠΠ°ΡΠΊΡΠΎΡΠΎΡΡ ΠΎΠ±ΡΠ°Π²ΠΈ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ° Π½Π° ΠΏΠΎΡΡΠΈΡΡΠ΅ΠΌΠΎΡ eBPF Π·Π° Windows, ΠΊΠΎΡ Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π° Π΄Π° ΡΡΠ°ΡΡΡΠ²Π°ΡΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»Π½ΠΈ ΡΠΏΡΠ°Π²ΡΠ²Π°ΡΠΈ ΠΊΠΎΠΈ ΡΠ°Π±ΠΎΡΠ°Ρ Π½Π° Π½ΠΈΠ²ΠΎ Π½Π° ΡΠ°Π΄ΡΠΎΡΠΎ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΈΠΎΡ ΡΠΈΡΡΠ΅ΠΌ. eBPF ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π° ΠΏΡΠ΅Π²Π΅Π΄ΡΠ²Π°Ρ Π½Π° Π±Π°ΡΡΠ΅ΠΊΠΎΠ΄ Π²Π³ΡΠ°Π΄Π΅Π½ Π²ΠΎ ΠΊΠ΅ΡΠ½Π΅Π»ΠΎΡ, ΡΡΠΎ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π° ΡΠΎΠ·Π΄Π°Π²Π°ΡΠ΅ ΡΠ°ΠΊΡΠ²Π°ΡΠΈ ΡΠΎ ΠΌΡΠ΅ΠΆΠ½ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π²ΡΠΈΡΠ°Π½ΠΈ ΠΎΠ΄ ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΊΠΈΠΎΡ ΠΏΡΠΎΡΡΠΎΡ, ΠΊΠΎΠ½ΡΡΠΎΠ»Π° Π½Π° ΠΏΡΠΈΡΡΠ°ΠΏΠΎΡ ΠΈ ΡΠ»Π΅Π΄Π΅ΡΠ΅ Π½Π° ΡΠ°Π±ΠΎΡΠ°ΡΠ° Π½Π° ΡΠΈΡΡΠ΅ΠΌΠΈΡΠ΅. eBPF Π΅ Π²ΠΊΠ»ΡΡΠ΅Π½ Π²ΠΎ ΠΊΠ΅ΡΠ½Π΅Π»ΠΎΡ Π½Π° Linux ΠΎΠ΄ ΠΎΠ±ΡΠ°Π²ΡΠ²Π°ΡΠ΅ΡΠΎ 3.18 ΠΈ Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π° Π΄Π° ΡΠ°ΠΊΡΠ²Π°ΡΠ΅ ΡΠΎ Π΄ΠΎΡΠ΄ΠΎΠ²Π½ΠΈ/ΠΏΠΎΡΠ΄ΠΎΠ²Π½ΠΈ ΠΌΡΠ΅ΠΆΠ½ΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΈ, ΠΏΡΠ΅ΠΏΡΠ°ΡΠ°ΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠΈ, ΡΠΏΡΠ°Π²ΡΠ²Π°ΡΠ΅ ΡΠΎ ΠΏΡΠΎΠΏΡΡΠ½ΠΈΠΎΡ ΠΎΠΏΡΠ΅Π³, ΠΏΡΠ΅ΡΡΠ΅ΡΠ½ΡΠ²Π°ΡΠ΅ Π½Π° ΡΠΈΡΡΠ΅ΠΌΡΠΊΠΈ ΠΏΠΎΠ²ΠΈΡΠΈ, ΠΊΠΎΠ½ΡΡΠΎΠ»Π° Π½Π° ΠΏΡΠΈΡΡΠ°ΠΏ ΠΈ ΡΠ»Π΅Π΄Π΅ΡΠ΅. ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π° ΡΠΏΠΎΡΡΠ΅Π±Π°ΡΠ° Π½Π° JIT ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡΠ°, Π±Π°ΡΡΠ΅ΠΊΠΎΠ΄ΠΎΡ ΡΠ΅ ΠΏΡΠ΅Π²Π΅Π΄ΡΠ²Π° Π²ΠΎ Π»Π΅Ρ Π²ΠΎ ΠΌΠ°ΡΠΈΠ½ΡΠΊΠΈ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΠΈ ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π° ΡΠΎ ΠΈΠ·Π²Π΅Π΄Π±Π° Π½Π° ΠΊΠΎΠΌΠΏΠ°ΡΠ»ΠΈΡΠ°Π½ ΠΊΠΎΠ΄. eBPF Π·Π° Windows Π΅ ΡΠΎ ΠΎΡΠ²ΠΎΡΠ΅Π½ ΠΊΠΎΠ΄ ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½ΡΠ°ΡΠ° MIT.
eBPF Π·Π° Windows ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ ΡΠΎ ΠΏΠΎΡΡΠΎΠ΅ΡΠΊΠΈΡΠ΅ Π°Π»Π°ΡΠΊΠΈ eBPF ΠΈ ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π° Π³Π΅Π½Π΅ΡΠΈΡΠΊΠΈ API ΡΡΠΎ ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ Π·Π° eBPF Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ Π½Π° Linux. ΠΠ΅ΡΡ Π΄ΡΡΠ³ΠΎΡΠΎ, ΠΏΡΠΎΠ΅ΠΊΡΠΎΡ Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π° Π΄Π° ΠΊΠΎΠΌΠΏΠ°ΡΠ»ΠΈΡΠ°ΡΠ΅ ΠΊΠΎΠ΄ Π½Π°ΠΏΠΈΡΠ°Π½ Π²ΠΎ C Π²ΠΎ eBPF Π±Π°ΡΡΠ΅ΠΊΠΎΠ΄ ΠΊΠΎΡΠΈΡΡΠ΅ΡΡΠΈ Π³ΠΎ ΡΡΠ°Π½Π΄Π°ΡΠ΄Π½ΠΈΠΎΡ ΠΊΠΎΠΌΠΏΠ°ΡΠ»Π΅Ρ eBPF Π±Π°Π·ΠΈΡΠ°Π½ Π½Π° Clang ΠΈ Π΄Π° ΠΈΠ·Π²ΡΡΠΈΡΠ΅ ΡΠ°ΠΊΡΠ²Π°ΡΠΈ eBPF Π²Π΅ΡΠ΅ ΡΠΎΠ·Π΄Π°Π΄Π΅Π½ΠΈ Π·Π° Linux Π½Π° Π²ΡΠ²ΠΎΡ Π½Π° ΠΊΠ΅ΡΠ½Π΅Π»ΠΎΡ Π½Π° Windows, ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π°ΡΡΠΈ ΠΏΠΎΡΠ΅Π±Π΅Π½ ΡΠ»ΠΎΡ Π·Π° ΠΊΠΎΠΌΠΏΠ°ΡΠΈΠ±ΠΈΠ»Π½ΠΎΡΡ ΠΈ ΠΏΠΎΠ΄Π΄ΡΠΆΡΠ²Π°ΡΡΠΈ Π³ΠΎ ΡΡΠ°Π½Π΄Π°ΡΠ΄Π½ΠΈΠΎΡ Libbpf API Π·Π° ΠΊΠΎΠΌΠΏΠ°ΡΠΈΠ±ΠΈΠ»Π½ΠΎΡΡ ΡΠΎ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ ΠΊΠΎΠΈ ΠΊΠΎΠΌΡΠ½ΠΈΡΠΈΡΠ°Π°Ρ ΡΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ΅ eBPF. ΠΠ²Π° Π³ΠΈ Π²ΠΊΠ»ΡΡΡΠ²Π° ΡΠ»ΠΎΠ΅Π²ΠΈΡΠ΅ ΠΊΠΎΠΈ ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π°Π°Ρ ΠΊΡΠΊΠΈ ΡΠ»ΠΈΡΠ½ΠΈ Π½Π° Linux Π·Π° XDP (eXpress Data Path) ΠΈ ΠΏΠΎΠ²ΡΠ·ΡΠ²Π°ΡΠ΅ ΡΠΎ ΡΡΠ΅ΠΊΠ΅Ρ, Π°ΠΏΡΡΡΠ°ΠΊΡΠΈΡΠ°ΡΠ΅ Π½Π° ΠΏΡΠΈΡΡΠ°ΠΏ Π΄ΠΎ ΠΌΡΠ΅ΠΆΠ½ΠΈΠΎΡ ΡΡΠ΅ΠΊ ΠΈ Π΄Π²ΠΈΠ³Π°ΡΠ΅Π»ΠΈ Π½Π° ΠΌΡΠ΅ΠΆΠ°ΡΠ° Π½Π° Windows. ΠΠ»Π°Π½ΠΎΠ²ΠΈΡΠ΅ Π²ΠΊΠ»ΡΡΡΠ²Π°Π°Ρ ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π°ΡΠ΅ Π½Π° ΡΠ΅Π»ΠΎΡΠ½Π° ΠΊΠΎΠΌΠΏΠ°ΡΠΈΠ±ΠΈΠ»Π½ΠΎΡΡ Π½Π° Π½ΠΈΠ²ΠΎ Π½Π° ΠΈΠ·Π²ΠΎΡΠ΅Π½ ΠΊΠΎΠ΄ ΡΠΎ ΡΡΠ°Π½Π΄Π°ΡΠ΄Π½ΠΈ Linux eBPF ΠΏΡΠΎΡΠ΅ΡΠΎΡΠΈ.
ΠΠ»ΡΡΠ½Π°ΡΠ° ΡΠ°Π·Π»ΠΈΠΊΠ° ΠΏΠΎΠΌΠ΅ΡΡ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ°ΡΠ° Π½Π° eBPF Π·Π° Windows Π΅ ΡΠΏΠΎΡΡΠ΅Π±Π°ΡΠ° Π½Π° Π°Π»ΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π΅Π½ ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π°Ρ Π½Π° Π±Π°ΡΡΠ΅ΠΊΠΎΠ΄, ΠΏΡΠ²ΠΈΡΠ½ΠΎ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ ΠΎΠ΄ Π²ΡΠ°Π±ΠΎΡΠ΅Π½ΠΈ Π²ΠΎ VMware ΠΈ ΠΈΡΡΡΠ°ΠΆΡΠ²Π°ΡΠΈ ΠΎΠ΄ ΠΊΠ°Π½Π°Π΄ΡΠΊΠΈ ΠΈ ΠΈΠ·ΡΠ°Π΅Π»ΡΠΊΠΈ ΡΠ½ΠΈΠ²Π΅ΡΠ·ΠΈΡΠ΅ΡΠΈ. ΠΡΠΎΠ²Π΅ΡΡΠ²Π°ΡΠΎΡ ΡΠ°Π±ΠΎΡΠΈ Π²ΠΎ ΠΏΠΎΡΠ΅Π±Π΅Π½, ΠΈΠ·ΠΎΠ»ΠΈΡΠ°Π½ ΠΏΡΠΎΡΠ΅Ρ Π²ΠΎ ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΊΠΈΠΎΡ ΠΏΡΠΎΡΡΠΎΡ ΠΈ ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ ΠΏΡΠ΅Π΄ Π΄Π° ΡΠ΅ ΠΈΠ·Π²ΡΡΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ΅ BPF Π·Π° Π΄Π° ΡΠ΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΡΠ²Π°Π°Ρ Π³ΡΠ΅ΡΠΊΠΈΡΠ΅ ΠΈ Π΄Π° ΡΠ΅ Π±Π»ΠΎΠΊΠΈΡΠ°Π°Ρ ΠΌΠΎΠΆΠ½ΠΈΡΠ΅ Π·Π»ΠΎΠ½Π°ΠΌΠ΅ΡΠ½ΠΈ Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ.
ΠΠ° Π²Π΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΠ°, eBPF Π·Π° Windows ΠΊΠΎΡΠΈΡΡΠΈ ΠΌΠ΅ΡΠΎΠ΄ Π½Π° ΡΡΠ°ΡΠΈΡΠΊΠ° Π°Π½Π°Π»ΠΈΠ·Π° Π·Π°ΡΠ½ΠΎΠ²Π°Π½ Π½Π° ΠΠΏΡΡΡΠ°ΠΊΡΠ½ΠΎ ΡΠΎΠ»ΠΊΡΠ²Π°ΡΠ΅, ΠΊΠΎΠ΅, Π²ΠΎ ΡΠΏΠΎΡΠ΅Π΄Π±Π° ΡΠΎ ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π°ΡΠΎΡ eBPF Π·Π° Linux, ΠΏΠΎΠΊΠ°ΠΆΡΠ²Π° ΠΏΠΎΠΌΠ°Π»Π° ΡΡΠ°ΠΏΠΊΠ° Π½Π° Π»Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ·ΠΈΡΠΈΠ²Π½Π° ΡΡΠ°ΠΏΠΊΠ°, ΠΏΠΎΠ΄Π΄ΡΠΆΡΠ²Π° Π°Π½Π°Π»ΠΈΠ·Π° Π½Π° ΡΠ°ΠΌΠΊΠ° ΠΈ ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π° Π΄ΠΎΠ±ΡΠ° ΠΏΡΠΈΡΠΏΠΎΡΠΎΠ±Π»ΠΈΠ²ΠΎΡΡ. ΠΠ΅ΡΠΎΠ΄ΠΎΡ Π·Π΅ΠΌΠ° ΠΏΡΠ΅Π΄Π²ΠΈΠ΄ ΠΌΠ½ΠΎΠ³Ρ ΡΠΈΠΏΠΈΡΠ½ΠΈ ΠΎΠ±ΡΠ°ΡΡΠΈ Π·Π° ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ Π΄ΠΎΠ±ΠΈΠ΅Π½ΠΈ ΠΎΠ΄ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠ° Π½Π° ΠΏΠΎΡΡΠΎΠ΅ΡΠΊΠΈΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ eBPF.
ΠΠΎ Π²Π΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ°, Π±Π°ΡΡΠ΅ΠΊΠΎΠ΄ΠΎΡ ΡΠ΅ ΠΏΡΠ΅Π½Π΅ΡΡΠ²Π° Π½Π° ΠΏΡΠ΅Π²Π΅Π΄ΡΠ²Π°Ρ ΠΊΠΎΡ ΡΠ°Π±ΠΎΡΠΈ Π½Π° Π½ΠΈΠ²ΠΎ Π½Π° ΡΠ°Π΄ΡΠΎΡΠΎ, ΠΈΠ»ΠΈ ΡΠ΅ ΠΏΡΠ΅Π½Π΅ΡΡΠ²Π° ΠΏΡΠ΅ΠΊΡ JIT ΠΊΠΎΠΌΠΏΠ°ΡΠ»Π΅Ρ, ΠΏΡΠΎΡΠ»Π΅Π΄Π΅Π½ΠΎ ΡΠΎ ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ Π½Π° Π΄ΠΎΠ±ΠΈΠ΅Π½ΠΈΠΎΡ ΠΌΠ°ΡΠΈΠ½ΡΠΊΠΈ ΠΊΠΎΠ΄ ΡΠΎ ΠΏΡΠ°Π²Π° Π½Π° ΡΠ°Π΄ΡΠΎΡΠΎ. ΠΠ° Π΄Π° ΡΠ΅ ΠΈΠ·ΠΎΠ»ΠΈΡΠ°Π°Ρ ΡΠ°ΠΊΡΠ²Π°ΡΠΈΡΠ΅ Π½Π° eBPF Π½Π° Π½ΠΈΠ²ΠΎ Π½Π° ΡΠ°Π΄ΡΠΎΡΠΎ, ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌΠΎΡ HVCI (HyperVisor-enforced Code Integrity), ΠΊΠΎΡ ΠΊΠΎΡΠΈΡΡΠΈ Π°Π»Π°ΡΠΊΠΈ Π·Π° Π²ΠΈΡΡΡΠ΅Π»ΠΈΠ·Π°ΡΠΈΡΠ° Π·Π° Π΄Π° Π³ΠΈ Π·Π°ΡΡΠΈΡΠΈ ΠΏΡΠΎΡΠ΅ΡΠΈΡΠ΅ Π²ΠΎ ΠΊΠ΅ΡΠ½Π΅Π»ΠΎΡ ΠΈ ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π° ΠΏΠΎΡΠ²ΡΠ΄Π° Π·Π° ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠ΅ΡΠΎΡ Π½Π° ΠΈΠ·Π²ΡΡΠ½ΠΈΠΎΡ ΠΊΠΎΠ΄ ΠΊΠΎΡΠΈΡΡΠ΅ΡΡΠΈ Π΄ΠΈΠ³ΠΈΡΠ°Π»Π΅Π½ ΠΏΠΎΡΠΏΠΈΡ. ΠΠ³ΡΠ°Π½ΠΈΡΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° HVCI Π΅ ΡΠΎΠ° ΡΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Π³ΠΈ ΠΏΠΎΡΠ²ΡΠ΄ΠΈ ΡΠ°ΠΌΠΎ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΠ°Π½ΠΈΡΠ΅ eBPF ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ ΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ Π·Π°Π΅Π΄Π½ΠΎ ΡΠΎ JIT (ΠΈΠΌΠ°ΡΠ΅ ΠΈΠ·Π±ΠΎΡ ΠΈΠ»ΠΈ ΠΈΠ·Π²Π΅Π΄Π±Π° ΠΈΠ»ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Π½Π° Π±Π΅Π·Π±Π΅Π΄Π½ΠΎΡΡ).
ΠΠ·Π²ΠΎΡ: opennet.ru