Π ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° 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
