Уязвимости Π² подсистСмата eBPF Π½Π° ядрото Π½Π° Linux

Π‘Π΅ΡˆΠ΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°Π½Π° уязвимост (CVE-2021-29154) Π² подсистСмата eBPF, която Π²ΠΈ позволява Π΄Π° стартиратС ΠΌΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ‚ΠΎΡ€ΠΈ Π·Π° прослСдяванС, Π°Π½Π°Π»ΠΈΠ· Π½Π° Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° Π½Π° подсистСмитС ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ°, изпълнявани Π² ядрото Π½Π° Linux Π² спСциална Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½Π° машина с JIT, която позволява Π»ΠΎΠΊΠ°Π»Π΅Π½ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π», Π·Π° Π΄Π° постигнС изпълнСниС Π½Π° своя ΠΊΠΎΠ΄ Π½Π° Π½ΠΈΠ²ΠΎ ядро. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡŠΡ‚ сС появява Π΄ΠΎ вСрсия 5.11.12 (Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ) ΠΈ всС ΠΎΡ‰Π΅ Π½Π΅ Π΅ ΠΊΠΎΡ€ΠΈΠ³ΠΈΡ€Π°Π½ Π² дистрибуции (Debian, Ubuntu, RHEL, Fedora, SUSE, Arch). ΠšΠΎΡ€Π΅ΠΊΡ†ΠΈΡΡ‚Π° сС ΠΏΡ€Π΅Π΄Π»Π°Π³Π° ΠΊΠ°Ρ‚ΠΎ ΠΊΡ€ΡŠΠΏΠΊΠ°.

Π‘ΠΏΠΎΡ€Π΅Π΄ изслСдоватСлитС, ΠΊΠΎΠΈΡ‚ΠΎ са ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°Π»ΠΈ уязвимостта, Ρ‚Π΅ са успСли Π΄Π° разработят Ρ€Π°Π±ΠΎΡ‚Π΅Ρ‰ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ Π½Π° Сксплойта Π·Π° 32- ΠΈ 64-Π±ΠΈΡ‚ΠΎΠ²ΠΈ x86 систСми, ΠΊΠΎΠΉΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΎΡ‚ Π½Π΅ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π». Red Hat ΠΎΠ±Π°Ρ‡Π΅ отбСлязва, Ρ‡Π΅ сСриозността Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° зависи ΠΎΡ‚ Ρ‚ΠΎΠ²Π° Π΄Π°Π»ΠΈ систСмното ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° eBPF Π΅ Π΄ΠΎΡΡ‚ΡŠΠΏΠ½ΠΎ Π·Π° потрСбитСля. НапримСр, Π½Π° RHEL ΠΈ ΠΏΠΎΠ²Π΅Ρ‡Π΅Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΈ Linux дистрибуции Π² конфигурацията ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅, уязвимостта ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС Сксплоатирана, Π°ΠΊΠΎ BPF JIT Π΅ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½ ΠΈ потрСбитСлят ΠΈΠΌΠ° CAP_SYS_ADMIN ΠΏΡ€Π°Π²Π°. ΠšΠ°Ρ‚ΠΎ Π·Π°ΠΎΠ±ΠΈΠΊΠΎΠ»Π½ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ сС ΠΏΡ€Π΅ΠΏΠΎΡ€ΡŠΡ‡Π²Π° Π΄Π° Π΄Π΅Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Ρ‚Π΅ BPF JIT с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π°: echo 0 > /proc/sys/net/core/bpf_jit_enable

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡŠΡ‚ Π΅ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅Π½ ΠΎΡ‚ Π³Ρ€Π΅ΡˆΠΊΠ° ΠΏΡ€ΠΈ изчисляванС Π½Π° отмСстванСто Π·Π° инструкции Π·Π° разклоняванС ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° процСса Π½Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π½Π΅ Π½Π° машинСн ΠΊΠΎΠ΄ Π½Π° JIT ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€Π°. По-спСциално, ΠΊΠΎΠ³Π°Ρ‚ΠΎ сС Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Ρ‚ инструкции Π·Π° разклоняванС, Π½Π΅ сС Π²Π·Π΅ΠΌΠ° ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄, Ρ‡Π΅ отмСстванСто ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ слСд ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π²Π°Π½Π΅ ΠΏΡ€Π΅Π· Π΅Ρ‚Π°ΠΏΠ° Π½Π° оптимизация. Π’ΠΎΠ·ΠΈ пропуск ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π½Π΅ Π½Π° Π°Π½ΠΎΠΌΠ°Π»Π΅Π½ машинСн ΠΊΠΎΠ΄ ΠΈ ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ ΠΌΡƒ Π½Π° Π½ΠΈΠ²ΠΎ ядро.

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

Уязвимостта CVE-2020-27170 Π΅ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅Π½Π° ΠΎΡ‚ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΏΠΎΠΊΠ°Π·Π°Π»Π΅Ρ†Π° Π² BPF Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°, ΠΊΠΎΠ΅Ρ‚ΠΎ причинява спСкулативни ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π·Π° Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ област извън Π³Ρ€Π°Π½ΠΈΡ†ΠΈΡ‚Π΅ Π½Π° Π±ΡƒΡ„Π΅Ρ€Π°. Уязвимостта CVE-2020-27171 сС дълТи Π½Π° цСлочислСна Π³Ρ€Π΅ΡˆΠΊΠ° ΠΏΡ€ΠΈ ΠΏΡ€Π΅ΠΏΡŠΠ»Π²Π°Π½Π΅ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π° с ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ, ΠΊΠΎΠ΅Ρ‚ΠΎ Π²ΠΎΠ΄ΠΈ Π΄ΠΎ спСкулативСн Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ Π΄Π°Π½Π½ΠΈ извън Π±ΡƒΡ„Π΅Ρ€Π°. Π’Π΅Π·ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ Π²Π΅Ρ‡Π΅ са ΠΊΠΎΡ€ΠΈΠ³ΠΈΡ€Π°Π½ΠΈ Π² вСрсии Π½Π° ядрото 5.11.8, 5.10.25, 5.4.107, 4.19.182 ΠΈ 4.14.227 ΠΈ ΡΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° са Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈ Π² Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° ядрото Π·Π° ΠΏΠΎΠ²Π΅Ρ‡Π΅Ρ‚ΠΎ Linux дистрибуции. Π˜Π·ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈΡ‚Π΅ са ΠΏΠΎΠ΄Π³ΠΎΡ‚Π²ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ Π½Π° Сксплойт, ΠΊΠΎΠΉΡ‚ΠΎ позволява Π½Π° Π½Π΅ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π» Π΄Π° ΠΈΠ·Π²Π»ΠΈΡ‡Π° Π΄Π°Π½Π½ΠΈ ΠΎΡ‚ ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° Π½Π° ядрото.

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

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