Dans le dépôt de la distribution Ubuntu 26.10, dont la sortie est prévue pour le 15 octobre, une transition complète vers l'outil uutils coreutils (Rust Coreutils), écrit en Rust, a été effectuée. Les utilitaires de Rust Coreutils ont entièrement remplacé tous les composants du paquet GNU Coreutils, y compris les utilitaires cp, mv et rm, qui étaient fournis dans Ubuntu 26.04 dans leur version de GNU Coreutils.
Le paquet rust-coreutils a initialement été inclus par défaut dans la version Ubuntu 25.10, mais dans la branche LTS d'Ubuntu 26.04, il y a eu un retour à la fourniture des utilitaires cp, mv et rm du jeu GNU Coreutils. Les variantes de cp, mv et rm ont été réintroduites en raison de problèmes de sécurité révélés lors de l'audit de la base de code de Rust Coreutils. La plupart des vulnérabilités dans Rust Coreutils sont causées par l'existence d'une condition de course, permettant de modifier des données juste après la vérification de l'intégrité des informations, mais avant l'exécution de l'opération (TOCTOU - Time-Of-Check-To-Time-Of-Use). Parmi d'autres, de telles vulnérabilités permettent de remplacer un fichier par un lien symbolique entre la fin de la vérification et le début de l'exécution de l'opération.
Dans le contexte de l'utilisation des utilitaires cp, mv et rm dans des scripts système exécutés avec les droits root, l'insertion d'un lien symbolique permet de copier, écraser ou supprimer des fichiers arbitraires. Par exemple, lors de la suppression récursive de répertoires, l'utilitaire rm vérifiait d'abord tous les répertoires, puis les supprimait séquentiellement dans l'ordre inverse en appelant la fonction rmdir(). Si l'on remplace le répertoire parent par un lien symbolique juste après la vérification de ce répertoire, mais avant la vérification des répertoires enfants, il est possible de supprimer n'importe quel répertoire dans le système lors de l'exécution quotidienne d'un script cron /etc/cron.daily/apport, qui, fonctionnant avec les droits root, supprime récursivement le contenu du répertoire /var/crash, accessible en écriture à tous les utilisateurs du système.
Source : opennet.ru
