Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ Π² OverlayFS, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ свои ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ

Π’ ядрС Linux Π² Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы OverlayFS выявлСна ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ (CVE-2023-0386), ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для получСния root-доступа Π½Π° систСмах, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… установлСна подсистСма FUSΠ• ΠΈ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ€Π°Π·Π΄Π΅Π»ΠΎΠ² OverlayFS Π½Π΅ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ (начиная с ядра Linux 5.11 с Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Π½Π΅ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… user namespace). ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° устранСна Π² Π²Π΅Ρ‚ΠΊΠ΅ ядра 6.2. ΠŸΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΡŽ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Π² дистрибутивах ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ Π½Π° страницах: Debian, Ubuntu, Gentoo, RHEL, SUSE, Fedora, Arch.

Атака производится Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ² с Ρ„Π»Π°Π³Π°ΠΌΠΈ setgid/setuid ΠΈΠ· Ρ€Π°Π·Π΄Π΅Π»Π°, ΠΏΡ€ΠΈΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ nosuid, Π² Ρ€Π°Π·Π΄Π΅Π» OverlayFS, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΉ слой, связанный с Ρ€Π°Π·Π΄Π΅Π»ΠΎΠΌ, Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‰ΠΈΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ suid-Ρ„Π°ΠΉΠ»ΠΎΠ². Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ Π±Π»ΠΈΠ·ΠΊΠ° ΠΊ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ΅ CVE-2021-3847, выявлСнной Π² 2021 Π³ΠΎΠ΄Ρƒ, Π½ΠΎ отличаСтся Π±ΠΎΠ»Π΅Π΅ Π½ΠΈΠ·ΠΊΠΈΠΌΠΈ трСбованиями ΠΊ эксплуатации — Π² старой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ΅ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΈΡΡŒ манипуляции с xattrs, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Ρ‹ ΠΏΡ€ΠΈ использования пространств ΠΈΠΌΡ‘Π½ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ (user namespace), Π° Π² Π½ΠΎΠ²ΠΎΠΉ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π±ΠΈΡ‚Ρ‹ setgid/setuid, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ Π½Π΅ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π² user namespace.

Алгоритм ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Π°Ρ‚Π°ΠΊΠΈ:

  • ΠŸΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ подсистСмы FUSE монтируСтся Π€Π‘, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ имССтся ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‰ΠΈΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ root исполняСмый Ρ„Π°ΠΉΠ» с Ρ„Π»Π°Π³Π°ΠΌΠΈ setuid/setgid, доступным всСм ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ Π½Π° запись. ΠŸΡ€ΠΈ ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ FUSE выставляСт Ρ€Π΅ΠΆΠΈΠΌ «nosuid».
  • ΠžΡ‚ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ (unshare) пространства ΠΈΠΌΡ‘Π½ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΈ Ρ‚ΠΎΡ‡Π΅ΠΊ монтирования (user/mount namespace).
  • ΠœΠΎΠ½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ΡΡ OverlayFS с ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ Ρ€Π°Π½Π΅Π΅ созданной Π² FUSE Π€Π‘ Π² качСствС Π½ΠΈΠΆΠ½Π΅Π³ΠΎ слоя ΠΈ Π²Π΅Ρ€Ρ…Π½ΠΈΠΌ слоСм Π½Π° Π±Π°Π·Π΅ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°, Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‰Π΅Π³ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ записи. ΠšΠ°Ρ‚Π°Π»ΠΎΠ³ Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ слоя Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒΡΡ Π² Π€Π‘, ΠΏΡ€ΠΈ ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ„Π»Π°Π³ «nosuid».
  • Для suid-Ρ„Π°ΠΉΠ»Π° Π² FUSE-Ρ€Π°Π·Π΄Π΅Π»Π΅ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ΠΎΠΉ touch мСняСтся врСмя ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Π΅Π³ΠΎ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ Π² Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ слой OverlayFS.
  • ΠŸΡ€ΠΈ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ядро Π½Π΅ ΡƒΠ±ΠΈΡ€Π°Π΅Ρ‚ Ρ„Π»Π°Π³ΠΈ setgid/setuid, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Ρ„Π°ΠΉΠ» появляСтся Π² Ρ€Π°Π·Π΄Π΅Π»Π΅, Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‰Π΅ΠΌ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ setgid/setuid.
  • Для получСния ΠΏΡ€Π°Π² root достаточно Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ» с Ρ„Π»Π°Π³Π°ΠΌΠΈ setgid/setuid ΠΈΠ· ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°, ΠΏΡ€ΠΈΠΊΡ€Π΅ΠΏΠ»Ρ‘Π½Π½ΠΎΠ³ΠΎ ΠΊ Π²Π΅Ρ€Ρ…Π½Π΅ΠΌΡƒ слою OverlayFS.

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ раскрытиС исслСдоватСлями ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Google Project Zero свСдСний ΠΎ Ρ‚Ρ€Ρ‘Ρ… уязвимостях, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ исправлСны Π² основной Π²Π΅Ρ‚ΠΊΠ΅ ядра Linux 5.15, Π½ΠΎ Π½Π΅ Π±Ρ‹Π»ΠΈ пСрСнСсСны Π² ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ с ядром ΠΈΠ· RHEL 8.x/9.x ΠΈ CentOS Stream 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