Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ Π² подсистСмС io_uring, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ root

Π’ интСрфСйсС асинхронного Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π° io_uring, прСдоставляСмом ядром Linux, выявлСна ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ (CVE-2024-0582), ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ Π½Π΅ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌΡƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΡ€Π°Π²Π° root Π² систСмС. Для эксплуатации уязвимости достаточно ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ локального доступа ΠΊ систСмС, Π±Π΅Π· нСобходимости манипуляций с пространствами ΠΈΠΌΡ‘Π½. Π’ настоящСС врСмя ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΠΎ доступСн Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΉ эксплоит, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ описана вторая Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ° эксплуатации уязвимости.

Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ Π²Ρ‹Π·Π²Π°Π½Π° ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ΠΌ ΠΊ ΡƒΠΆΠ΅ освобоТдённому Π±Π»ΠΎΠΊΡƒ памяти (use-after-free) Π² подсистСмС io_uring, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈ рСгистрации ΠΈ освобоТдСнии ΠΊΠΎΠ»ΡŒΡ†Π΅Π²ΠΎΠ³ΠΎ Π±ΡƒΡ„Π΅Ρ€Π°, созданного с Ρ„Π»Π°Π³ΠΎΠΌ IORING_REGISTER_PBUF_RING. Π’ ситуации примСнСния ΠΊ Π±ΡƒΡ„Π΅Ρ€Ρƒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ mmap(), ΠΎΠ½ остаётся ΠΎΡ‚Ρ€Π°ΠΆΡ‘Π½Π½Ρ‹ΠΌ Π² пространство ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ послС выполнСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π΅Π³ΠΎ освобоТдСния (IORING_UNREGISTER_PBUF_RING). Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π΄Π°Π½Π½ΡƒΡŽ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ, Π°Ρ‚Π°ΠΊΡƒΡŽΡ‰ΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΈ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ… Π² страницы памяти, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Ρ‘Π½Π½Ρ‹Π΅ систСмС распрСдСлСния памяти ядра.

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° проявляСтся начиная с выпуска ядра Linux 6.4 ΠΈ устранСна Π² выпусках 6.7 ΠΈ 6.6.5, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ с ядром 6.5.0-21, ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π½Ρ‹ΠΌ для Ubuntu 22.04 ΠΈ 23.10. ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Ρ‡Ρ‚ΠΎ Π² основном ядрС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π±Ρ‹Π»Π° исправлСна Π² Π΄Π΅ΠΊΠ°Π±Ρ€Π΅ 2023 Π³ΠΎΠ΄Π°, ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Google Zero ΠΎΡ‚ΠΊΡ€Ρ‹Π» доступ ΠΊ ΡΠΈΠ³Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰Π΅ΠΌΡƒ ΠΎ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ уязвимости ΡΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΡŽ ΠΎΠ± ошибкС 8 января, Π° ΠΏΠ°ΠΊΠ΅Ρ‚ с исправлСнным ядром 6.5 для Ubuntu Π±Ρ‹Π» сформирован лишь 22 фСвраля 2024 Π³ΠΎΠ΄Π°. Π’ Π΄Ρ€ΡƒΠ³ΠΈΡ… дистрибутивах ΠΏΡ€ΠΎΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ Π·Π° исправлСниСм ΠΈ ΠΏΠΎΠ΄Π²Π΅Ρ€ΠΆΠ΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ уязвимости ΠΌΠΎΠΆΠ½ΠΎ Π½Π° страницах: Debian, Gentoo, RHEL, SUSE, Fedora, Arch.

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ эксплоит ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ созданиСм большого числа ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… Π°Ρ‚Π°ΠΊΡƒΡŽΡ‰ΠΈΠΌ страниц памяти для опрСдСлСния раскладки памяти Π² ядрС ΠΈ доступа ΠΊ сосСдним физичСским страницам памяти, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π² качСствС маяков содСрТимоС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹Ρ… структур сСтСвых сокСтов. Для запуска ΠΊΠΎΠ΄Π° Π² эксплоитС задСйствован «Π³Π°Π΄ΠΆΠ΅Ρ‚» (ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π² ядрС инструкций), приводящий ΠΊ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ call_usermodehelper_exec, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½ΠΎΠΉ для запуска процСссов Π² пространствС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈΠ· ядра.

Π’Ρ‚ΠΎΡ€ΠΎΠΉ эксплоит основываСтся Π½Π° Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ исчСрпании всСх slab-Π±Π»ΠΎΠΊΠΎΠ² Π² кэшС (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠΈ Ρ„Π°ΠΉΠ»Π° ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·) свободныС страницы памяти, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ остаётся доступ Π°Ρ‚Π°ΠΊΡƒΡŽΡ‰Π΅Π³ΠΎ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ систСмой распрСдСлСния памяти для создания Π½ΠΎΠ²ΠΎΠ³ΠΎ slab-Π±Π»ΠΎΠΊΠ° ΠΈ всС Π½ΠΎΠ²Ρ‹Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Π΅ структуры Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒΡΡ Π² этом Π±Π»ΠΎΠΊΠ΅. БоотвСтствСнно, ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Π΅ структуры ΠΏΠΎΠΏΠ°Π΄ΡƒΡ‚ Π² страницы памяти, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΈ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π°Ρ‚Π°ΠΊΡƒΡŽΡ‰ΠΈΠΉ. Эксплуатация ΠΏΡ€ΠΈ этом сводится ΠΊ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ попадания Π² Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹ΠΉ кэш Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° ΠΈ Π·Π°ΠΌΠ΅Π½Π΅ Π² связанных с Π½ΠΈΠΌ Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… структурах поля f_mode, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰Π΅Π³ΠΎ ΠΏΡ€Π°Π²Π° доступа, Ρ‡Ρ‚ΠΎ позволяСт ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ доступным Π½Π° запись Π½ΡƒΠΆΠ½Ρ‹ΠΉ систСмный Ρ„Π°ΠΉΠ», Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, /etc/passwd.

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