ΠΠ΅ΡΠ΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΠ°Π½Π° ΡΡΠ·Π²ΠΈΠΌΠΎΡΡ (CVE-2021-4204) Π² ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° eBPF, ΠΊΠΎΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΌΠ°Π½ΠΈΠΏΡΠ»Π°ΡΠΎΡΠΈ Π²ΡΡΡΠ΅ Π² ΡΠ΄ΡΠΎΡΠΎ Π½Π° Linux Π² ΡΠΏΠ΅ΡΠΈΠ°Π»Π½Π° Π²ΠΈΡΡΡΠ°Π»Π½Π° ΠΌΠ°ΡΠΈΠ½Π° Ρ JIT, ΠΊΠΎΠ΅ΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π½Π° Π»ΠΎΠΊΠ°Π»Π΅Π½ Π½Π΅ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡΠΎΠ²Π°Π½ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π» Π΄Π° ΠΏΠΎΡΡΠΈΠ³Π½Π΅ Π΅ΡΠΊΠ°Π»Π°ΡΠΈΡ Π½Π° ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ ΠΈ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΡΠ²ΠΎΡ ΠΊΠΎΠ΄ Π½Π° Π½ΠΈΠ²ΠΎ Π½Π° ΡΠ΄ΡΠΎΡΠΎ Π½Π° Linux. ΠΡΠΎΠ±Π»Π΅ΠΌΡΡ ΡΠ΅ ΠΏΡΠΎΡΠ²ΡΠ²Π° ΠΎΡ ΡΠ΄ΡΠΎΡΠΎ Π½Π° Linux 5.8 ΠΈ ΠΎΡΡΠ°Π²Π° Π½Π΅ΡΠ΅ΡΠ΅Π½ (Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ Π²Π΅ΡΡΠΈΡ 5.16). Π‘ΡΡΡΠΎΡΠ½ΠΈΠ΅ΡΠΎ Π½Π° Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° Π°ΠΊΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Ρ ΠΎΡΡΡΡΠ°Π½ΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π² Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠΈΡΠ΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΏΡΠΎΡΠ»Π΅Π΄ΠΈ Π½Π° ΡΠ΅Π·ΠΈ ΡΡΡΠ°Π½ΠΈΡΠΈ: Debian, RHEL, SUSE, Fedora, Ubuntu, Arch. ΠΠ±ΡΠ²ΡΠ²Π° ΡΠ΅ ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠ°Π±ΠΎΡΠ΅Ρ Π΅ΠΊΡΠΏΠ»ΠΎΠΉΡ, ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΠΏΠ»Π°Π½ΠΈΡΠ° Π΄Π° Π±ΡΠ΄Π΅ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½ Π½Π° 18 ΡΠ½ΡΠ°ΡΠΈ (Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈΡΠ΅ ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ Π΅ Π΄Π°Π΄Π΅Π½Π° ΡΠ΅Π΄ΠΌΠΈΡΠ°, Π·Π° Π΄Π° ΠΊΠΎΡΠΈΠ³ΠΈΡΠ°Ρ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΡΠ°).
Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡΡΠ° Π΅ ΠΏΡΠΈΡΠΈΠ½Π΅Π½Π° ΠΎΡ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»Π½Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° eBPF ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ, ΠΈΠ·ΠΏΡΠ°ΡΠ΅Π½ΠΈ Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅. ΠΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° eBPF ΠΎΡΠΈΠ³ΡΡΡΠ²Π° ΡΠΏΠΎΠΌΠ°Π³Π°ΡΠ΅Π»Π½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ, ΡΠΈΡΡΠΎ ΠΊΠΎΡΠ΅ΠΊΡΠ½ΠΎΡΡ ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π° ΠΎΡ ΡΠΏΠ΅ΡΠΈΠ°Π»Π΅Π½ Π²Π΅ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ. ΠΡΠΊΠΎΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΠ·ΠΈΡΠΊΠ²Π°Ρ ΡΡΠΎΠΉΠ½ΠΎΡΡΡΠ° Π½Π° PTR_TO_MEM Π΄Π° Π±ΡΠ΄Π΅ ΠΏΡΠ΅Π΄Π°Π΄Π΅Π½Π° ΠΊΠ°ΡΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΠΈ Π·Π° Π΄Π° ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠ΅ΠΏΡΠ»Π²Π°Π½Π΅ Π½Π° Π±ΡΡΠ΅ΡΠ°, ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π°ΡΠΈΡΡ ΡΡΡΠ±Π²Π° Π΄Π° Π·Π½Π°Π΅ ΡΠ°Π·ΠΌΠ΅ΡΠ° Π½Π° ΠΏΠ°ΠΌΠ΅ΡΡΠ°, ΡΠ²ΡΡΠ·Π°Π½Π° Ρ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°. ΠΠ° ΡΡΠ½ΠΊΡΠΈΠΈΡΠ΅ bpf_ringbuf_submit ΠΈ bpf_ringbuf_discard Π΄Π°Π½Π½ΠΈΡΠ΅ Π·Π° ΡΠ°Π·ΠΌΠ΅ΡΠ° Π½Π° ΠΏΡΠ΅Ρ Π²ΡΡΠ»Π΅Π½Π°ΡΠ° ΠΏΠ°ΠΌΠ΅Ρ Π½Π΅ ΡΠ° Π΄ΠΎΠΊΠ»Π°Π΄Π²Π°Π½ΠΈ Π½Π° Π²Π΅ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ°, ΠΊΠΎΠ΅ΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° ΠΏΡΠ΅Π·Π°ΠΏΠΈΡΠ²Π°Π½Π΅ Π½Π° ΠΎΠ±Π»Π°ΡΡΠΈ Π½Π° ΠΏΠ°ΠΌΠ΅ΡΡΠ° ΠΈΠ·Π²ΡΠ½ Π³ΡΠ°Π½ΠΈΡΠ°ΡΠ° Π½Π° Π±ΡΡΠ΅ΡΠ° ΠΏΡΠΈ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΎ ΡΡΠ·Π΄Π°Π΄Π΅Π½ eBPF ΠΊΠΎΠ΄.
ΠΠ° Π΄Π° ΠΈΠ·Π²ΡΡΡΠΈ Π°ΡΠ°ΠΊΠ°, ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΡ ΡΡΡΠ±Π²Π° Π΄Π° ΠΌΠΎΠΆΠ΅ Π΄Π° Π·Π°ΡΠ΅Π΄ΠΈ ΡΠ²ΠΎΡΡΠ° BPF ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ° ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠΊΠΎΡΠΎΡΠ½ΠΈ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠΈ Π½Π° Linux Π±Π»ΠΎΠΊΠΈΡΠ°Ρ ΡΠΎΠ²Π° ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ (Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ Π½Π΅ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΡΡ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ eBPF Π²Π΅ΡΠ΅ Π΅ Π·Π°Π±ΡΠ°Π½Π΅Π½ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Π² ΡΠ°ΠΌΠΎΡΠΎ ΡΠ΄ΡΠΎ, ΠΊΠ°ΡΠΎ ΡΠ΅ Π·Π°ΠΏΠΎΡΠ½Π΅ ΠΎΡ Π²Π΅ΡΡΠΈΡ 5.16). ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΡΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π° Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ° ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Π½Π° Ubuntu 20.04 LTS, Π½ΠΎ Π² ΡΡΠ΅Π΄ΠΈΡΠ΅ Ubuntu 22.04-dev, Debian 11, openSUSE 15.3, RHEL 8.5, SUSE 15-SP4 ΠΈ Fedora 33 ΡΠ΅ ΠΏΠΎΡΠ²ΡΠ²Π° ΡΠ°ΠΌΠΎ Π°ΠΊΠΎ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΡΡ Π΅ Π·Π°Π΄Π°Π» ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡΡΡ kernel.unprivileged_bpf_disabled Π½Π° 0. ΠΠ°ΡΠΎ Π·Π°ΠΎΠ±ΠΈΠΊΠΎΠ»Π½ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π·Π° Π±Π»ΠΎΠΊΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΡΠ°, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π΄Π΅Π°ΠΊΡΠΈΠ²ΠΈΡΠ°ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° BPF ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ ΠΎΡ Π½Π΅ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡΠΎΠ²Π°Π½ΠΈ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° "sysctl -w kernel.unprivileged_bpf_disabled=1".
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru