ΠΠ΅Π·Π±Π΅Π΄Π½ΠΎΡΠ½ΠΈΡΠ΅ ΠΈΡΡΡΠ°ΠΆΡΠ²Π°ΡΠΈ ΠΎΠ΄ Qualys ΠΎΡΠΊΡΠΈΡΠ° Π΄Π΅ΡΠ°Π»ΠΈ Π·Π° Π΄Π²Π΅ ΠΏΡΠΎΠΏΡΡΡΠΈ ΠΊΠΎΠΈ Π²Π»ΠΈΡΠ°Π°Ρ Π½Π° ΠΊΠ΅ΡΠ½Π΅Π»ΠΎΡ Π½Π° Linux ΠΈ Π½Π° ΡΠΈΡΡΠ΅ΠΌΡΠΊΠΈΠΎΡ ΠΌΠ΅Π½Π°ΡΠ΅Ρ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠΎΡ. Π Π°Π½Π»ΠΈΠ²ΠΎΡΡ Π²ΠΎ ΠΊΠ΅ΡΠ½Π΅Π»ΠΎΡ (CVE-2021-33909) ΠΌΡ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π° Π½Π° Π»ΠΎΠΊΠ°Π»Π½ΠΈΠΎΡ ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊ Π΄Π° ΠΏΠΎΡΡΠΈΠ³Π½Π΅ ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ Π½Π° ΠΊΠΎΠ΄ ΡΠΎ ΠΏΡΠ°Π²Π° Π½Π° root ΠΏΡΠ΅ΠΊΡ ΠΌΠ°Π½ΠΈΠΏΡΠ»Π°ΡΠΈΡΠ° ΡΠΎ Π²ΠΈΡΠΎΠΊΠΎ Π²Π³Π½Π΅Π·Π΄Π΅Π½ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΠΌΠΈ.
ΠΠΏΠ°ΡΠ½ΠΎΡΡΠ° ΠΎΠ΄ ΡΠ°Π½Π»ΠΈΠ²ΠΎΡΡΠ° ΡΠ΅ Π²Π»ΠΎΡΡΠ²Π° ΡΠΎ ΡΠ°ΠΊΡΠΎΡ ΡΡΠΎ ΠΈΡΡΡΠ°ΠΆΡΠ²Π°ΡΠΈΡΠ΅ ΠΌΠΎΠΆΠ΅Π° Π΄Π° ΠΏΠΎΠ΄Π³ΠΎΡΠ²Π°Ρ ΡΠ°Π±ΠΎΡΠ½ΠΈ Π΅ΠΊΡΠΏΠ»ΠΎΠ°ΡΠ°ΡΠΈΠΈ ΠΊΠΎΠΈ ΡΠ°Π±ΠΎΡΠ°Ρ Π½Π° Ubuntu 20.04/20.10/21.04, Debian 11 ΠΈ Fedora 34 Π²ΠΎ ΡΡΠ°Π½Π΄Π°ΡΠ΄Π½Π°ΡΠ° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ°. ΠΠ°Π±Π΅Π»Π΅ΠΆΠ°Π½ΠΎ Π΅ Π΄Π΅ΠΊΠ° Π΄ΡΡΠ³ΠΈΡΠ΅ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠΈ Π½Π΅ ΡΠ΅ ΡΠ΅ΡΡΠΈΡΠ°Π½ΠΈ, Π½ΠΎ ΡΠ΅ΠΎΡΠ΅ΡΡΠΊΠΈ ΡΠ΅ ΠΈΡΡΠΎ ΡΠ°ΠΊΠ° ΠΏΠΎΠ΄Π»ΠΎΠΆΠ½ΠΈ Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΡ ΠΈ ΠΌΠΎΠΆΠ°Ρ Π΄Π° Π±ΠΈΠ΄Π°Ρ Π½Π°ΠΏΠ°Π΄Π½Π°ΡΠΈ. Π¦Π΅Π»ΠΎΡΠ½ΠΈΠΎΡ ΠΊΠΎΠ΄ Π½Π° Π΅ΠΊΡΠΏΠ»ΠΎΠ°ΡΠΈΡΠ΅ Π΅ Π²Π΅ΡΠ΅Π½ΠΎ Π΄Π΅ΠΊΠ° ΡΠ΅ Π±ΠΈΠ΄Π΅ ΠΎΠ±ΡΠ°Π²Π΅Π½ ΠΎΡΠΊΠ°ΠΊΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΡ ΡΠ΅ ΡΠ΅ Π΅Π»ΠΈΠΌΠΈΠ½ΠΈΡΠ° Π½Π°ΡΠ΅ΠΊΠ°Π΄Π΅, Π½ΠΎ Π·Π°ΡΠ΅Π³Π° Π΅ Π΄ΠΎΡΡΠ°ΠΏΠ΅Π½ ΡΠ°ΠΌΠΎ ΠΏΡΠΎΡΠΎΡΠΈΠΏ ΡΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡ, ΡΡΠΎ ΠΏΡΠ΅Π΄ΠΈΠ·Π²ΠΈΠΊΡΠ²Π° ΠΏΠ°ΡΠ°ΡΠ΅ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠΎΡ. ΠΡΠΎΠ±Π»Π΅ΠΌΠΎΡ Π΅ ΠΏΡΠΈΡΡΡΠ΅Π½ ΠΎΠ΄ ΡΡΠ»ΠΈ 2014 Π³ΠΎΠ΄ΠΈΠ½Π° ΠΈ Π²Π»ΠΈΡΠ°Π΅ Π½Π° ΠΈΠ·Π΄Π°Π½ΠΈΡΠ°ΡΠ° Π½Π° ΠΊΠ΅ΡΠ½Π΅Π»ΠΎΡ ΠΏΠΎΡΠ½ΡΠ²Π°ΡΡΠΈ ΠΎΠ΄ 3.16. ΠΠΎΠΏΡΠ°Π²ΠΊΠ°ΡΠ° Π½Π° ΡΠ°Π½Π»ΠΈΠ²ΠΎΡΡΠ° Π±Π΅ΡΠ΅ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½ΠΈΡΠ°Π½Π° ΡΠΎ Π·Π°Π΅Π΄Π½ΠΈΡΠ°ΡΠ° ΠΈ ΠΏΡΠΈΡΠ°ΡΠ΅Π½Π° Π²ΠΎ ΠΊΠ΅ΡΠ½Π΅Π»ΠΎΡ Π½Π° 19 ΡΡΠ»ΠΈ. ΠΠ»Π°Π²Π½ΠΈΡΠ΅ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠΈ Π²Π΅ΡΠ΅ Π³Π΅Π½Π΅ΡΠΈΡΠ°Π° Π°ΠΆΡΡΠΈΡΠ°ΡΠ° Π½Π° Π½ΠΈΠ²Π½ΠΈΡΠ΅ ΠΊΠ΅ΡΠ½Π΅Π» ΠΏΠ°ΠΊΠ΅ΡΠΈ (Debian, Ubuntu, Fedora, RHEL, SUSE, Arch).
Π Π°Π½Π»ΠΈΠ²ΠΎΡΡΠ° Π΅ ΠΏΡΠ΅Π΄ΠΈΠ·Π²ΠΈΠΊΠ°Π½Π° ΠΎΠ΄ Π½Π΅ΡΡΠΏΠ΅Ρ ΠΎΡ Π΄Π° ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΈ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΎΡ ΠΎΠ΄ ΠΊΠΎΠ½Π²Π΅ΡΠ·ΠΈΡΠ° ΠΎΠ΄ size_t Π²ΠΎ int ΠΏΡΠ΅Π΄ Π΄Π° ΡΠ΅ ΠΈΠ·Π²ΡΡΠ°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π²ΠΎ ΠΊΠΎΠ΄ΠΎΡ seq_file, ΠΊΠΎΡ ΡΠΎΠ·Π΄Π°Π²Π° Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈ ΠΎΠ΄ Π½ΠΈΠ·Π° Π·Π°ΠΏΠΈΡΠΈ. ΠΠ΅ΡΡΠΏΠ΅Ρ ΠΎΡ Π΄Π° ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅Π·ΡΠ»ΡΠΈΡΠ° ΡΠΎ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΠ΅ Π½Π°Π΄Π²ΠΎΡ ΠΎΠ΄ Π³ΡΠ°Π½ΠΈΡΠΈΡΠ΅ Π²ΠΎ Π±Π°ΡΠ΅ΡΠΎΡ ΠΏΡΠΈ ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅, ΠΌΠΎΠ½ΡΠΈΡΠ°ΡΠ΅ ΠΈ Π±ΡΠΈΡΠ΅ΡΠ΅ ΠΌΠ½ΠΎΠ³Ρ Π²Π³Π½Π΅Π·Π΄Π΅Π½Π° ΡΡΡΡΠΊΡΡΡΠ° Π½Π° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΠΌΠΈ (Π³ΠΎΠ»Π΅ΠΌΠΈΠ½Π° Π½Π° ΠΏΠ°ΡΠ΅ΠΊΠ°ΡΠ° ΠΏΠΎΠ³ΠΎΠ»Π΅ΠΌΠ° ΠΎΠ΄ 1 GB). ΠΠ°ΠΊΠΎ ΡΠ΅Π·ΡΠ»ΡΠ°Ρ Π½Π° ΡΠΎΠ°, Π½Π°ΠΏΠ°ΡΠ°ΡΠΎΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΠΎΡΡΠΈΠ³Π½Π΅ Π½ΠΈΠ·Π° ΠΎΠ΄ 10 Π±Π°ΡΡΠΈ β//ΠΈΠ·Π±ΡΠΈΡΠ°Π½Π°β Π½Π°ΠΏΠΈΡΠ°Π½Π° ΡΠΎ ΠΏΠΎΠΌΠ΅ΡΡΡΠ²Π°ΡΠ΅ ΠΎΠ΄ β-2 GB - 10 Π±Π°ΡΡΠΈβ ΡΡΠΎ ΠΏΠΎΠΊΠ°ΠΆΡΠ²Π° Π½Π° ΠΎΠ±Π»Π°ΡΡΠ° Π²Π΅Π΄Π½Π°Ρ ΠΏΡΠ΅Π΄ Π΄ΠΎΠ΄Π΅Π»Π΅Π½ΠΈΠΎΡ Π±Π°ΡΠ΅Ρ.
ΠΠΎΠ΄Π³ΠΎΡΠ²Π΅Π½ΠΈΠΎΡ Π΅ΠΊΡΠΏΠ»ΠΎΠ°Ρ Π±Π°ΡΠ° 5 GB ΠΌΠ΅ΠΌΠΎΡΠΈΡΠ° ΠΈ 1 ΠΌΠΈΠ»ΠΈΠΎΠ½ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΠΈ ΠΈΠ½ΠΎΠ΄ΠΈ Π·Π° ΡΠ°Π±ΠΎΡΠ°. ΠΠΊΡΠΏΠ»ΠΎΠ°ΡΠΎΡ ΡΠ°Π±ΠΎΡΠΈ ΡΠΎ ΠΏΠΎΠ²ΠΈΠΊΡΠ²Π°ΡΠ΅ Π½Π° mkdir() Π·Π° Π΄Π° ΡΠ΅ ΡΠΎΠ·Π΄Π°Π΄Π΅ Ρ ΠΈΠ΅ΡΠ°ΡΡ ΠΈΡΠ° ΠΎΠ΄ ΠΎΠΊΠΎΠ»Ρ ΠΌΠΈΠ»ΠΈΠΎΠ½ ΠΏΠΎΠ΄Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΠΌΠΈ Π·Π° Π΄Π° ΡΠ΅ ΠΏΠΎΡΡΠΈΠ³Π½Π΅ Π³ΠΎΠ»Π΅ΠΌΠΈΠ½Π° Π½Π° ΠΏΠ°ΡΠ΅ΠΊΠ°ΡΠ° Π½Π° Π΄Π°ΡΠΎΡΠ΅ΠΊΠ°ΡΠ° ΡΡΠΎ Π½Π°Π΄ΠΌΠΈΠ½ΡΠ²Π° 1 GB. ΠΠ²ΠΎΡ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΠΌ Π΅ ΠΌΠΎΠ½ΡΠΈΡΠ°Π½ ΠΏΡΠ΅ΠΊΡ bind-mount Π²ΠΎ ΠΏΠΎΡΠ΅Π±Π΅Π½ ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΊΠΈ ΠΈΠΌΠ΅Π½ΡΠΊΠΈ ΠΏΡΠΎΡΡΠΎΡ, ΠΏΠΎ ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΡΠ°ΡΠ° rmdir() ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π° Π·Π° Π΄Π° ΡΠ΅ ΠΎΡΡΡΡΠ°Π½ΠΈ. ΠΠ°ΡΠ°Π»Π΅Π»Π½ΠΎ, ΡΠ΅ ΠΊΡΠ΅ΠΈΡΠ° Π½ΠΈΡΠΊΠ° ΠΊΠΎΡΠ° Π²ΡΠΈΡΡΠ²Π° ΠΌΠ°Π»Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ° eBPF, ΠΊΠΎΡΠ° Π΅ Π±Π»ΠΎΠΊΠΈΡΠ°Π½Π° Π½Π° ΡΡΠ΅Π½Π°ΡΠ° ΠΏΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΠΏΡΠ΅Π²Π΄ΠΎΠΊΠΎΠ΄ΠΎΡ Π½Π° eBPF, Π½ΠΎ ΠΏΡΠ΅Π΄ Π½Π΅ΡΠ·ΠΈΠ½Π°ΡΠ° JIT ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡΠ°.
ΠΠΎ Π½Π΅ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡΠ°Π½ΠΈΠΎΡ ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΊΠΈ ΠΈΠΌΠ΅Π½ΡΠΊΠΈ ΠΏΡΠΎΡΡΠΎΡ, ΡΠ΅ ΠΎΡΠ²ΠΎΡΠ° Π΄Π°ΡΠΎΡΠ΅ΠΊΠ°ΡΠ° /proc/self/mountinfo ΠΈ ΡΠ΅ ΡΠΈΡΠ° Π΄ΠΎΠ»Π³Π°ΡΠ° ΠΏΠ°ΡΠ΅ΠΊΠ° Π½Π° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΠΌΠΎΡ ΠΌΠΎΠ½ΡΠΈΡΠ°Π½ ΡΠΎ Π²ΡΠ·ΡΠ²Π°ΡΠ΅, ΡΡΠΎ ΡΠ΅Π·ΡΠ»ΡΠΈΡΠ° ΡΠΎ ΡΠΎΠ° ΡΡΠΎ Π½ΠΈΠ·Π°ΡΠ° β//ΠΈΠ·Π±ΡΠΈΡΠ°Π½Π°β ΡΠ΅ Π·Π°ΠΏΠΈΡΡΠ²Π° Π²ΠΎ ΠΎΠ±Π»Π°ΡΡΠ° ΠΏΡΠ΅Π΄ ΠΏΠΎΡΠ΅ΡΠΎΠΊΠΎΡ Π½Π° Π±Π°ΡΠ΅ΡΠΎΡ. ΠΠΎΠ·ΠΈΡΠΈΡΠ°ΡΠ° Π·Π° ΠΏΠΈΡΡΠ²Π°ΡΠ΅ Π½Π° Π»ΠΈΠ½ΠΈΡΠ°ΡΠ° Π΅ ΠΈΠ·Π±ΡΠ°Π½Π° ΡΠ°ΠΊΠ° ΡΡΠΎ ΡΠ°Π° ΡΠ° ΠΏΡΠ΅ΠΏΠΈΡΡΠ²Π° ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡΠ°ΡΠ° Π²ΠΎ Π²Π΅ΡΠ΅ ΡΠ΅ΡΡΠΈΡΠ°Π½Π°ΡΠ°, Π½ΠΎ ΡΓ¨ ΡΡΡΠ΅ Π½Π΅ΠΊΠΎΠΌΠΏΠ°ΡΠ»ΠΈΡΠ°Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ° eBPF.
Π‘Π»Π΅Π΄Π½ΠΎ, Π½Π° Π½ΠΈΠ²ΠΎ Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ° eBPF, Π½Π΅ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠ°Π½ΠΎΡΠΎ ΠΏΠΈΡΡΠ²Π°ΡΠ΅ Π½Π°Π΄Π²ΠΎΡ ΠΎΠ΄ Π±Π°ΡΠ΅ΡΠΎΡ ΡΠ΅ ΡΡΠ°Π½ΡΡΠΎΡΠΌΠΈΡΠ° Π²ΠΎ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠ°Π½Π° ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ Π·Π° ΡΠΈΡΠ°ΡΠ΅ ΠΈ ΠΏΠΈΡΡΠ²Π°ΡΠ΅ Π½Π° Π΄ΡΡΠ³ΠΈ ΡΡΡΡΠΊΡΡΡΠΈ Π½Π° ΡΠ°Π΄ΡΠΎΡΠΎ ΠΏΡΠ΅ΠΊΡ ΠΌΠ°Π½ΠΈΠΏΡΠ»Π°ΡΠΈΡΠ° ΡΠΎ ΡΡΡΡΠΊΡΡΡΠΈΡΠ΅ btf ΠΈ map_push_elem. ΠΠ°ΠΊΠΎ ΡΠ΅Π·ΡΠ»ΡΠ°Ρ Π½Π° ΡΠΎΠ°, Π΅ΠΊΡΠΏΠ»ΠΎΠ°ΡΠΎΡ ΡΠ° ΠΎΠ΄ΡΠ΅Π΄ΡΠ²Π° Π»ΠΎΠΊΠ°ΡΠΈΡΠ°ΡΠ° Π½Π° Π±Π°ΡΠ΅ΡΠΎΡ modprobe_path[] Π²ΠΎ ΠΌΠ΅ΠΌΠΎΡΠΈΡΠ°ΡΠ° Π½Π° ΡΠ°Π΄ΡΠΎΡΠΎ ΠΈ ΡΠ° ΠΏΡΠ΅ΠΏΠΈΡΡΠ²Π° ΠΏΠ°ΡΠ΅ΠΊΠ°ΡΠ° β/sbin/modprobeβ Π²ΠΎ Π½Π΅Π°, ΡΡΠΎ Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π° Π΄Π° ΠΈΠ½ΠΈΡΠΈΡΠ°ΡΠ΅ ΡΡΠ°ΡΡΡΠ²Π°ΡΠ΅ Π½Π° ΠΊΠΎΡΠ° Π±ΠΈΠ»ΠΎ ΠΈΠ·Π²ΡΡΠ½Π° Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° ΡΠΎ ΠΏΡΠ°Π²Π° Π½Π° root Π²ΠΎ ΡΠ»ΡΡΠ°Ρ Π½Π° ΠΠΎΠ²ΠΈΠΊ request_module(), ΠΊΠΎΡ ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π°, Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΈ ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅ Π½Π° Netlink ΡΠΎΠΊΠ΅Ρ.
ΠΡΡΡΠ°ΠΆΡΠ²Π°ΡΠΈΡΠ΅ ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π°Π°Ρ Π½Π΅ΠΊΠΎΠ»ΠΊΡ ΡΠ΅ΡΠ΅Π½ΠΈΡΠ° ΠΊΠΎΠΈ ΡΠ΅ Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΈ ΡΠ°ΠΌΠΎ Π·Π° ΠΎΠ΄ΡΠ΅Π΄Π΅Π½Π° Π΅ΠΊΡΠΏΠ»ΠΎΠ°ΡΠ°ΡΠΈΡΠ°, Π½ΠΎ Π½Π΅ Π³ΠΎ Π΅Π»ΠΈΠΌΠΈΠ½ΠΈΡΠ°Π°Ρ ΡΠ°ΠΌΠΈΠΎΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ. Π‘Π΅ ΠΏΡΠ΅ΠΏΠΎΡΠ°ΡΡΠ²Π° Π΄Π° ΡΠ΅ ΠΏΠΎΡΡΠ°Π²ΠΈ β/proc/sys/kernel/unprivileged_userns_cloneβ Π½Π° 0 Π·Π° Π΄Π° ΡΠ΅ ΠΎΠ½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ°Ρ ΠΌΠΎΠ½ΡΠ°ΠΆΠ½ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΠΌΠΈ Π²ΠΎ ΠΏΠΎΡΠ΅Π±Π΅Π½ ΠΈΠΌΠ΅Π½ΡΠΊΠΈ ΠΏΡΠΎΡΡΠΎΡ Π·Π° ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΊΠΈ ID, Π° β/proc/sys/kernel/unprivileged_bpf_disabledβ Π½Π° 1 Π·Π° Π΄Π° ΡΠ΅ ΠΎΠ½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠΈ Π²ΡΠΈΡΡΠ²Π°ΡΠ΅ Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ΅ eBPF Π²ΠΎ ΡΠ°Π΄ΡΠΎΡΠΎ.
ΠΡΠ΅Π΄ΠΈ Π΄Π° ΡΠ΅ ΠΎΠ΄Π±Π΅Π»Π΅ΠΆΠΈ Π΄Π΅ΠΊΠ° Π΄ΠΎΠ΄Π΅ΠΊΠ° Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠ°Π° Π°Π»ΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π΅Π½ Π½Π°ΠΏΠ°Π΄ ΠΊΠΎΡ Π²ΠΊΠ»ΡΡΡΠ²Π° ΡΠΏΠΎΡΡΠ΅Π±Π° Π½Π° ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΎΡ FUSE Π½Π°ΠΌΠ΅ΡΡΠΎ bind-mound Π·Π° ΠΌΠΎΠ½ΡΠΈΡΠ°ΡΠ΅ Π³ΠΎΠ»Π΅ΠΌ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΠΌ, ΠΈΡΡΡΠ°ΠΆΡΠ²Π°ΡΠΈΡΠ΅ Π½Π°ΠΈΠ΄ΠΎΠ° Π½Π° Π΄ΡΡΠ³Π° ΡΠ°Π½Π»ΠΈΠ²ΠΎΡΡ (CVE-2021-33910) ΡΡΠΎ Π²Π»ΠΈΡΠ°Π΅ΡΠ΅ Π½Π° ΡΠΈΡΡΠ΅ΠΌΡΠΊΠΈΠΎΡ ΡΠΈΡΡΠ΅ΠΌΡΠΊΠΈ ΠΌΠ΅Π½Π°ΡΠ΅Ρ. Π‘Π΅ ΠΈΡΠΏΠΎΡΡΠ°Π²ΠΈ Π΄Π΅ΠΊΠ° ΠΊΠΎΠ³Π° ΡΠ΅ ΠΎΠ±ΠΈΠ΄ΡΠ²Π°ΡΠ΅ Π΄Π° ΠΌΠΎΠ½ΡΠΈΡΠ°ΡΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΠΌ ΡΠΎ Π³ΠΎΠ»Π΅ΠΌΠΈΠ½Π° Π½Π° ΠΏΠ°ΡΠ΅ΠΊΠ° ΠΊΠΎΡΠ° Π½Π°Π΄ΠΌΠΈΠ½ΡΠ²Π° 8 MB ΠΏΡΠ΅ΠΊΡ FUSE, ΠΏΡΠΎΡΠ΅ΡΠΎΡ Π½Π° ΠΈΠ½ΠΈΡΠΈΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡΠ° Π½Π° ΠΊΠΎΠ½ΡΡΠΎΠ»Π°ΡΠ° (PID1) ΡΠ½Π΅ΠΌΡΠ²Π° ΠΎΠ΄ ΠΌΠ΅ΠΌΠΎΡΠΈΡΠ°ΡΠ° Π½Π° ΠΌΠ°Π³Π°ΡΠΈΠ½ΠΎΡ ΠΈ ΠΏΠ°ΡΠ°, ΡΡΠΎ Π³ΠΎ ΡΡΠ°Π²Π° ΡΠΈΡΡΠ΅ΠΌΠΎΡ Π²ΠΎ ΡΠΎΡΡΠΎΡΠ±Π° Π½Π° βΠΏΠ°Π½ΠΈΡΠ½Π°β ΡΠΎΡΡΠΎΡΠ±Π°.
ΠΡΠΎΠ±Π»Π΅ΠΌΠΎΡ Π΅ ΡΡΠΎ systemd ΡΠ° ΡΠ»Π΅Π΄ΠΈ ΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠ° ΡΠΎΠ΄ΡΠΆΠΈΠ½Π°ΡΠ° Π½Π° /proc/self/mountinfo ΠΈ ΡΠ° ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠ²Π° ΡΠ΅ΠΊΠΎΡΠ° ΡΠΎΡΠΊΠ° Π½Π° ΠΌΠΎΠ½ΡΠΈΡΠ°ΡΠ΅ Π²ΠΎ ΡΡΠ½ΠΊΡΠΈΡΠ°ΡΠ° unit_name_path_escape(), ΠΊΠΎΡΠ° Π²ΡΡΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΠ° strdupa() ΠΊΠΎΡΠ° Π³ΠΈ ΡΡΠ°Π²Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈΡΠ΅ Π½Π° ΡΡΠ΅ΠΊ Π½Π°ΠΌΠ΅ΡΡΠΎ Π²ΠΎ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠΊΠΈ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π°ΡΠ° ΠΌΠ΅ΠΌΠΎΡΠΈΡΠ° . ΠΠΈΠ΄Π΅ΡΡΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»Π½Π°ΡΠ° Π³ΠΎΠ»Π΅ΠΌΠΈΠ½Π° Π½Π° ΠΎΡΠ°ΠΊΠΎΡ Π΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π° ΠΏΡΠ΅ΠΊΡ RLIMIT_STACK, ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° ΠΏΡΠ΅Π³ΠΎΠ»Π΅ΠΌΠ° ΠΏΠ°ΡΠ΅ΠΊΠ° Π΄ΠΎ ΡΠΎΡΠΊΠ°ΡΠ° Π½Π° ΠΌΠΎΠ½ΡΠΈΡΠ°ΡΠ΅ ΠΏΡΠ΅Π΄ΠΈΠ·Π²ΠΈΠΊΡΠ²Π° ΠΏΡΠΎΡΠ΅ΡΠΎΡ Π½Π° PID1 Π΄Π° ΠΏΠ°Π΄Π½Π΅ ΠΈ Π΄Π° Π³ΠΎ Π·Π°ΠΏΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΠΎΡ. ΠΠ° Π½Π°ΠΏΠ°Π΄, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π³ΠΎ ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ Π½Π°ΡΠ΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΈΠΎΡ FUSE ΠΌΠΎΠ΄ΡΠ» Π²ΠΎ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡΠ° ΡΠΎ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ Π½Π° Π²ΠΈΡΠΎΠΊΠΎ Π²Π³Π½Π΅Π·Π΄Π΅Π½ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΠΌ ΠΊΠ°ΠΊΠΎ ΡΠΎΡΠΊΠ° Π·Π° ΠΌΠΎΠ½ΡΠΈΡΠ°ΡΠ΅, ΡΠΈΡΠ° Π³ΠΎΠ»Π΅ΠΌΠΈΠ½Π° Π½Π° ΠΏΠ°ΡΠ΅ΠΊΠ°ΡΠ° Π½Π°Π΄ΠΌΠΈΠ½ΡΠ²Π° 8 MB.
ΠΡΠΎΠ±Π»Π΅ΠΌΠΎΡ ΡΠ΅ ΠΏΠΎΡΠ°Π²ΡΠ²Π° ΡΡΡΠ΅ ΠΎΠ΄ systemd 220 (Π°ΠΏΡΠΈΠ» 2015), Π²Π΅ΡΠ΅ Π΅ ΠΏΠΎΠΏΡΠ°Π²Π΅Π½ Π²ΠΎ Π³Π»Π°Π²Π½ΠΎΡΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡΡΠ΅ Π½Π° systemd ΠΈ ΡΠΈΠΊΡΠΈΡΠ°Π½ Π²ΠΎ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠΈΡΠ΅ (Debian, Ubuntu, Fedora, RHEL, SUSE, Arch). ΠΠΌΠ΅Π½ΠΎ, Π²ΠΎ systemd ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ 248 Π΅ΠΊΡΠΏΠ»ΠΎΠ°ΡΠ°ΡΠΈΡΠ°ΡΠ° Π½Π΅ ΡΠ°Π±ΠΎΡΠΈ ΠΏΠΎΡΠ°Π΄ΠΈ Π³ΡΠ΅ΡΠΊΠ° Π²ΠΎ systemd ΠΊΠΎΠ΄ΠΎΡ ΡΡΠΎ ΠΏΡΠ΅Π΄ΠΈΠ·Π²ΠΈΠΊΡΠ²Π° Π½Π΅ΡΡΠΏΠ΅ΡΠ½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° /proc/self/mountinfo. ΠΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ Π΅ ΠΈ ΡΠΎΠ° ΡΡΠΎ Π²ΠΎ 2018 Π³ΠΎΠ΄ΠΈΠ½Π° ΡΠ΅ ΠΏΠΎΡΠ°Π²ΠΈ ΡΠ»ΠΈΡΠ½Π° ΡΠΈΡΡΠ°ΡΠΈΡΠ° ΠΈ ΠΊΠΎΠ³Π° ΡΠ΅ ΠΎΠ±ΠΈΠ΄ΡΠ²Π°Π° Π΄Π° Π½Π°ΠΏΠΈΡΠ°Ρ Π΅ΠΊΡΠΏΠ»ΠΎΠ°Ρ Π·Π° ΡΠ°Π½Π»ΠΈΠ²ΠΎΡΡΠ° CVE-2018-14634 Π²ΠΎ ΠΊΠ΅ΡΠ½Π΅Π»ΠΎΡ Linux, ΠΈΡΡΡΠ°ΠΆΡΠ²Π°ΡΠΈΡΠ΅ Π½Π° Qualys Π½Π°ΠΈΠ΄ΠΎΠ° Π½Π° ΡΡΠΈ ΠΊΡΠΈΡΠΈΡΠ½ΠΈ ΠΏΡΠΎΠΏΡΡΡΠΈ Π²ΠΎ systemd.
ΠΠ·Π²ΠΎΡ: opennet.ru