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