Canonical on avaldanud eelteated uutils coreutils (Rust Coreutils) turvaauditist, mis on kirjutatud Rusti keeles ja mida kasutatakse osaliselt Ubuntus GNU Coreutils paketi asemel. Auditi viis läbi ettevõte Zellic, kellel on kogemusi haavatavuse analüüsimises Rusti projektides. Kontrollimise käigus tuvastati 113 turvaprobleemi.
Praegu on saadaval auditiraport (PDF, 156 lehte) esimesest auditi etapist, mis katab kõige olulisemad uutils'i komplekti utiliidid. Esimese etapi, mis viidi läbi 2025. aasta detsembrist kuni 2026. aasta jaanuarini, käigus tuvastati 73 haavatavust, millest 7 loeti kriitilisteks, 11 ohtlikeks, 29 mõõduka ohu ja 26 mitteohtlikeks.
Teine auditietapp toimus veebruarist märtsini ning hõlmas teisejärgulisi utiliite, mida esimesel etapil ei kontrollitud. Teisel etapil tuvastati 40 haavatavust, mille ohtu ei ole veel detailselt määratletud (aruanne plaanitakse avaldada hiljem). Kogu teave tuvastatud probleemide kohta on juba edastatud uutils arendajatele ning enamus haavatavustest on kõrvaldatud uutils versioonides 0.5-0.8 ilma liigse avalikustamise ja seose märkistamiseta kõrvaldatud haavatavustega.
Pakett rust-coreutils lisati vaikimisi Ubuntu 25.10 sügisesse väljaandesse, kuid arvestades auditi käigus tuvastatud probleeme Ubuntu LTS haru 26.04 puhul, on utiliidid cp, mv ja rm taastatud GNU Coreutils komplektist. Märgitakse, et 22. aprilli seisuga jäi nendes utiliidis muutmata 8 tuntud võidusõiduolukorda. Ülejäänud utiliidid on pärit rust-coreutils versioonist 0.8.0. Ubuntu 26.10 arendajad plaanivad täielikult üleminekuks rust-coreutils.
Süsteemiteenuste haavatavused on ohtlikud, kuna neid kasutatakse skriptides, mis käivitatakse root-õigustega. Näiteks uutils coreutils 0.3.0 väljal lastud haavatavus utiliidis rm oleks saanud ära kasutada igapäevaste cron-skriptide käivitamise kaudu, nagu /etc/cron.daily/apport, mis töötab root-õigustega ja rekursiivselt kustutab katalooge /var/crash, mis on kirjutamiseks avatud kõigile kasutajatele süsteemis.
Esimeses aruandes kriitilisteks märgitud haavatavuste seas:
- Haavatavus utiliidis chroot, mis on põhjustatud valiku "—userspec" töötlemisest pärast chroot() kutsumist, kuid enne privileegide tühistamist. Glibc süsteemides nime lahendamine funktsiooni getpwnam() kaudu toob kaasa faili /etc/nsswitch.conf lugemise, mida rakendatakse NSS-is (Name Service Switch), ja dünaamilise laadimise selles nimetatud NSS moodulitega teeki (libnss_*.so.2). Kuna enne NSS töötlemist tehakse chroot() kutse, laaditakse fail /etc/nsswitch.conf uue juure suhtes, kuid NSS teegid laaditakse enne privileegide tühistamist. Kui kasutajal on juurdepääs uuele juurele kirjutamiseks, siis saab ta asendada oma NSS teegid ja saavutada koodi täitmist root-õigustega.
- Faili juurdepääsu õiguste muutmine mkfifo tööriista pärast nimelise kanal (FIFO) loomise ebaõnnestumist — kui olemasolev fail antakse argumendina, tagastab mkfifo vea, kuid ei lõpetada tööd õnnetult, vaid kutsub üles set_permissions() ja muudab olemasoleva faili õigusi. Arvestades umask 022, võimaldab haavatavus muuta faili õigused 644-ks (rw-r--r--) ja pääseda juurde failidele, mille lugemise õigust ei olnud antud.
- Chmod utiliidi "—preserve-root" piirangute vältimine, mis keelab rekursiivsed toimingud failisüsteemi juure suhtes. Haavatavus (CVE-2026-35338) tuleneb sellest, et koodis kontrolliti ainult tee täpset vastavust "/" ja ei toimunud failitee kanoniseerimist. Kontrolldi ületamiseks piisab, kui kasutada teed "/../" või sümboolset linki juurele. Haavatavus on ohtlik, kuna võimaldab oma teed süsteemisse skripti, mis kutsub üles chmod käsku, sisestada, saavutades sellega õiguste rekursiivse muutmise kõikidele failidele failisüsteemis.
- Rm utiliidis lubatud kõikide lühendite käsitsemine valikule «—no-preserve-root» («—n», «—no», «—no-p», «—no-pres» jne), et keelata juure kaitse rekurssiivsete toimingute tegemiseks (näiteks võite kirjutada «rm -rf —n /» ning kogemata kustutada kõik andmed. GNU Coreutils'is sellised lühendatud valikud on keelatud.
- «—preserve-root» piirangute ümberminek rm utiliidis, mis keelavad rekurssiivseid toiminguid failisüsteemi juures, sümboolse lingi «/» asendamise teel.
- Puudub täielik kaitse kataloogide määramiseks, mis algavad punktiga. Näiteks, kui kirjutada «rm -rf .», viskab utiliit vea, kuid kui kasutada «rm -rf ./» või «rm -rf .///», kustutab ta vaikselt praeguse katalooge.
- Viga kill utiliidi argumentide parseli koodis võimaldab saata signaali kõigile protsessidele süsteemis, kui protsessi identifikaatoriks on «-1» (kill -1).
Üldiselt kuuluvad enamik haavatavusi TOCTOU (Time-Of-Check-To-Time-Of-Use) klassi, mis viitab olekute konkurentsile, mis võimaldab andmete muutmist ajavahemikus, mil kontrollitakse teavet ja enne operatsiooni teostamist. Näiteks võib fail vahetada sümboolseks lingiks just pärast kontrolli lõpetamist ja enne operatsiooni alustamist. Süsteemiskripti korral, mis käivitatakse root õigustega, võimaldavad sellised haavatavused kopeerida või kirjutada üle mis tahes faile.
Allikas: opennet.ru
