Уязвимости Π² подсистСмата eBPF, ΠΊΠΎΠΈΡ‚ΠΎ позволяват заобикалянС Π½Π° Π·Π°Ρ‰ΠΈΡ‚Π° срСщу Spectre Π°Ρ‚Π°ΠΊΠΈ

Π‘Π΅ΡˆΠ΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°Π½Π° уязвимост Π² ядрото Π½Π° Linux (CVE-2021-33624), която позволява Π½Π° подсистСмата eBPF Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° заобикалянС Π½Π° Π·Π°Ρ‰ΠΈΡ‚Π° срСщу уязвимости ΠΎΡ‚ клас Spectre, ΠΊΠΎΠΈΡ‚ΠΎ правят възмоТно опрСдСлянСто Π½Π° ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° Π² Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ Π½Π° създаванС Π½Π° условия Π·Π° спСкулативно изпълнСниС Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ. Атаката Spectre изисква Π½Π°Π»ΠΈΡ‡ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° послСдоватСлност ΠΎΡ‚ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Π² ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½ ΠΊΠΎΠ΄, ΠΊΠΎΠΉΡ‚ΠΎ Π²ΠΎΠ΄ΠΈ Π΄ΠΎ спСкулативно изпълнСниС Π½Π° инструкции. Π§Ρ€Π΅Π· ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€Π°Π½Π΅ Π½Π° BPF ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈ, ΠΏΡ€Π΅Π΄Π°Π΄Π΅Π½ΠΈ Π·Π° изпълнСниС, Π΅ възмоТно Π΄Π° сС Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Ρ‚ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ инструкции Π² eBPF ΠΈ Π΄Π° сС ΠΈΠ·Ρ‚Π΅Ρ‡Π΅ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° Π½Π° ядрото ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»Π½ΠΈ области Π½Π° физичСската ΠΏΠ°ΠΌΠ΅Ρ‚ ΠΏΡ€Π΅Π· странични ΠΊΠ°Π½Π°Π»ΠΈ.

Уязвимостта Π΅ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅Π½Π° ΠΎΡ‚ пропуски Π² Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°, ΠΊΠΎΠΉΡ‚ΠΎ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° ΠΎΡ‚ΠΊΡ€ΠΈΠ²Π°Π½Π΅ Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ ΠΈ Π½Π΅ΠΏΡ€ΠΈΠ΅ΠΌΠ»ΠΈΠ²Π° активност Π² BPF ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ‚Π΅. Π’Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΡŠΡ‚ изброява Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΈΡ‚Π΅ ΠΏΡŠΡ‚ΠΈΡ‰Π° Π·Π° изпълнСниС Π½Π° ΠΊΠΎΠ΄Π°, Π½ΠΎ пропуска ΠΎΠΏΡ†ΠΈΠΈΡ‚Π΅ Π·Π° разклоняванС, ΠΊΠΎΠΈΡ‚ΠΎ са Π½Π΅ΠΏΡ€ΠΈΠ΅ΠΌΠ»ΠΈΠ²ΠΈ ΠΎΡ‚ Π³Π»Π΅Π΄Π½Π° Ρ‚ΠΎΡ‡ΠΊΠ° Π½Π° сСмантиката Π½Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°Ρ‚Π° Π½Π° Π½Π°Π±ΠΎΡ€Π° ΠΎΡ‚ инструкции. ΠŸΡ€ΠΈ изпълнСниС Π½Π° BPF ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° Ρ‚Π°ΠΊΠΈΠ²Π° ΠΎΠΏΡ†ΠΈΠΈ Π·Π° разклоняванС, ΠΊΠΎΠΈΡ‚ΠΎ Π½Π΅ са Π²Π·Π΅Ρ‚ΠΈ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄ ΠΎΡ‚ Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°, ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΎ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄Π΅Π½ΠΈ ΠΎΡ‚ процСсора ΠΈ изпълнСни Π² спСкулативСн Ρ€Π΅ΠΆΠΈΠΌ. НапримСр, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π° опСрацията β€žΠ·Π°Ρ€Π΅ΠΆΠ΄Π°Π½Π΅β€œ, Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΡŠΡ‚ ΠΎΡ‡Π°ΠΊΠ²Π°, Ρ‡Π΅ инструкцията ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Ρ€Π΅Π³ΠΈΡΡ‚ΡŠΡ€ с адрСс, чиято стойност Π²ΠΈΠ½Π°Π³ΠΈ Π΅ Π² посочСнитС Π³Ρ€Π°Π½ΠΈΡ†ΠΈ, Π½ΠΎ атакуващият ΠΌΠΎΠΆΠ΅ Π΄Π° създадС условия, ΠΏΡ€ΠΈ ΠΊΠΎΠΈΡ‚ΠΎ ΠΏΡ€ΠΎΡ†Π΅ΡΠΎΡ€ΡŠΡ‚ Ρ‰Π΅ сС ΠΎΠΏΠΈΡ‚Π° спСкулативно Π΄Π° ΠΈΠ·Π²ΡŠΡ€ΡˆΠΈ опСрация с адрСс, ΠΊΠΎΠΉΡ‚ΠΎ Π½Π΅ отговаря Π½Π° условията Π·Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°.

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡŠΡ‚ сС появява слСд пусканСто Π½Π° ядрото 4.15 ΠΈ Π΅ ΠΊΠΎΡ€ΠΈΠ³ΠΈΡ€Π°Π½ ΠΏΠΎΠ΄ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π½Π° ΠΏΠ°Ρ‡ΠΎΠ²Π΅ (1, 2, 3, 4). Уязвимостта остава нСотстранСна Π² дистрибуции (Debian, RHEL, Ubuntu, Fedora, SUSE, Arch).

ОсвСн Ρ‚ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΎΠ±ΡŠΡ€Π½Π΅Ρ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π±Π΅Π»Π΅ΠΆΠΊΠ°Ρ‚Π° относно Π²ΡŠΠ·Π΄Π΅ΠΉΡΡ‚Π²ΠΈΠ΅Ρ‚ΠΎ Π²ΡŠΡ€Ρ…Ρƒ производитСлността Π½Π° инструмСнтитС Π·Π° Π·Π°Ρ‰ΠΈΡ‚Π° срСщу уязвимости Π½Π° Spectre. Π‘Π΅Π»Π΅ΠΆΠΊΠ°Ρ‚Π° ΠΎΠ±ΠΎΠ±Ρ‰Π°Π²Π° Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈΡ‚Π΅ ΠΎΡ‚ оптимизацията Π½Π° Π΄Π΅Π±ΡŠΠ³Π΅Ρ€Π° rr (Record and Replay), ΠΊΠΎΠΉΡ‚ΠΎ някога Π΅ Π±ΠΈΠ» създадСн Π² Mozilla Π·Π° отстраняванС Π½Π° Ρ‚Ρ€ΡƒΠ΄Π½ΠΈ Π·Π° ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΠΈΠ΅ Π³Ρ€Π΅ΡˆΠΊΠΈ във Firefox. ΠšΠ΅ΡˆΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° систСмнитС извиквания, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ Π·Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ, Π½Π°ΠΌΠ°Π»ΠΈ опСрацията "rr ΠΈΠ·Ρ‚ΠΎΡ‡Π½ΠΈΡ†ΠΈ" Π·Π° тСстовия ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΎΡ‚ 3 ΠΌΠΈΠ½ΡƒΡ‚ΠΈ 19 сСкунди Π½Π° 36 сСкунди.

ΠΠ²Ρ‚ΠΎΡ€ΡŠΡ‚ Π½Π° оптимизацията Ρ€Π΅ΡˆΠΈ Π΄Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈ ΠΊΠ°ΠΊ Ρ‰Π΅ сС ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ производитСлността слСд Π΄Π΅Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½Π΅ Π½Π° Π·Π°Ρ‰ΠΈΡ‚Π°Ρ‚Π° Π½Π° Spectre. Π‘Π»Π΅Π΄ Π·Π°Ρ€Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° систСмата с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€Π° β€žmitigs=offβ€œ, Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π·Π° изпълнСниС Π½Π° β€žrr sourcesβ€œ Π±Π΅Π· оптимизация бСшС 2 ΠΌΠΈΠ½ΡƒΡ‚ΠΈ 5 сСкунди (1.6 ΠΏΡŠΡ‚ΠΈ ΠΏΠΎ-Π±ΡŠΡ€Π·ΠΎ), Π° с оптимизация бСшС 33 сСкунди (9% ΠΏΠΎ-Π±ΡŠΡ€Π·ΠΎ). Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½ΠΎΡ‚ΠΎ Π΅, Ρ‡Π΅ Π΄Π΅Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π·Π°Ρ‰ΠΈΡ‚Π°Ρ‚Π° Π½Π° Spectre Π½Π΅ само Π½Π°ΠΌΠ°Π»ΠΈ Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π·Π° изпълнСниС Π½Π° ΠΊΠΎΠ΄Π° Π½Π° Π½ΠΈΠ²ΠΎ ядро ​​с 1.4 ΠΏΡŠΡ‚ΠΈ (ΠΎΡ‚ 2m9s Π½Π° 1m32s), Π½ΠΎ ΡΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° Π½Π°ΠΌΠ°Π»ΠΈ Π½Π°ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π° Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π·Π° изпълнСниС Π² потрСбитСлското пространство (ΠΎΡ‚ 1m9s Π½Π° 0m33s), вСроятно ΠΏΠΎΡ€Π°Π΄ΠΈ Π½Π°ΠΌΠ°Π»Π΅Π½Π°Ρ‚Π° СфСктивност Π½Π° Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° Π½Π° кСша Π½Π° процСсора ΠΈ TLB Π½ΡƒΠ»ΠΈΡ€Π° сС, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π·Π°Ρ‰ΠΈΡ‚Π°Ρ‚Π° Π½Π° Spectre Π΅ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½Π°.

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€