Nel repository dei pacchetti di Ubuntu 26.10, il cui rilascio è previsto per il 15 ottobre, è stata completata la migrazione all'insieme di strumenti uutils coreutils (Rust Coreutils), sviluppato in linguaggio Rust. Le utility di Rust Coreutils hanno sostituito integralmente tutti i componenti del pacchetto GNU Coreutils, comprese cp, mv e rm, che in Ubuntu 26.04 venivano ancora fornite nella versione di GNU Coreutils.
Il pacchetto rust-coreutils era stato inizialmente attivato come predefinito in Ubuntu 25.10, ma nel ramo LTS di Ubuntu 26.04 si era tornati a distribuire le utility cp, mv e rm del set GNU Coreutils. Le versioni di cp, mv e rm sono state ripristinate a causa di problemi di sicurezza emersi durante l'audit del codice di Rust Coreutils. La maggior parte delle vulnerabilità in Rust Coreutils è dovuta alla presenza di race condition, che consentono di modificare i dati nel periodo compreso tra la verifica della correttezza delle informazioni e l'esecuzione dell'operazione su di esse (TOCTOU — Time-Of-Check-To-Time-Of-Use). Tra l'altro, vulnerabilità di questo tipo permettono di sostituire un file con un link simbolico nel momento tra il completamento del controllo e l'avvio dell'operazione.
Nel contesto dell'uso delle utility cp, mv e rm in script di sistema eseguiti con privilegi di root, la sostituzione con un link simbolico consente di copiare, sovrascrivere o eliminare file arbitrari. Per esempio, durante l'eliminazione ricorsiva delle directory, l'utility rm controllava inizialmente tutte le directory e poi le rimuoveva in sequenza in ordine inverso, richiamando la funzione rmdir(). Se si sostituisce la directory padre con un link simbolico subito dopo la verifica di tale directory, ma prima del controllo delle directory figlie al suo interno, è possibile ottenere l'eliminazione di qualsiasi directory del sistema durante l'esecuzione quotidiana tramite cron dello script /etc/cron.daily/apport, che, operando con privilegi di root, elimina ricorsivamente il contenuto della directory /var/crash, scrivibile da tutti gli utenti del sistema.
Fonte: opennet.ru
