113 sårbarheder er blevet identificeret i Rust Coreutils. I Ubuntu 26.04 er cp, mv og rm blevet taget tilbage fra GNU Coreutils

Firma Canonical har offentliggjort de foreløbige resultater af den uafhængige sikkerhedsaudit af uutils coreutils (Rust Coreutils), som er skrevet i Rust og delvist anvendes i Ubuntu i stedet for GNU Coreutils-pakken. Audit'en blev udført af Zellic, som har erfaring med at analysere sårbarheder i projekter skrevet i Rust. Under gennemgangen blev der opdaget 113 sikkerhedsproblemer.

Rapporten (PDF, 156 sider) med resultaterne af den første fase af audit'en, der dækker de mest relevante værktøjer fra uutils-sættet, er nu tilgængelig. Den første fase, der blev gennemført fra december 2025 til januar 2026, afslørede 73 sårbarheder, hvoraf 7 blev markeret som kritiske, 11 som farlige, 29 med medium risiko og 26 som ufarlige.

Den anden fase af audit'en blev gennemført fra februar til marts og dækkede mindre værktøjer, som ikke blev kontrolleret i den første fase. I den anden fase blev der fundet 40 sårbarheder, hvis alvor endnu ikke er specificeret (rapporten planlægges offentliggjort senere). Oplysninger om alle opdagede problemer er allerede sendt til udviklerne af uutils, og størstedelen af sårbarhederne er blevet rettet i uutils-udgivelserne 0.5-0.8 uden yderligere offentliggørelse og uden at bemærke, at de indførte rettelser var relateret til afhjælpning af sårbarheder.

Rust-coreutils-pakken blev som standard inkluderet i den efterårsgivet version af Ubuntu 25.10, men på baggrund af de problemer, der blev opdaget under audit'en, er cp, mv og rm værktøjerne fra GNU Coreutils-sættet blevet genindført i LTS-grenen af Ubuntu 26.04. Det bemærkes, at der per 22. april stadig er 8 kendte race-tilstande, der ikke er blevet løst i disse værktøjer. De øvrige værktøjer er hentet fra rust-coreutils version 0.8.0. I Ubuntu 26.10 har udviklerne til hensigt at skifte helt til rust-coreutils.

Sårbarheder i systemværktøjer er farlige, da de anvendes i scripts, der kører med root-rettigheder. For eksempel kunne en sårbarhed i rm-værktøjet, der blev rettet i uutils coreutils version 0.3.0, udnyttes ved dagligt at køre et script fra cron /etc/cron.daily/apport, som køres med root-rettigheder og rekursivt sletter indholdet af mappen /var/crash, som er skrivbar for alle brugere i systemet.

Blandt sårbarhederne, der blev markeret som kritiske i den første rapport:

  • Sårbarhed i chroot-værktøjet, forårsaget af behandlingen af indstillingen «—userspec» efter kaldet til chroot(), men før privilegiebesparelsen. På systemer med glibc fører navneskabelsen via funktionen getpwnam() til læsning af filen /etc/nsswitch.conf, som anvendes i NSS (Name Service Switch), og dynamisk indlæsning af de navngivne biblioteker med NSS-moduler (libnss_*.so.2). Da kaldet til chroot() udføres før behandling af NSS, indlæses filen /etc/nsswitch.conf i forhold til den nye rod, men NSS-bibliotekerne indlæses før privilegiebesparelsen. Hvis en bruger har skriveadgang til den nye rod, kan han indsætte sine egne NSS-biblioteker og opnå udførelse af kode med root-rettigheder.
  • Ændring af filadgang efter fejlslagning ved oprettelse af en navngiven kanal (FIFO) med mkfifo-værktøjet — hvis en eksisterende fil angives som argument, returnerer mkfifo en fejl, men afslutter ikke med det samme, men kalder set_permissions() og ændrer adgangen til den eksisterende fil. Under hensyntagen til umask 022 tillader sårbarheden ændring af filrettighederne til 644 (rw-r--r--) og adgang til filer, som ikke havde tilladelse til at blive læst.
  • Omgåelse af «—preserve-root»-restriktioner i chmod-værktøjet, der forhindrer udførelse af rekursive operationer i forhold til rod-FS. Sårbarheden (CVE-2026-35338) skyldes, at koden kun kontrollerede for en eksakt matchning af stien med «/» og ikke udførte kanonisering af filstien. For at omgå kontrollen er det tilstrækkeligt at bruge en sti som «/../» eller en symbolsk henvisning til roden. Sårbarheden er farlig, fordi det muliggør at indsætte sin sti i et systemscript, der kalder chmod-kommandoen, hvilket kan give mulighed for rekursiv ændring af adgangen til alle filer i FS.
  • I rm-værktøjet blev behandling af enhver forkortelse af indstillingen «—no-preserve-root» («—n», «—no», «—no-p», «—no-pres» osv.) tilladt for at deaktivere beskyttelsen mod rekursive operationer med roden (for eksempel kan man angive «rm -rf —n /» og fejlagtigt slette alle data. I GNU Coreutils er sådanne forkortede indstillinger forbudt.
  • Omgåelse af «—preserve-root»-restriktioner i rm-værktøjet, der forhindrer udførelse af rekursive operationer i forhold til rod-FS, gennem substitution af en symbolsk henvisning til «/».
  • Manglende fuld beskyttelse mod angivelse af mapper, der begynder med et punkt. For eksempel, når man udfører «rm -rf .», vil værktøjet give en fejl, men når man angiver «rm -rf ./» eller «rm -rf .///», vil det stille slette den aktuelle mappe.
  • Fejl i analysekoden for kill-værktøjet gør det muligt at sende signal til alle systemprocesser ved at angive proces-id "-1" (kill -1).

Ellers vedrører størstedelen af sårbarhederne klassen TOCTOU (Time-Of-Check-To-Time-Of-Use), som indebærer en kapløbssituation, der muliggør ændring af data i perioden efter validering af informationen, men før udførelse af operationen, for eksempel at erstatte en fil med et symbolsk link i det øjeblik, hvor kontrollen afsluttes, og før operationen udføres. I konteksten af brugen af cp og mv i system scripts, der kører med root-rettigheder, tillader sådanne sårbarheder at kopiere eller overskrive vilkårlige filer.

Kilde: opennet.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster