VFS уязвимост Π½Π° ядрото Π½Π° Linux, позволяваща Сскалация Π½Π° ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ

Π‘Π΅ΡˆΠ΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°Π½Π° уязвимост (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

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€