Π API Filesystem Context, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΠ½ΠΎ ΠΎΡ ΡΠ΄ΡΠΎΡΠΎ Π½Π° Linux, Π΅ ΠΎΡΠΊΡΠΈΡΠ° ΡΡΠ·Π²ΠΈΠΌΠΎΡΡ (CVE-2022-0185), ΠΊΠΎΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π½Π° Π»ΠΎΠΊΠ°Π»Π΅Π½ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π» Π΄Π° ΠΏΠΎΠ»ΡΡΠΈ root ΠΏΡΠ°Π²Π° Π² ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ°. ΠΠ·ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΡ, ΠΊΠΎΠΉΡΠΎ Π΅ ΠΎΡΠΊΡΠΈΠ» ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°, ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π° Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΡ Π½Π° Π΅ΠΊΡΠΏΠ»ΠΎΠΉΡ, ΠΊΠΎΠΉΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ΄ Ρ root ΠΏΡΠ°Π²Π° Π² Ubuntu 20.04 Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅. ΠΠΎΠ΄ΡΡ Π½Π° Π΅ΠΊΡΠΏΠ»ΠΎΠΉΡΠ° ΡΠ΅ Π±ΡΠ΄Π΅ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½ Π² GitHub Π² ΡΠ°ΠΌΠΊΠΈΡΠ΅ Π½Π° Π΅Π΄Π½Π° ΡΠ΅Π΄ΠΌΠΈΡΠ° ΡΠ»Π΅Π΄ ΠΊΠ°ΡΠΎ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠΈΡΠ΅ ΠΈΠ·Π΄Π°Π΄ΠΎΡ Π° Π°ΠΊΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Ρ ΠΊΠΎΡΠ΅ΠΊΡΠΈΡ Π½Π° ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΡΠ°.
Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡΡΠ° Π΅ Π² ΡΡΠ½ΠΊΡΠΈΡΡΠ° legacy_parse_param() Π½Π° VFS ΠΈ Π΅ ΠΏΡΠΈΡΠΈΠ½Π΅Π½Π° ΠΎΡ Π»ΠΈΠΏΡΠ° Π½Π° Π°Π΄Π΅ΠΊΠ²Π°ΡΠ½Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»Π½ΠΈΡ ΡΠ°Π·ΠΌΠ΅Ρ Π½Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΠ½ΠΈ ΠΎΡ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΈΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΠΈ, ΠΊΠΎΠΈΡΠΎ Π½Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Ρ API Filesystem Context. ΠΡΠΈ ΠΏΡΠ΅Π΄Π°Π²Π°Π½Π΅ Π½Π° ΡΠ²ΡΡΠ΄Π΅ Π³ΠΎΠ»ΡΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΌΠΎΠΆΠ΅ Π΄Π° Π½Π°ΡΡΡΠΏΠΈ ΠΏΡΠ΅Π»ΠΈΠ²Π°Π½Π΅ Π½Π° ΡΡΠ»ΠΎ ΡΠΈΡΠ»ΠΎ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΎ Π·Π° ΠΈΠ·ΡΠΈΡΠ»ΡΠ²Π°Π½Π΅ Π½Π° ΡΠ°Π·ΠΌΠ΅ΡΠ° Π½Π° Π·Π°ΠΏΠΈΡΠ²Π°Π½ΠΈΡΠ΅ Π΄Π°Π½Π½ΠΈ β Π² ΠΊΠΎΠ΄Π° ΠΈΠΌΠ° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π·Π° ΠΈΠ·Π»ΠΈΠ·Π°Π½Π΅ ΠΈΠ·Π²ΡΠ½ Π³ΡΠ°Π½ΠΈΡΠΈΡΠ΅ Π½Π° Π±ΡΡΠ΅ΡΠ° βif (len > PAGE_SIZE β 2 β size)β, ΠΊΠΎΡΡΠΎ Π½Π΅ ΡΡΠ°Π±ΠΎΡΠ²Π°, Π°ΠΊΠΎ ΡΡΠΎΠΉΠ½ΠΎΡΡΡΠ° Π½Π° size Π΅ Π½Π°Π΄ 4094 ΠΏΠΎΡΠ°Π΄ΠΈ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½ΠΎ ΠΏΡΠ΅Π»ΠΈΠ²Π°Π½Π΅ ΠΎΡ Π΄ΠΎΠ»Π½Π°ΡΠ° Π³ΡΠ°Π½ΠΈΡΠ° (integer underflow, ΠΏΡΠΈ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π½Π° 4096 β 2 β 4095 ΠΊΡΠΌ unsigned int, ΠΏΠΎΠ»ΡΡΠ°Π²Π° ΡΠ΅ 2147483648).
ΠΠΎΡΠΎΡΠ΅Π½Π°ΡΠ° Π³ΡΠ΅ΡΠΊΠ° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΠΏΡΠΈ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΊΡΠΌ ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΎ ΠΎΡΠΎΡΠΌΠ΅Π½ ΠΎΠ±ΡΠ°Π· Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ²Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° Π΄Π° ΡΠ΅ ΠΏΡΠ΅Π΄ΠΈΠ·Π²ΠΈΠΊΠ° ΠΏΡΠ΅Π»ΠΈΠ²Π°Π½Π΅ Π½Π° Π±ΡΡΠ΅ΡΠ° ΠΈ Π΄Π° ΡΠ΅ ΠΏΡΠ΅Π·Π°ΠΏΠΈΡΠ°Ρ Π΄Π°Π½Π½ΠΈΡΠ΅ Π½Π° ΡΠ΄ΡΠΎΡΠΎ, ΠΊΠΎΠΈΡΠΎ ΡΠ»Π΅Π΄Π²Π°Ρ ΡΠ»Π΅Π΄Π΄Π΅Π»Π΅Π½Π°ΡΠ° ΠΎΠ±Π»Π°ΡΡ Π² ΠΏΠ°ΠΌΠ΅ΡΡΠ°. ΠΠ° Π΅ΠΊΡΠΏΠ»ΠΎΠ°ΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΡΠ° Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°Π»ΠΈΡΠΈΠ΅ Π½Π° ΠΏΡΠ°Π²Π°ΡΠ° CAP_SYS_ADMIN, Ρ.Π΅. ΠΏΡΠ»Π½ΠΎΠΌΠΎΡΠΈΡ Π½Π° Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ°. ΠΡΠΎΠ±Π»Π΅ΠΌΡΡ Π΅, ΡΠ΅ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ΠΏΡΠ»Π½ΠΎΠΌΠΎΡΠΈΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΠΎΠ»ΡΡΠΈ Π½Π΅ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡΠΎΠ²Π°Π½ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π» Π² ΠΈΠ·ΠΎΠ»ΠΈΡΠ°Π½ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ, Π°ΠΊΠΎ Π² ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° Π΅ Π²ΠΊΠ»ΡΡΠ΅Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π½Π° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΈΡΠ΅ Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΈΡΠ΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° (user namespaces). ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, user namespaces ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Π΅ Π²ΠΊΠ»ΡΡΠ΅Π½ Π² 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. ΠΠ°ΡΠΎ ΠΎΠ±Ρ
ΠΎΠ΄Π΅Π½ Π²Π°ΡΠΈΠ°Π½Ρ Π·Π° Π·Π°ΡΠΈΡΠ° Π½Π° ΡΠΈΡΡΠ΅ΠΌΠΈΡΠ΅, ΠΊΠΎΠΈΡΠΎ Π½Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ½Π° ΠΈΠ·ΠΎΠ»Π°ΡΠΈΡ, ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π·Π°Π΄Π°Π΄Π΅ ΡΡΠΎΠΉΠ½ΠΎΡΡ 0 Π½Π° sysctl βuser.max_user_namespacesβ: echo βuser.max_user_namespaces=0β > /etc/sysctl.d/userns.conf # sysctl -p /etc/sysctl.d/userns.conf
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
