Системите с Ubuntu са изложени на риск поради нова уязвимост за локално ескалиране на привилегии в snap-confine, която може да позволи на всеки локален потребител да получи пълен root достъп при определени инсталации на настолни компютри.

Изследователи от Qualys откриха състезание за ресурси (race condition) в snap-confine – помощната програма, използвана от snapd за подготовка на средата за изпълнение на snap приложения.

В засегнатите версии snap-confine вече не функционира като класическа root двоична програма със зададен ID на собственика (setuid), а вместо това разчита на възможностите на Linux (Linux capabilities), като например cap_setuid, cap_setgid, cap_sys_admin и cap_sys_ptrace.

Тази промяна позволява на процеса да се изпълнява с потребителския UID, като същевременно запазва права, близки до root. Това позволява временното създаване и манипулиране на файлове, собственост на непривилегировани потребители.Недостатък в Ubuntu snap-confine, свързан със състезание за ресурси

Само инсталации на snap-confine, конфигурирани с Linux capabilities, са уязвими. Версиите по подразбиране на Ubuntu Desktop 26.04 и 25.10, както и актуализираната Ubuntu Desktop 24.04, са изложени на риск.

Тези версии използват вариант на snap-confine със зададени Linux capabilities. Традиционните setuid-root инсталации не са засегнати от CVE-2026-8933.

Уязвимостта възниква, когато snap-confine създава изолирана среда за даден snap пакет, като генерира временна директория под /tmp с име snap.rootfs_XXXXXX чрез функцията mkdtemp().

След това се извършват поредица от операции по монтиране и се репликира базова root файлова система в тази временна директория. След това програмата извиква chown(), за да промени собствеността обратно на root.

Съществува обаче кратък времеви прозорец, по време на който тази временна директория и всички новосъздадени файлове остават собственост на непривилегирования потребител, което създава състезание за ресурси (race condition).

Този модел важи и за обикновените файлове. Тъй като snap-confine обработва базовата root файлова система, тя използва open() с флагове O_CREAT | O_TRUNC върху пътища в работната директория.

Тъй като обаче open() не указва O_NOFOLLOW, тя може да последва символни връзки (symlinks), контролирани от потребителя, в този чувствителен към времето прозорец, което улеснява използването на тази уязвимост за състезание за ресурси.

Даден атакуващ може да експлоатира това състезание за ресурси, за да постигне създаване на произволни файлове. След като /tmp/snap.rootfs_XXXXXX бъде създадена, атакуващият монтира файлова система FUSE върху нея.

Това им позволява да размонтират всички частни пространства от имена (private mount namespaces), които snap-confine се опитва да изгради, възстановявайки достъпа до тяхната контролирана файлова система, когато snap-confine достигне етапа на създаване на файлове.

След това атакуващият може да създаде символна връзка в работната директория, сочеща към желания целеви файл, използвайки име на файл, което се очаква snap-confine да създаде (например default256.png за snap пакета на Firefox).

Когато snap-confine изпълни open() със своите повишени привилегии, тя създава избрания от атакуващия файл и впоследствие променя собствеността му на root. Атакуващият се състезава, за да зададе правата на файла на 0666, запазвайки достъпа си за писане дори след промяната на собствеността.

Поради ограничения от профила на AppArmor не всички места във файловата система са достъпни, което ограничава създаването на произволни файлове. Един от пътищата с права за писане обаче е /run/udev/**, обработван от systemd-udevd.

Според бюлетина за сигурност на Qualys експлойтът поставя специално изработен файл .rules в /run/udev/rules.d, което кара udev да изпълни команден ред с root привилегии, позволявайки ескалиране на привилегиите.

Потребителите на Ubuntu трябва да следят и инсталират корекции за сигурност от Canonical, за да отстранят уязвимостта в начина, по който snap-confine обработва временните директории, както и други идентифицирани слаби места.