Un progetto per implementare le utility sudo e su in Rust

L'ISRG (Internet Security Research Group), che è il fondatore del progetto Let's Encrypt e promuove HTTPS e lo sviluppo di tecnologie per aumentare la sicurezza di Internet, ha presentato il progetto Sudo-rs per creare implementazioni delle utility sudo e su scritte in Rust che ti permettono di eseguire comandi per conto di altri utenti. Sotto le licenze Apache 2.0 e MIT è già stata pubblicata una versione pre-release di Sudo-rs, non ancora pronta per l'uso generale. Il progetto, che ha iniziato i lavori nel dicembre 2022, dovrebbe essere completato nel settembre 2023.

Il lavoro è attualmente incentrato sull'implementazione di funzionalità in Sudo-rs che ne consentano l'utilizzo come sostituto trasparente di sudo in casi d'uso tipici (configurazioni di sudoer predefinite su Ubuntu, Fedora e Debian). In futuro, si prevede di creare una libreria che consenta di incorporare la funzionalità sudo in altri programmi e di fornire un metodo di configurazione alternativo che eviti l'analisi della sintassi del file di configurazione sudoers. Sulla base della funzionalità sudo implementata, verrà preparata anche una variante dell'utility su. Inoltre, i piani menzionano il supporto per SELinux, AppArmor, LDAP, strumenti di controllo, la possibilità di autenticare senza utilizzare PAM e l'implementazione di tutte le opzioni della riga di comando sudo.

Secondo Microsoft e Google, circa il 70% delle vulnerabilità è causato da una gestione non sicura della memoria. Si prevede che l'utilizzo del linguaggio Rust per sviluppare su e sudo ridurrà il rischio di vulnerabilità causate da una gestione non sicura della memoria ed eliminerà il verificarsi di errori come l'accesso a un'area di memoria dopo che è stata liberata e il sovraccarico del buffer. Sudo-rs è stato sviluppato da ingegneri di Ferrous Systems e Tweede Golf con fondi forniti da aziende come Google, Cisco, Amazon Web Services.

La gestione sicura della memoria viene fornita in Rust in fase di compilazione attraverso il controllo dei riferimenti, tenendo traccia della proprietà dell'oggetto e della durata dell'oggetto (ambito), nonché attraverso la valutazione della correttezza dell'accesso alla memoria durante l'esecuzione del codice. Rust fornisce anche protezione contro gli overflow di numeri interi, richiede l'inizializzazione obbligatoria dei valori delle variabili prima dell'uso, gestisce meglio gli errori nella libreria standard, applica il concetto di riferimenti e variabili immutabili per impostazione predefinita, offre una forte tipizzazione statica per ridurre al minimo gli errori logici.

Fonte: opennet.ru

Aggiungi un commento