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

Π’ ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Ρ‰Π°Ρ‚Π° систСма eBPF, която позволява стартиранС Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈ Π·Π° прослСдяванС, Π°Π½Π°Π»ΠΈΠ· Π½Π° Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° Π½Π° подсистСми ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ°, изпълнявани Π² ядрото Π½Π° Linux Π² спСциална Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½Π° машина с JIT, Π΅ ΠΎΡ‚ΠΊΡ€ΠΈΡ‚ΠΎ уязвимост (CVE-2021-29154), ΠΊΠΎΠ΅Ρ‚ΠΎ позволява Π½Π° Π»ΠΎΠΊΠ°Π»Π΅Π½ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π» Π΄Π° изпълни свой ΠΊΠΎΠ΄ Π½Π° Π½ΠΈΠ²ΠΎ ядро. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡŠΡ‚ сС проявява Π΄ΠΎ вСрсия 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 Π΅ ΡΠ²ΡŠΡ€Π·Π°Π½Π° с Π³Ρ€Π΅ΡˆΠΊΠ° Π² цСлочислСната Π°Ρ€ΠΈΡ‚ΠΌΠ΅Ρ‚ΠΈΠΊΠ° (integer underflow) ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π° с ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ, Π²ΠΎΠ΄Π΅Ρ‰Π° Π΄ΠΎ спСкулативСн Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ Π΄Π°Π½Π½ΠΈ извън Π±ΡƒΡ„Π΅Ρ€Π°. Π’Π΅Π·ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ Π²Π΅Ρ‡Π΅ са отстранСни Π² вСрсии Π½Π° ядрото 5.11.8, 5.10.25, 5.4.107, 4.19.182 ΠΈ 4.14.227, ΠΈ ΡΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° са Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈ Π² Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈΡ‚Π΅ Π½Π° ядрото Π½Π° ΠΏΠΎΠ²Π΅Ρ‡Π΅Ρ‚ΠΎ дистрибуции Π½Π° Linux. Π˜Π·ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈΡ‚Π΅ са ΠΏΠΎΠ΄Π³ΠΎΡ‚Π²ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ Π½Π° Сксплоит, позволяващ Π½Π° Π½Π΅ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π» Π΄Π° ΠΈΠ·Π²Π»Π΅Ρ‡Π΅ Π΄Π°Π½Π½ΠΈ ΠΎΡ‚ ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° Π½Π° ядрото.

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

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster