Уязвимост Π² OverlayFS, позволяваща Сскалация Π½Π° ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ

Π‘Π΅ΡˆΠ΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°Π½Π° уязвимост Π² ядрото Π½Π° Linux ΠΏΡ€ΠΈ внСдряванСто Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ²Π°Ρ‚Π° систСма OverlayFS (CVE-2023-0386), която ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°Π½Π΅ Π½Π° root Π΄ΠΎΡΡ‚ΡŠΠΏ Π½Π° систСми, ΠΊΠΎΠΈΡ‚ΠΎ ΠΈΠΌΠ°Ρ‚ инсталирана подсистСма FUSE ΠΈ позволяват ΠΌΠΎΠ½Ρ‚ΠΈΡ€Π°Π½Π΅ Π½Π° дяловС OverlayFS ΠΎΡ‚ Π½Π΅ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π» (Π·Π°ΠΏΠΎΡ‡Π²Π°ΠΉΠΊΠΈ с ядрото Π½Π° Linux 5.11 с Π²ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° пространство ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π° Π½Π° Π½Π΅ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»). ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡŠΡ‚ Π΅ ΠΊΠΎΡ€ΠΈΠ³ΠΈΡ€Π°Π½ Π² ΠΊΠ»ΠΎΠ½Π° Π½Π° ядрото 6.2. ΠŸΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ Π² дистрибуции ΠΌΠΎΠΆΠ΅ Π΄Π° сС прослСди Π½Π° страницитС: Debian, Ubuntu, Gentoo, RHEL, SUSE, Fedora, Arch.

Атаката сС ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π° Ρ‡Ρ€Π΅Π· ΠΊΠΎΠΏΠΈΡ€Π°Π½Π΅ Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ с Ρ„Π»Π°Π³ΠΎΠ²Π΅ setgid/setuid ΠΎΡ‚ дял, ΠΌΠΎΠ½Ρ‚ΠΈΡ€Π°Π½ Π² Ρ€Π΅ΠΆΠΈΠΌ nosuid, към дял OverlayFS, ΠΊΠΎΠΉΡ‚ΠΎ ΠΈΠΌΠ° слой, ΡΠ²ΡŠΡ€Π·Π°Π½ с дяла, ΠΊΠΎΠΉΡ‚ΠΎ позволява ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° suid Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅. Уязвимостта Π΅ ΠΏΠΎΠ΄ΠΎΠ±Π½Π° Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° CVE-2021-3847, ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°Π½ ΠΏΡ€Π΅Π· 2021 Π³., Π½ΠΎ сС Ρ€Π°Π·Π»ΠΈΡ‡Π°Π²Π° с ΠΏΠΎ-ниски изисквания Π·Π° Сксплоатация - старият ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ изисквашС ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€Π°Π½Π΅ с xattrs, ΠΊΠΎΠΈΡ‚ΠΎ са ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈ Π΄ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° потрСбитСлски пространства ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π° (потрСбитСлско пространство ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π°), Π° новият ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π±ΠΈΡ‚ΠΎΠ²Π΅ setgid /setuid, ΠΊΠΎΠΈΡ‚ΠΎ Π½Π΅ сС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π°Ρ‚ спСциално Π² потрСбитСлското пространство ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π°.

ΠΠ»Π³ΠΎΡ€ΠΈΡ‚ΡŠΠΌ Π·Π° Π°Ρ‚Π°ΠΊΠ°:

  • Π‘ ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° подсистСмата FUSE сС ΠΌΠΎΠ½Ρ‚ΠΈΡ€Π° Ρ„Π°ΠΉΠ»ΠΎΠ²Π° систСма, Π² която ΠΈΠΌΠ° изпълним Ρ„Π°ΠΉΠ», собствСност Π½Π° root потрСбитСля с Ρ„Π»Π°Π³ΠΎΠ²Π΅Ρ‚Π΅ setuid / setgid, Π΄ΠΎΡΡ‚ΡŠΠΏΠ΅Π½ Π·Π° запис Π½Π° всички ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈ. ΠŸΡ€ΠΈ ΠΌΠΎΠ½Ρ‚ΠΈΡ€Π°Π½Π΅ FUSE настройва Ρ€Π΅ΠΆΠΈΠΌΠ° Π½Π° "nosuid".
  • ΠŸΡ€Π΅ΠΊΡ€Π°Ρ‚Π΅Ρ‚Π΅ сподСлянСто Π½Π° потрСбитСлски пространства ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π° ΠΈ Ρ‚ΠΎΡ‡ΠΊΠΈ Π½Π° ΠΌΠΎΠ½Ρ‚ΠΈΡ€Π°Π½Π΅ (потрСбитСлско/ΠΌΠΎΠ½Ρ‚ΠΈΡ€Π°Π½ΠΎ пространство ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π°).
  • OverlayFS сС ΠΌΠΎΠ½Ρ‚ΠΈΡ€Π° с FS, създадСн ΠΏΡ€Π΅Π΄ΠΈ Ρ‚ΠΎΠ²Π° във FUSE ΠΊΠ°Ρ‚ΠΎ долния слой ΠΈ горния слой, Π±Π°Π·ΠΈΡ€Π°Π½ Π½Π° записваСмата дирСктория. ДирСкторията Π½Π° горния слой трябва Π΄Π° сС Π½Π°ΠΌΠΈΡ€Π° във Ρ„Π°ΠΉΠ»ΠΎΠ²Π° систСма, която Π½Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Ρ„Π»Π°Π³Π° "nosuid", ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π΅ ΠΌΠΎΠ½Ρ‚ΠΈΡ€Π°Π½Π°.
  • Π—Π° suid Ρ„Π°ΠΉΠ» Π² дяла FUSE ΠΏΠΎΠΌΠΎΡ‰Π½Π°Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° Π·Π° докосванС промСня Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π·Π° модификация, ΠΊΠΎΠ΅Ρ‚ΠΎ Π²ΠΎΠ΄ΠΈ Π΄ΠΎ ΠΊΠΎΠΏΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ ΠΌΡƒ Π² горния слой Π½Π° OverlayFS.
  • ΠŸΡ€ΠΈ ΠΊΠΎΠΏΠΈΡ€Π°Π½Π΅ ядрото Π½Π΅ ΠΏΡ€Π΅ΠΌΠ°Ρ…Π²Π° Ρ„Π»Π°Π³ΠΎΠ²Π΅Ρ‚Π΅ setgid/setuid, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΊΠ°Ρ€Π° Ρ„Π°ΠΉΠ»Π° Π΄Π° сС появи Π½Π° дял, ΠΊΠΎΠΉΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π΅Π½ ΠΎΡ‚ setgid/setuid.
  • Π—Π° Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ root ΠΏΡ€Π°Π²Π°, Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΎ Π΅ Π΄Π° стартиратС Ρ„Π°ΠΉΠ»Π° с Ρ„Π»Π°Π³ΠΎΠ²Π΅Ρ‚Π΅ setgid/setuid ΠΎΡ‚ дирСкторията, ΠΏΡ€ΠΈΠΊΡ€Π΅ΠΏΠ΅Π½Π° към горния слой Π½Π° OverlayFS.

ОсвСн Ρ‚ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΎΡ‚Π±Π΅Π»Π΅ΠΆΠΈΠΌ Ρ€Π°Π·ΠΊΡ€ΠΈΠ²Π°Π½Π΅Ρ‚ΠΎ ΠΎΡ‚ изслСдоватСли ΠΎΡ‚ Π΅ΠΊΠΈΠΏΠ° Π½Π° Google Project Zero Π½Π° информация Π·Π° Ρ‚Ρ€ΠΈ уязвимости, ΠΊΠΎΠΈΡ‚ΠΎ са ΠΊΠΎΡ€ΠΈΠ³ΠΈΡ€Π°Π½ΠΈ Π² основния ΠΊΠ»ΠΎΠ½ Π½Π° ядрото Π½Π° Linux 5.15, Π½ΠΎ Π½Π΅ са прСнСсСни Π² ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ Π½Π° ядрото ΠΎΡ‚ RHEL 8.x/9.x ΠΈ CentOS ΠΏΠΎΡ‚ΠΎΠΊ 9.

  • CVE-2023-1252 - Π”ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ Π²Π΅Ρ‡Π΅ освободСна област Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° Π² структурата ovl_aio_req, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‚Π΅ няколко ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π΅Π΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π² OverlayFS, Ρ€Π°Π·ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ Π²ΡŠΡ€Ρ…Ρƒ Ρ„Π°ΠΉΠ»ΠΎΠ²Π°Ρ‚Π° систСма Ext4. ΠŸΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»Π½ΠΎ уязвимостта Π²ΠΈ позволява Π΄Π° ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚Π΅ ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈΡ‚Π΅ си Π² систСмата.
  • CVE-2023-0590 - ΠŸΡ€Π΅ΠΏΡ€Π°Ρ‚ΠΊΠ° към Π²Π΅Ρ‡Π΅ освободСна област ΠΎΡ‚ ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° във функцията qdisc_graft(). ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π° сС, Ρ‡Π΅ опСрацията Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π° Π΄ΠΎ ΠΏΡ€Π΅ΠΊΡŠΡΠ²Π°Π½Π΅.
  • CVE-2023-1249 - Π”ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ Π²Π΅Ρ‡Π΅ освободСна област ΠΎΡ‚ ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° Π² ΠΊΠΎΠ΄Π° Π·Π° въвСТданС Π½Π° coredump ΠΏΠΎΡ€Π°Π΄ΠΈ липсващо mmap_lock ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ във file_files_note. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π° сС, Ρ‡Π΅ опСрацията Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π° Π΄ΠΎ ΠΏΡ€Π΅ΠΊΡŠΡΠ²Π°Π½Π΅.

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

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