Microsoft ΠΏΠΎΠ΄Π³ΠΎΡ‚Π²ΠΈ eBPF ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π° Π·Π° Windows

ΠœΠ°Ρ˜ΠΊΡ€ΠΎΡΠΎΡ„Ρ‚ објави ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π° Π½Π° потсистСмот 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 процСсори.

Microsoft ΠΏΠΎΠ΄Π³ΠΎΡ‚Π²ΠΈ eBPF ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π° Π·Π° Windows

ΠšΠ»ΡƒΡ‡Π½Π°Ρ‚Π° Ρ€Π°Π·Π»ΠΈΠΊΠ° ΠΏΠΎΠΌΠ΅Ρ“Ρƒ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π°Ρ‚Π° Π½Π° eBPF Π·Π° Windows Π΅ ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π°Ρ‚Π° Π½Π° Π°Π»Ρ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π΅Π½ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡƒΠ²Π°Ρ‡ Π½Π° Π±Π°Ρ˜Ρ‚Π΅ΠΊΠΎΠ΄, ΠΏΡ€Π²ΠΈΡ‡Π½ΠΎ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ ΠΎΠ΄ Π²Ρ€Π°Π±ΠΎΡ‚Π΅Π½ΠΈ Π²ΠΎ VMware ΠΈ истраТувачи ΠΎΠ΄ канадски ΠΈ израСлски ΡƒΠ½ΠΈΠ²Π΅Ρ€Π·ΠΈΡ‚Π΅Ρ‚ΠΈ. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡƒΠ²Π°Ρ‡ΠΎΡ‚ Ρ€Π°Π±ΠΎΡ‚ΠΈ Π²ΠΎ посСбСн, ΠΈΠ·ΠΎΠ»ΠΈΡ€Π°Π½ процСс Π²ΠΎ корисничкиот простор ΠΈ сС користи ΠΏΡ€Π΅Π΄ Π΄Π° сС ΠΈΠ·Π²Ρ€ΡˆΠ°Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ‚Π΅ BPF Π·Π° Π΄Π° сС ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΡƒΠ²Π°Π°Ρ‚ Π³Ρ€Π΅ΡˆΠΊΠΈΡ‚Π΅ ΠΈ Π΄Π° сС Π±Π»ΠΎΠΊΠΈΡ€Π°Π°Ρ‚ ΠΌΠΎΠΆΠ½ΠΈΡ‚Π΅ Π·Π»ΠΎΠ½Π°ΠΌΠ΅Ρ€Π½ΠΈ активности.

Π—Π° Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°, eBPF Π·Π° Windows користи ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π° статичка Π°Π½Π°Π»ΠΈΠ·Π° заснован Π½Π° Апстрактно Ρ‚ΠΎΠ»ΠΊΡƒΠ²Π°ΡšΠ΅, ΠΊΠΎΠ΅, Π²ΠΎ спорСдба со ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡƒΠ²Π°Ρ‡ΠΎΡ‚ eBPF Π·Π° Linux, ΠΏΠΎΠΊΠ°ΠΆΡƒΠ²Π° ΠΏΠΎΠΌΠ°Π»Π° стапка Π½Π° Π»Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ·ΠΈΡ‚ΠΈΠ²Π½Π° стапка, ΠΏΠΎΠ΄Π΄Ρ€ΠΆΡƒΠ²Π° Π°Π½Π°Π»ΠΈΠ·Π° Π½Π° јамка ΠΈ ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡƒΠ²Π° Π΄ΠΎΠ±Ρ€Π° приспособливост. ΠœΠ΅Ρ‚ΠΎΠ΄ΠΎΡ‚ Π·Π΅ΠΌΠ° ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄ ΠΌΠ½ΠΎΠ³Ρƒ Ρ‚ΠΈΠΏΠΈΡ‡Π½ΠΈ обрасци Π·Π° ΠΈΠ·Π²Ρ€ΡˆΡƒΠ²Π°ΡšΠ΅ Π΄ΠΎΠ±ΠΈΠ΅Π½ΠΈ ΠΎΠ΄ Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚Π° Π½Π° постоСчкитС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈ eBPF.

По Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°Ρ‚Π°, Π±Π°Ρ˜Ρ‚Π΅ΠΊΠΎΠ΄ΠΎΡ‚ сС прСнСсува Π½Π° ΠΏΡ€Π΅Π²Π΅Π΄ΡƒΠ²Π°Ρ‡ кој Ρ€Π°Π±ΠΎΡ‚ΠΈ Π½Π° Π½ΠΈΠ²ΠΎ Π½Π° Ρ˜Π°Π΄Ρ€ΠΎΡ‚ΠΎ, ΠΈΠ»ΠΈ сС прСнСсува ΠΏΡ€Π΅ΠΊΡƒ JIT ΠΊΠΎΠΌΠΏΠ°Ρ˜Π»Π΅Ρ€, прослСдСно со ΠΈΠ·Π²Ρ€ΡˆΡƒΠ²Π°ΡšΠ΅ Π½Π° Π΄ΠΎΠ±ΠΈΠ΅Π½ΠΈΠΎΡ‚ машински ΠΊΠΎΠ΄ со ΠΏΡ€Π°Π²Π° Π½Π° Ρ˜Π°Π΄Ρ€ΠΎΡ‚ΠΎ. Π—Π° Π΄Π° сС ΠΈΠ·ΠΎΠ»ΠΈΡ€Π°Π°Ρ‚ Ρ€Π°ΠΊΡƒΠ²Π°Ρ‡ΠΈΡ‚Π΅ Π½Π° eBPF Π½Π° Π½ΠΈΠ²ΠΎ Π½Π° Ρ˜Π°Π΄Ρ€ΠΎΡ‚ΠΎ, сС користи ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΡ‚ HVCI (HyperVisor-enforced Code Integrity), кој користи Π°Π»Π°Ρ‚ΠΊΠΈ Π·Π° Π²ΠΈΡ€Ρ‚ΡƒΠ΅Π»ΠΈΠ·Π°Ρ†ΠΈΡ˜Π° Π·Π° Π΄Π° Π³ΠΈ Π·Π°ΡˆΡ‚ΠΈΡ‚ΠΈ процСситС Π²ΠΎ ΠΊΠ΅Ρ€Π½Π΅Π»ΠΎΡ‚ ΠΈ ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡƒΠ²Π° ΠΏΠΎΡ‚Π²Ρ€Π΄Π° Π·Π° ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ‚Π΅Ρ‚ΠΎΡ‚ Π½Π° ΠΈΠ·Π²Ρ€ΡˆΠ½ΠΈΠΎΡ‚ ΠΊΠΎΠ΄ ΠΊΠΎΡ€ΠΈΡΡ‚Π΅Ρ˜ΡœΠΈ Π΄ΠΈΠ³ΠΈΡ‚Π°Π»Π΅Π½ потпис. ΠžΠ³Ρ€Π°Π½ΠΈΡ‡ΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ Π½Π° HVCI Π΅ Ρ‚ΠΎΠ° ΡˆΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Π³ΠΈ ΠΏΠΎΡ‚Π²Ρ€Π΄ΠΈ само ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€Π°Π½ΠΈΡ‚Π΅ eBPF ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈ ΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° сС користи Π·Π°Π΅Π΄Π½ΠΎ со JIT (ΠΈΠΌΠ°Ρ‚Π΅ ΠΈΠ·Π±ΠΎΡ€ ΠΈΠ»ΠΈ ΠΈΠ·Π²Π΅Π΄Π±Π° ΠΈΠ»ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»Π½Π° бСзбСдност).

Π˜Π·Π²ΠΎΡ€: opennet.ru

Π”ΠΎΠ΄Π°Π΄Π΅Ρ‚Π΅ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€