Ubuntu vuole coreutils in Rust al 100%, ma l'audit mostra 113 problemi

Ubuntu analizza le coreutils in Rust con un audit tecnico: focus su sicurezza, compatibilità e performance rispetto alle utilità GNU tradizionali. Canonical mette in atto una migrazione quasi totale con Ubuntu 26.04 LTS.

Un numero fa rumore più di ogni altra cosa: 113. È il totale dei problemi individuati durante l’audit indipendente commissionato da Canonical sulle Rust Coreutils, il progetto che punta a sostituire gli storici strumenti GNU con una riscrittura in Rust. Il dato, preso da solo, rischia di generare conclusioni affrettate. Se si entra nel merito tecnico, però, va detto che la maggior parte delle criticità è già stata risolta prima dell’integrazione in Ubuntu 26.04 LTS.

Le coreutils non sono un semplice insieme di programmi, ma costituiscono una componente fondamentale di ogni sistema Linux: includono sia le storiche GNU Core Utilities, cioè la raccolta standard di strumenti di base per la gestione di file, processi e sistema, sia le più recenti Rust Coreutils, una reimplementazione degli stessi strumenti sviluppata nel linguaggio Rust per migliorare sicurezza e affidabilità, su cui Canonical ha più volte mostrato interesse per il futuro di Ubuntu.

Cosa sono le coreutils su Linux

Le coreutils non sono un pacchetto qualsiasi: rappresentano un vero e proprio punto di riferimento per qualsiasi sistema Linux: ci sono le storiche GNU Core Utilities e le più recenti Rust Coreutils sulle quali Canonical ha più volte dimostrato di voler puntare per Ubuntu.

Nel complesso sono un insieme di strumenti fondamentali presenti in ogni sistema Linux, perché permettono di svolgere operazioni di base su file, directory e dati direttamente da terminale. Tra i comandi più importanti troviamo, ad esempio, ls per elencare il contenuto di una cartella, cp per copiare file, mv per spostarli o rinominarli, rm per eliminarli e mkdir per creare nuove directory. Ci sono poi comandi come cat, velocizzato fino a 15 volte nell’ultima versione delle utilità GNU (mostra il contenuto di un file), head e tail, utili per visualizzare rispettivamente l’inizio o la fine di un file (molto usati per la gestione dei log), chmod e chown, che servono a gestire permessi e proprietà dei file.

Accanto a questi esistono anche strumenti meno evidenti ma altrettanto cruciali, come df per controllare lo spazio su disco, du per analizzare quanto spazio occupano file e cartelle, date per visualizzare o impostare data e ora di sistema ed echo, spesso usato negli script per stampare testo o variabili.

Le Rust Coreutils includono gli stessi comandi, ma sono riscritti in Rust, un linguaggio progettato per ridurre errori comuni come accessi non sicuri alla memoria. Questo le rende particolarmente interessanti in termini di sicurezza e stabilità, motivo per cui Canonical sta valutando un loro utilizzo sempre più ampio in Ubuntu.

Sono tutti strumenti sono essenziali perché costituiscono la base operativa di Linux: senza di essi sarebbe impossibile gestire file, automatizzare operazioni tramite script o amministrare il sistema. Anche molte applicazioni e script si appoggiano direttamente a questi comandi, rendendoli una parte imprescindibile dell’intero ambiente.

I risultati della verifica sulle Rust Coreutils: numeri e interpretazione

Come accennato in apertura, l’analisi commissionata da Canonical ha individuato 113 problemi complessivi, alcuni dei quali sul versante della sicurezza. Le cifre riportate nelle comunicazioni ufficiali parlano di decine di vulnerabilità catalogate e numerosi difetti minori.

Ubuntu 26.04 LTS integra Rust Coreutils 0.8, una versione che include gran parte delle patch emerse dall’audit: il lavoro di revisione non è un semplice esercizio teorico ma un passaggio diretto verso la stabilizzazione del codice.

Va detto però che il numero elevato di problematiche emerse non è necessariamente un segnale negativo: un progetto giovane, senza decenni di utilizzo reale alle spalle, tende a concentrare difetti che nel software storico sono stati distribuiti nel tempo. La verifica svolta da Zellic, una società specializzata in sicurezza applicativa e ricerca sulle vulnerabilità, ha semplicemente accelerato questo processo di emersione dei bug.

Canonical ha esplicitamente scelto un audit esterno e indipendente, proprio per ottenere un livello di fiducia adeguato a una release LTS. Zellic è descritta come formato da un team di esperti di sicurezza e hacker di alto livello, con l’analisi che ha attraversato più fasi tra fine 2025 e inizio 2026.

Le vulnerabilità TOCTOU e le utility escluse da Ubuntu 26.04 LTS

Non tutti i comandi della Rust Coreutils sono stati considerati pronti per la distribuzione: tre “fondamentali” come cp, mv e rm restano basati sull’implementazione GNU perché le controparti Rust presentano ancora vulnerabilità di tipo TOCTOU (time-of-check to time-of-use).

Si tratta di una classe di bug difficile da eliminare completamente. In scenari concorrenti o con filesystem complessi, una risorsa può cambiare tra il momento in cui viene verificata e quello in cui è effettivamente utilizzata: il risultato può essere un comportamento imprevisto o, nei casi peggiori, una vulnerabilità sfruttabile.

Canonical ha quindi scelto la strada più prudente: escludere le utility critiche da Ubuntu 26.04 LTS fino alla completa stabilizzazione.

Ubuntu 26.10 e l’obiettivo 100% Rust

Il traguardo dichiarato è ambizioso: arrivare a una distribuzione con 100% Rust Coreutils già con Ubuntu 26.10. Non si tratta di una promessa vaga, ma di una roadmap legata alla risoluzione delle criticità residue.

In pratica, se le vulnerabilità TOCTOU saranno eliminate in tempi brevi e i test di compatibilità daranno esito positivo, anche cp, mv e rm passeranno alla nuova implementazione. Questo segnerebbe il primo caso concreto di sostituzione completa delle coreutils GNU in una distribuzione mainstream.

Si tratta comunque di una fase molto delicata: anche piccole variazioni nel comportamento del sistema possono influire su script legacy (cioè codice sviluppato in passato e non aggiornato), sui sistemi di integrazione continua (CI, strumenti che automatizzano test e distribuzione del software) e sugli ambienti di produzione, dove le applicazioni sono effettivamente in uso. Canonical appare consapevole di questi possibili impatti e adotta un approccio graduale per ridurre i rischi.

Le reazioni della comunità: tra scetticismo e pragmatismo

Le discussioni tra sviluppatori e utenti mostrano una polarizzazione interessante. Alcuni osservatori sottolineano come il numero di vulnerabilità individuate possa sembrare elevato, ma in realtà non ci sono problemi particolarmente critici e sono bug in gran parte già risolti.

Altri mettono in dubbio la priorità di questa iniziativa. Secondo questo punto di vista, la sicurezza delle coreutils ha un impatto minore rispetto a componenti esposti come OpenSSL o SSH. In pratica, si sostiene che le risorse potrebbero essere allocate altrove.

La contro-argomentazione, però, è solida: non si tratta di una scelta esclusiva. Migliorare la sicurezza delle utility di base riduce comunque la superficie di attacco, soprattutto in ambienti multiutente o automatizzati. Anche un comando apparentemente innocuo può diventare rilevante in scenari complessi.

Interessante anche il giudizio sul metodo adottato da Canonical. Alcuni commentatori, pur non condividendo la direzione tecnica, riconoscono che commissionare un audit indipendente prima di una release LTS rappresenta una decisione intelligente. In sostanza: meglio scoprire i problemi prima, piuttosto che in produzione.

Ti consigliamo anche

Link copiato negli appunti