Het bedrijf Canonical heeft voorlopige resultaten gepubliceerd van een onafhankelijke beveiligingsaudit van de uutils coreutils-toolkit (Rust Coreutils), geschreven in de programmeertaal Rust en gedeeltelijk gebruikt in Ubuntu in plaats van het GNU Coreutils-pakket. De audit is uitgevoerd door Zellic, een bedrijf met ervaring in het analyseren van kwetsbaarheden in Rust-projecten. Tijdens de controle werden 113 beveiligingsproblemen geïdentificeerd.
Momenteel is er al een rapport (PDF, 156 pagina's) beschikbaar met de resultaten van de eerste fase van de audit, die zich richtte op de belangrijkste hulpprogramma's uit de uutils-set. In de eerste fase, die van december 2025 tot januari 2026 werd uitgevoerd, werden 73 kwetsbaarheden ontdekt, waarvan 7 als kritiek, 11 als gevaarlijk, 29 als van gemiddelde ernst en 26 als ongevaarlijk werden aangemerkt.
De tweede fase van de audit vond plaats van februari tot maart en richtte zich op secundaire hulpprogramma's die niet in de eerste fase waren gecontroleerd. In de tweede fase werden 40 kwetsbaarheden gevonden, waarvan de ernst momenteel niet verder wordt gespecificeerd (het rapport zal later worden gepubliceerd). Informatie over alle ontdekte problemen is al aan de ontwikkelaars van uutils overgedragen en het grootste deel van de kwetsbaarheden is in de versies uutils 0.5-0.8 verholpen zonder veel publiciteit en zonder verbindingen te markeren tussen aangebrachte correcties en het oplossen van kwetsbaarheden.
Het rust-coreutils-pakket is standaard opgenomen in de herfstrelease van Ubuntu 25.10, maar gezien de problemen die tijdens de audit zijn ontdekt, zijn de hulpprogramma's cp, mv en rm uit het GNU Coreutils-pakket teruggebracht in de LTS-tak van Ubuntu 26.04. Er wordt opgemerkt dat er op 22 april 8 bekende race-conditions in deze hulpprogramma's blijven bestaan. De andere hulpprogramma's zijn afkomstig uit de rust-coreutils 0.8.0-versie. In Ubuntu 26.10 zijn de ontwikkelaars van plan volledig over te schakelen op rust-coreutils.
Kwetsbaarheden in systeemhulpprogramma's zijn gevaarlijk omdat ze worden gebruikt in scripts die met root-rechten worden uitgevoerd. Bijvoorbeeld, de kwetsbaarheid die in de uutils coreutils 0.3.0-release in de rm-hulpprogramma is verholpen, had kunnen worden benut bij de dagelijkse uitvoering vanuit het cron-script /etc/cron.daily/apport, dat met root-rechten wordt uitgevoerd en de inhoud van de /var/crash-directory, die voor alle gebruikers in het systeem beschrijfbaar is, recursief verwijdert.
Onder de kwetsbaarheden die in het eerste rapport als kritiek zijn gemarkeerd:
- Een kwetsbaarheid in de chroot-tool, veroorzaakt door het verwerken van de optie "—userspec" na de aanroep van chroot(), maar vóór het opheffen van privileges. Op systemen met glibc leidt naamresolutie via de functie getpwnam() tot het lezen van het bestand /etc/nsswitch.conf, dat wordt toegepast in NSS (Name Service Switch), en het dynamisch laden van de in dat bestand opgegeven bibliotheken met NSS-modules (libnss_*.so.2). Aangezien vóór de verwerking van NSS de aanroep chroot() wordt uitgevoerd, wordt het bestand /etc/nsswitch.conf geladen ten opzichte van de nieuwe root, maar worden de NSS-bibliotheken geladen vóór het opheffen van de privileges. Als de gebruiker schrijftoegang heeft tot de nieuwe root, kan hij zijn eigen NSS-bibliotheken onderbrengen en code met root-rechten uitvoeren.
- Wijzigingen in de toegangsrechten van het bestand na een mislukking bij het aanmaken van een genamed kanaal (FIFO) door de mkfifo-tool — als een bestaand bestand als argument wordt opgegeven, retourneert mkfifo een fout, maar beëindigt de uitvoering niet onverwacht en roept de functie set_permissions() aan om de toegangsrechten van het bestaande bestand te wijzigen. Gezien umask 022 stelt de kwetsbaarheid in staat om de toegangsrechten van het bestand te wijzigen naar 644 (rw-r-r-) en toegang te krijgen tot bestanden waarvoor geen leesrechten waren toegestaan.
- Omzeilen van de beperkingen van "—preserve-root" in de chmod-tool, die het uitvoeren van recursieve operaties ten opzichte van de root FS verbieden. De kwetsbaarheid (CVE-2026-35338) ontstaat omdat in de code alleen exacte overeenkomsten van het pad met "\/" werden gecontroleerd en er geen canonisatie van het bestandspad werd uitgevoerd. Om de controle te omzeilen, is het voldoende om een pad van de vorm "\/..\/" of een symbolische link naar de root te gebruiken. De kwetsbaarheid is gevaarlijk omdat, wanneer iemand zijn eigen pad kan invoegen in het systeemscript dat de chmod-opdracht aanroept, hij recursieve wijzigingen in de toegangsrechten voor alle bestanden in de FS kan afdwingen.
- In de rm-tool was het mogelijk om elke afkorting van de optie "—no-preserve-root" te verwerken ("—n", "—no", "—no-p", "—no-pres" enz.) om de bescherming tegen het uitvoeren van recursieve operaties met de root uit te schakelen (bijvoorbeeld, men kan "rm -rf —n \/" opgeven en per ongeluk alle gegevens verwijderen). In GNU Coreutils zijn dergelijke afgekorte opties verboden.
- Omzeilen van de beperkingen van "—preserve-root" in de rm-tool, die het uitvoeren van recursieve operaties ten opzichte van de root FS verbieden, door een symbolische link naar "\/" in te voegen.
- Het ontbreken van volledige bescherming tegen het opgeven van mappen die met een punt beginnen. Bijvoorbeeld, bij het uitvoeren van "rm -rf ." zal de tool een foutmelding geven, maar bij het opgeven van "rm -rf .\/" of "rm -rf .////////////////////////////////////////////////////////////////" zal het stilletjes de huidige map verwijderen.
- Een fout in de parsercode van de kill-tool maakt het mogelijk om signalen naar alle processen in het systeem te sturen door proces-ID «-1» op te geven (kill -1).
Verder valt het grootste deel van de kwetsbaarheden in de categorie TOCTOU (Time-Of-Check-To-Time-Of-Use), wat een raceconditie inhoudt die het mogelijk maakt om gegevens te wijzigen in de tijd tussen de validatie van de informatie en de uitvoering van de operatie, bijvoorbeeld door een bestand te vervangen door een symbolische link tussen het einde van de controle en het begin van de uitvoering. In de context van het gebruik van de cp- en mv-tools in systeemscripts die met root-rechten worden uitgevoerd, kunnen dergelijke kwetsbaarheden het mogelijk maken om willekeurige bestanden te kopiëren of te overschrijven.
Bron: opennet.ru
