Kompania Qualys identifikoi një ndjeshmëri (CVE-2026-3888) në funksionimin e lidhjes snap-confine dhe systemd-tmpfiles në Ubuntu, e cila lejon një përdorues pa privilegje të fitojë qasje root në sistem. Problemi shfaqet në Ubuntu në konfigurimin e paracaktuar që nga lëshimi 24.04. Në Ubuntu 16.04-22.04, ndjeshmëria mund të shfrytëzohet në konfigurime të paspecifikuara që imitojnë sjelljen e versioneve më të reja të distribucionit. Në Ubuntu, një korrigjim është në dispozicion në përditësimin e djeshëm të paketës snapd. Në snapd, problemi është zgjidhur në përditësimin 2.75.
Ndjeshmëria ndodh për shkak të ndërveprimit të gabuar të mjeteve snap-confine dhe systemd-tmpfiles, të cilat ekzekutohen me privilegje të rritura. Mjeti snap-confine formon një ambient sandbox për ekzekutimin e aplikacionit snap, ndërsa systemd-tmpfiles kryen pastrimin automatik të skedarëve dhe direktoreve të përkohshme. Nga ana e paracaktuar, mjeti systemd-tmpfiles është i konfiguruar për të fshirë të gjithë skedarët dhe direktoret e vjetra në /tmp, çka mund të përdoret nga një sulmues për të ndërruar direktoren /tmp/.snap në momentin pas fshirjes nga mjeti systemd-tmpfiles, por para rinisjes nga ekipi snap-confine.
Sulmi qëndron në pritjen e nisjes së procesit të pastrimit të skedarëve të përkohshëm, ndërrimin e direktores /tmp/.snap pas fshirjes dhe vendosjen e një kopje të modifikuar të bibliotekave në /tmp/.snap/usr/lib/x86_64-linux-gnu.exchange. Sulmuesi mund të kërkojë disa ditë pritjeje për të nisur systemd-tmpfiles, pasi në Ubuntu 24.04 procesi i pastrimit niset çdo 10 ditë, ndërsa në versionet më të reja - çdo 30 ditë. Pas ndërrimit të direktores, sulmuesi arrin të inicializojë një ambient të ri sandbox përmes snap-confine.
Gjatë formimit të ambalazhit të mjedisit sandbox në direktorine e përkohshme /tmp/.snap, sulmuesi pret momentin e duhur dhe riemëron /tmp/.snap/usr/lib/x86_64-linux-gnu.exchange në /tmp/.snap/usr/lib/x86_64-linux-gnu, duke ndërruar kështu bibliotekat dhe duke siguruar montimin e tyre bind me privilegje root. Kështu, sulmuesi fiton kontroll mbi bibliotekat e ndara dhe mbi ngarkuesin ld.so, që ekzekutohen në ambientin sandbox të snap, dhe mund të arrijë të ekzekutojë kod të rastësishëm me privilegje root përmes nisjes së çdo programi suid, ku përdoret lidhja dinamike.
Duke patur akses root në ambientin sandbox, i izoluar përmes AppArmor dhe filtrit të thirrjeve sistemike të bazuara në seccomp, sulmuesi mund të kopjojë /bin/bash në direktorine /var/snap/$SNAP/common/ dhe t'i caktojë asaj privilegjet "04755" (suid root). Megjithëse privilegjet janë ndryshuar brenda ambientit sandbox, skedari me privilegjet e ndryshuara është gjithashtu i aksesueshëm dhe në sistemin kryesor, kështu që për të fituar akses të plotë root, mjafton të nisë /var/snap//common/bash si një përdorues normal pa privilegje nga ambienti standard i sistemit.
Përveç kësaj, u identifikua një ndjeshmëri në mjetin uutils coreutils (Rust Coreutils), një ekuivalent i paketës GNU Coreutils, i shkruar në gjuhën Rust. Ndjeshmëria lejon një përdorues pa privilegje të fitojë privilegje root në sistem. Problemi u identifikua gjatë rishikimit të ndryshimeve në Ubuntu 25.10 dhe u zgjidh në mënyrë të përkohshme përpara lëshimit të Ubuntu 25.10 përmes ofrimit të /usr/bin/gnurm në vend të uutils rm. Në paketën uutils problemi u zgjidh në lëshimin uutils coreutils 0.3.0, pa shënim në listën e ndryshimeve për zgjidhjen e ndjeshmërisë (u tha se në rm, du, chmod dhe chgrp është realizuar një metodë e sigurt për evitimin e rrugëve).
Problemi shkaktohet nga një gjendje garuese në mjetin "rm", e cila lejon një përdorues lokal të ndërron përmbajtjen e një direktore në një lidhje simbolike gjatë fshirjes së një skedari të kontrolluar nga përdoruesi nga procesi "rm" me privilegje root. Ndër gjëra të tjera, ndjeshmëria mund të shfrytëzohet gjatë ekzekutimit të përditshëm të një skripti cron nga /etc/cron.daily/apport, i cili ekzekutohet me privilegje root dhe heq përgjithmonë përmbajtjen e direktorës /var/crash, e cila është e aksesueshme për të gjithë përdoruesit në sistem.
Gjatë fshirjes rekursive të direktorëve, mjeti rm fillimisht kontrollon të gjitha direktorët dhe pastaj i fshin ato një nga një në rendin e duhur, duke thirrur funksionin rmdir(). Nëse arrihet të ndërron direktoren prind në një lidhje simbolike menjëherë pas kontrollit të kësaj direktore, por para kontrollit të direktorëve të fëmijëve brenda saj, operacioni do të çojë në fshirjen e direktorës që shikohet nga lidhja simbolike. Kështu, mund të arrijë jo vetëm të fshijë çdo skedar në sistem, por gjithashtu të rrisë privilegjet përmes fshirjes së direktorës /tmp/snap-private-tmp/$SNAP/tmp/.snap për të ndërruar përmbajtjen e ambientit sandbox të paketës snap (metoda për të fituar root është e ngjashme me ndjeshmërinë e parë).
Burimi: opennet.ru
