Уязвимости Π² snapd ΠΈ Rust Π‘oreutils, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ root-ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ Π² Ubuntu

Компания Qualys выявила ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ (CVE-2026-3888) Π² ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ связки snap-confine ΠΈ systemd-tmpfiles Π² Ubuntu, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΡƒΡŽ Π½Π΅ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌΡƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ root-доступ ΠΊ систСмС. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° проявляСтся Π² Ubuntu Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ начиная с выпуска 24.04. Π’ Ubuntu 16.04-22.04 ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ эксплуатирована Π² нСстандартных конфигурациях, ΠΈΠΌΠΈΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π±ΠΎΠ»Π΅Π΅ Π½ΠΎΠ²Ρ‹Ρ… вСрсий дистрибутива. Π’ Ubuntu исправлСниС доступно Π²ΠΎ Π²Ρ‡Π΅Ρ€Π°ΡˆΠ½Π΅ΠΌ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Π° snapd. Π’ snapd ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° устранСна Π² ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ 2.75.

Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΈΠ·-Π·Π° Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ взаимодСйствия ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ snap-confine ΠΈ systemd-tmpfiles, выполняСмых с ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½Π½Ρ‹ΠΌΠΈ привилСгиями. Π£Ρ‚ΠΈΠ»ΠΈΡ‚Π° snap-confine Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅Ρ‚ sandbox-ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ для выполнСния snap-прилоТСния, Π° systemd-tmpfiles осущСствляСт Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ очистку Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ². По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° systemd-tmpfiles настроСна Π½Π° ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ всСх старых Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ² Π² /tmp, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π°Ρ‚Π°ΠΊΡƒΡŽΡ‰ΠΈΠΌ для ΠΏΠΎΠ΄ΠΌΠ΅Π½Ρ‹ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° /tmp/.snap Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ послС Π΅Π³ΠΎ удалСния ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ΠΎΠΉ systemd-tmpfiles, Π½ΠΎ Π΄ΠΎ пСрСсоздания ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ snap-confine.

Атака сводится ΠΊ оТиданию запуска процСсса очистки Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ², ΠΏΠΎΠ΄ΠΌΠ΅Π½Ρ‹ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° /tmp/.snap послС Π΅Π³ΠΎ удалСния ΠΈ размСщСния ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΊΠΎΠΏΠΈΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ /tmp/.snap/usr/lib/x86_64-linux-gnu.exchange. ΠΡ‚Π°ΠΊΡƒΡŽΡ‰Π΅ΠΌΡƒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ нСсколько Π΄Π½Π΅ΠΉ оТидания запуска systemd-tmpfiles, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π² Ubuntu 24.04 процСсс очистки запускаСтся Ρ€Π°Π· Π² 10 Π΄Π½Π΅ΠΉ, Π° Π² Π±ΠΎΠ»Π΅Π΅ Π½ΠΎΠ²Ρ‹Ρ… выпусках β€” Ρ€Π°Π· Π² 30 Π΄Π½Π΅ΠΉ. ПослС ΠΏΠΎΠ΄ΠΌΠ΅Π½Ρ‹ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° Π°Ρ‚Π°ΠΊΡƒΡŽΡ‰ΠΈΠΉ добиваСтся ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½ΠΎΠ²ΠΎΠ³ΠΎ sandbox-окруТСния ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ snap-confine.

Π’ΠΎ врСмя формирования Π½Π°Ρ‡ΠΈΠ½ΠΊΠΈ sandbox-окруТСния Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ /tmp/.snap Π°Ρ‚Π°ΠΊΡƒΡŽΡ‰ΠΈΠΉ доТидаСтся Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° ΠΈ ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚ /tmp/.snap/usr/lib/x86_64-linux-gnu.exchange Π² /tmp/.snap/usr/lib/x86_64-linux-gnu, подмСняя Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΈ обСспСчивая ΠΈΡ… bind-ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ с ΠΏΡ€Π°Π²Π°ΠΌΠΈ root. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π°Ρ‚Π°ΠΊΡƒΡŽΡ‰ΠΈΠΉ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ Π½Π°Π΄ раздСляСмыми Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ ΠΈ Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠΎΠΌ ld.so, запускаСмыми Π² sandbox-ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΈ snap, ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ выполнСния ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° с ΠΏΡ€Π°Π²Π°ΠΌΠΈ root Ρ‡Π΅Ρ€Π΅Π· запуск любой suid-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ примСняСтся динамичСскоС связываниС.

ИмСя root-доступ Π² sandbox-ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΈ, ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ Ρ‡Π΅Ρ€Π΅Π· AppArmor ΠΈ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ систСмных Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Π½Π° Π±Π°Π·Π΅ seccomp, Π°Ρ‚Π°ΠΊΡƒΡŽΡ‰ΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ /bin/bash Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ /var/snap/$SNAP/common/ ΠΈ Π²Ρ‹ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π΅ΠΌΡƒ ΠΏΡ€Π°Π²Π° Β«04755Β» (suid root). НСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΡ€Π°Π²Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ‹ Π²Π½ΡƒΡ‚Ρ€ΠΈ sandbox-окруТСния, Ρ„Π°ΠΉΠ» с ΠΈΠ·ΠΌΠ΅Π½Ρ‘Π½Π½Ρ‹ΠΌΠΈ ΠΏΡ€Π°Π²Π°ΠΌΠΈ доступСн ΠΈ Π² основной систСмС, поэтому для получСния ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ root доступа достаточно Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ /var/snap/<имя_snap_ΠΏΠ°ΠΊΠ΅Ρ‚Π°>/common/bash ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌ Π½Π΅ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ ΠΈΠ· ΡˆΡ‚Π°Ρ‚Π½ΠΎΠ³ΠΎ систСмного окруТСния.

ΠŸΠΎΠΏΡƒΡ‚Π½ΠΎ Π±Ρ‹Π»Π° выявлСна ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ Π² инструмСнтарии uutils coreutils (Rust Coreutils), Π°Π½Π°Π»ΠΎΠ³Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚Π° GNU Coreutils, написанном Π½Π° языкС Rust. Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ позволяСт Π½Π΅ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌΡƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΡ€Π°Π²Π° root Π² систСмС. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° выявлСна Π² процСссС рСцСнзирования ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Ubuntu 25.10 ΠΈ устранСна ΠΎΠ±Ρ…ΠΎΠ΄Π½Ρ‹ΠΌ ΠΏΡƒΡ‚Ρ‘ΠΌ Π΄ΠΎ Ρ€Π΅Π»ΠΈΠ·Π° Ubuntu 25.10 Ρ‡Π΅Ρ€Π΅Π· поставку /usr/bin/gnurm вмСсто uutils rm. Π’ ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ uutils ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π±Ρ‹Π»Π° устранСна Π² выпускС uutils coreutils 0.3.0, Π±Π΅Π· ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΊΠΈ Π² спискС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΎΠ± устранСнии уязвимости (Π±Ρ‹Π»ΠΎ ΡƒΠΊΠ°Π·Π°Π½ΠΎ, Ρ‡Ρ‚ΠΎ Π² rm, du, chmod ΠΈ chgrp Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ бСзопасный ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΎΠ±Ρ…ΠΎΠ΄Π° ΠΏΡƒΡ‚Π΅ΠΉ).

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π²Ρ‹Π·Π²Π°Π½Π° состояниСм Π³ΠΎΠ½ΠΊΠΈ Π² ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π΅ Β«rmΒ», ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅ΠΌ Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΠΎΠΌΡƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ ΠΏΠΎΠ΄ΠΌΠ΅Π½ΠΈΡ‚ΡŒ содСрТимоС ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° Π½Π° ΡΠΈΠΌΠ²ΠΎΠ»ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ссылку Π²ΠΎ врСмя удалСния ΠΏΠΎΠ΄ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Ρ„Π°ΠΉΠ»Π° процСссом Β«rmΒ» с ΠΏΡ€Π°Π²Π°ΠΌΠΈ root. Π‘Ρ€Π΅Π΄ΠΈ ΠΏΡ€ΠΎΡ‡Π΅Π³ΠΎ ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ эксплуатирована ΠΏΡ€ΠΈ Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π½ΠΎΠΌ запускС ΠΈΠ· cron скрипта /etc/cron.daily/apport, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ запускаСтся с ΠΏΡ€Π°Π²Π°ΠΌΠΈ root ΠΈ рСкурсивно удаляСт содСрТимоС ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° /var/crash, доступного Π½Π° запись всСм ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ Π² систСмС.

ΠŸΡ€ΠΈ рСкурсивном ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΈ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ² ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° rm Π²Π½Π°Ρ‡Π°Π»Π΅ провСряСт всС ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ удаляСт ΠΈΡ… Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ порядкС, вызывая Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ rmdir(). Если Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ ΠΏΠΎΠ΄ΠΌΠ΅Π½Ρ‹ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° Π½Π° ΡΠΈΠΌΠ²ΠΎΠ»ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ссылку сразу послС ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ этого ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°, Π½ΠΎ Π΄ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Π² Π½Π΅Π³ΠΎ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΡ… ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ², опСрация ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Ρ‚ ΠΊ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΡŽ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ символичСская ссылка. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ удалСния любого Ρ„Π°ΠΉΠ»Π° Π² систСмС, Π½ΠΎ ΠΈ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΉ Ρ‡Π΅Ρ€Π΅Π· ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° /tmp/snap-private-tmp/$SNAP/tmp/.snap для ΠΏΠΎΠ΄ΠΌΠ΅Π½Ρ‹ содСрТимого sandbox-окруТСния snap-ΠΏΠ°ΠΊΠ΅Ρ‚Π° (ΠΌΠ΅Ρ‚ΠΎΠ΄ получСния root Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π΅Π½ ΠΏΠ΅Ρ€Π²ΠΎΠΉ уязвимости).

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

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ