ΠΠ΅ΡΠ΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΠ°Π½Π° ΡΡΠ·Π²ΠΈΠΌΠΎΡΡ (CVE-2022-0185) Π² API Π·Π° ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ²Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ°, ΠΎΡΠΈΠ³ΡΡΠ΅Π½ ΠΎΡ ΡΠ΄ΡΠΎΡΠΎ Π½Π° Linux, ΠΊΠΎΡΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈ Π½Π° Π»ΠΎΠΊΠ°Π»Π΅Π½ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π» Π΄Π° ΠΏΠΎΠ»ΡΡΠΈ root ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ Π² ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ°. ΠΠ·ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΡ, ΠΊΠΎΠΉΡΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°, ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π° Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΡ Π½Π° Π΅ΠΊΡΠΏΠ»ΠΎΠΉΡ, ΠΊΠΎΠΉΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΠΊΠΎΠ΄ΡΡ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π° ΠΊΠ°ΡΠΎ root Π½Π° Ubuntu 20.04 Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ° ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅. ΠΠ»Π°Π½ΠΈΡΠ° ΡΠ΅ Π΅ΠΊΡΠΏΠ»ΠΎΠΉΡ ΠΊΠΎΠ΄ΡΡ Π΄Π° Π±ΡΠ΄Π΅ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½ Π² GitHub Π² ΡΠ°ΠΌΠΊΠΈΡΠ΅ Π½Π° Π΅Π΄Π½Π° ΡΠ΅Π΄ΠΌΠΈΡΠ°, ΡΠ»Π΅Π΄ ΠΊΠ°ΡΠΎ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠΈΡΠ΅ ΠΏΡΡΠ½Π°Ρ Π°ΠΊΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ, ΠΊΠΎΡΠΈΠ³ΠΈΡΠ°ΡΠ° ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΡΠ°.
Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡΡΠ° ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π° Π²ΡΠ² ΡΡΠ½ΠΊΡΠΈΡΡΠ° legacy_parse_param() Π²ΡΠ² VFS ΠΈ Π΅ ΠΏΡΠΈΡΠΈΠ½Π΅Π½Π° ΠΎΡ Π»ΠΈΠΏΡΠ° Π½Π° ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ Π²Π°Π»ΠΈΠ΄ΠΈΡΠ°Π½Π΅ Π½Π° ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»Π½ΠΈΡ ΡΠ°Π·ΠΌΠ΅Ρ Π½Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π΅Π½ΠΈ Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ²ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ, ΠΊΠΎΠΈΡΠΎ Π½Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Ρ API Π·Π° ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ²Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ°. ΠΠΊΠΎ ΠΏΠΎΠ΄Π°Π΄Π΅ΡΠ΅ ΡΠ²ΡΡΠ΄Π΅ Π³ΠΎΠ»ΡΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΡΠ΅Π΄ΠΈΠ·Π²ΠΈΠΊΠ°ΡΠ΅ ΠΏΡΠ΅ΠΏΡΠ»Π²Π°Π½Π΅ Π½Π° ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π°ΡΠ° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π° Π·Π° ΠΈΠ·ΡΠΈΡΠ»ΡΠ²Π°Π½Π΅ Π½Π° ΡΠ°Π·ΠΌΠ΅ΡΠ° Π½Π° Π·Π°ΠΏΠΈΡΠ²Π°Π½ΠΈΡΠ΅ Π΄Π°Π½Π½ΠΈ - ΠΊΠΎΠ΄ΡΡ ΠΈΠΌΠ° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π·Π° ΠΏΡΠ΅ΠΏΡΠ»Π²Π°Π½Π΅ Π½Π° Π±ΡΡΠ΅ΡΠ° "if (len > PAGE_SIZE - 2 - size)", ΠΊΠΎΠ΅ΡΠΎ ΠΏΡΠ°Π²ΠΈ Π½Π΅ ΡΠ°Π±ΠΎΡΠΈ, Π°ΠΊΠΎ ΡΡΠΎΠΉΠ½ΠΎΡΡΡΠ° Π½Π° size Π΅ ΠΏΠΎ-Π³ΠΎΠ»ΡΠΌΠ° ΠΎΡ 4094 ΠΏΠΎΡΠ°Π΄ΠΈ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½ΠΎ ΠΏΡΠ΅ΠΏΡΠ»Π²Π°Π½Π΅ ΠΏΡΠ΅Π· Π΄ΠΎΠ»Π½Π°ΡΠ° Π³ΡΠ°Π½ΠΈΡΠ° (ΡΡΠ»ΠΎΡΠΈΡΠ»Π΅Π½ΠΎ ΠΏΡΠ΅ΠΏΡΠ»Π²Π°Π½Π΅, ΠΊΠΎΠ³Π°ΡΠΎ ΠΏΡΠ΅Ρ Π²ΡΡΠ»ΠΈΡΠ΅ 4096 - 2 - 4095 ΠΊΡΠΌ unsigned int, ΠΏΠΎΠ»ΡΡΠ°Π²Π°ΡΠ΅ 2147483648).
Π’Π°Π·ΠΈ Π³ΡΠ΅ΡΠΊΠ° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΠΏΡΠΈ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠ°Π½ΠΎ FS ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π΄Π° ΠΏΡΠ΅Π΄ΠΈΠ·Π²ΠΈΠΊΠ° ΠΏΡΠ΅ΠΏΡΠ»Π²Π°Π½Π΅ Π½Π° Π±ΡΡΠ΅ΡΠ° ΠΈ Π΄Π° ΠΏΡΠ΅Π·Π°ΠΏΠΈΡΠ΅ Π΄Π°Π½Π½ΠΈΡΠ΅ Π½Π° ΡΠ΄ΡΠΎΡΠΎ ΡΠ»Π΅Π΄ ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π°ΡΠ° ΠΎΠ±Π»Π°ΡΡ Π½Π° ΠΏΠ°ΠΌΠ΅ΡΡΠ°. ΠΠ° Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΡΠ°, ΡΠ° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈ ΠΏΡΠ°Π²Π° Π½Π° CAP_SYS_ADMIN, Ρ.Π΅. Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΡΠΊΠΈ ΠΏΡΠ°Π²Π°. ΠΡΠΎΠ±Π»Π΅ΠΌΡΡ Π΅, ΡΠ΅ Π½Π΅ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡΠΎΠ²Π°Π½ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π» ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΠΎΠ»ΡΡΠΈ ΡΠ°ΠΊΠΈΠ²Π° ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ Π² ΠΈΠ·ΠΎΠ»ΠΈΡΠ°Π½ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ, Π°ΠΊΠΎ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π·Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΈ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΎΡ ΠΈΠΌΠ΅Π½Π° Π΅ Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½Π° Π² ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΈΡΠ΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΎΡ ΠΈΠΌΠ΅Π½Π° ΡΠ° Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½ΠΈ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Π² Ubuntu ΠΈ Fedora, Π½ΠΎ Π½Π΅ ΡΠ° Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½ΠΈ Π² Debian ΠΈ RHEL (ΠΎΡΠ²Π΅Π½ Π°ΠΊΠΎ Π½Π΅ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΈ Π·Π° ΠΈΠ·ΠΎΠ»ΠΈΡΠ°Π½Π΅ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ).
ΠΡΠΎΠ±Π»Π΅ΠΌΡΡ ΡΠ΅ ΠΏΡΠΎΡΠ²ΡΠ²Π° ΠΎΡ ΡΠ΄ΡΠΎΡΠΎ Π½Π° Linux 5.1 ΠΈ Π΅ ΠΊΠΎΡΠΈΠ³ΠΈΡΠ°Π½ Π²ΡΠ² Π²ΡΠ΅ΡΠ°ΡΠ½ΠΈΡΠ΅ Π°ΠΊΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ 5.16.2, 5.15.16, 5.10.93, 5.4.173. ΠΠ΅ΡΠ΅ ΡΠ° ΠΏΡΡΠ½Π°ΡΠΈ Π°ΠΊΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ Π·Π° ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ Π·Π° RHEL, Debian, Fedora, Ubuntu. ΠΠΎΡΠ΅ΠΊΡΠΈΡΡΠ° Π²ΡΠ΅ ΠΎΡΠ΅ Π½Π΅ Π΅ Π½Π°Π»ΠΈΡΠ½Π° Π·Π° Arch Linux, Gentoo, SUSE ΠΈ openSUSE. ΠΠ°ΡΠΎ Π·Π°ΡΠΈΡΠ½ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π·Π° ΡΠΈΡΡΠ΅ΠΌΠΈ, ΠΊΠΎΠΈΡΠΎ Π½Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΈΠ·ΠΎΠ»Π°ΡΠΈΡ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π·Π°Π΄Π°Π΄Π΅ΡΠ΅ ΡΡΠΎΠΉΠ½ΠΎΡΡΡΠ° Π½Π° sysctl "user.max_user_namespaces" Π½Π° 0: echo "user.max_user_namespaces=0" > /etc/sysctl.d/userns.conf # sysctl -p / ΠΈ Ρ.Π½./ sysctl.d/userns.conf
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru