L'implementazione di sudo e su in Rust ha lo scopo di migliorare la sicurezza in queste utilità.
Tre mesi fa, abbiamo condiviso qui sul blog la notizia della creazione del progetto "Sudo-rs" da parte dell'ISRG, fondatore del progetto Let's Encrypt, che promuove lo sviluppo di tecnologie per aumentare la sicurezza di Internet.
In quella pubblicazione abbiamo condiviso alcuni dettagli e caratteristiche del progetto, che mira fondamentalmente a creare implementazioni delle utility SUDO e SU in Rust (è possibile consultare la pubblicazione al seguente link ).
Prima versione stabile di sudo-rs
Il motivo per cui lo menziono è che la prima versione stabile del progetto Sudo-rs è stata lanciata di recente , e allo sviluppo hanno partecipato ingegneri di Ferrous Systems e Tweede Golf, con finanziamenti forniti da Google, Cisco e Amazon Web Services.
Per chi non avesse familiarità con il progetto "Sudo-rs", posso dire che il suo scopo è sviluppare versioni in Rust delle utility SUDO e SU, progettate per eseguire comandi per conto di altri utenti, dato che SUDO è un'utility da console nei sistemi operativi Unix-like per eseguire comandi con i privilegi di un altro utente, di default il superutente root.
Le funzioni `sudo` e `su`, in `sudo-rs`, sono state scritte da zero in Rust, un linguaggio sempre più utilizzato e raccomandato nel settore, in quanto è diventato uno dei linguaggi principali per Android e viene persino supportato come linguaggio di programmazione secondario nel kernel Linux. Anche Microsoft, dal canto suo, ha menzionato in diverse occasioni la sua intenzione di riscrivere il kernel e alcune delle librerie di Windows in esso contenute.
Si precisa che le utilità sono compatibili con le classiche utilità SUDO e SU ove possibile, consentendo l'utilizzo di sudo-rs come sostituto trasparente di SUDO in scenari tipici che corrispondono alla configurazione predefinita di /etc/sudoers in Ubuntu e Debian. Sudo-rs è già stato implementato al posto del tradizionale pacchetto SUDO nella distribuzione Wolfi Linux, con l'obiettivo di fornire il massimo livello di sicurezza.
L'utilizzo del linguaggio Rust per lo sviluppo di SU e SUDO dovrebbe ridurre il rischio di vulnerabilità causate da una gestione non sicura della memoria ed eliminare il verificarsi di errori come l'accesso a un'area di memoria dopo che è stata liberata e l'esaurimento della memoria ai confini del buffer.
Inoltre, per garantire un livello di sicurezza adeguato, il progetto ha sviluppato una suite di test ampliata , che consente anche di monitorare il mantenimento del livello di compatibilità richiesto con l'utility sudo originale. Per ridurre la superficie di attacco e il numero di potenziali vulnerabilità in sudo-rs, si è deciso di abbandonare l'implementazione della funzionalità sudo, raramente utilizzata.
Tra le differenze con SUDO , si menziona l' inclusione della modalità predefinita use_pty, tra le funzionalità non ancora implementate figurano mail_badpass e la compatibilità con sendmail, mentre tra le funzionalità non ancora implementate, ma che verranno aggiunte in futuro, si segnalano: l'utility sudoedit, le modalità NOEXEC e NOINTERCEPT, il supporto per il collegamento di blocchi di configurazione "default" a singoli utenti e comandi, e la possibilità di autenticarsi senza utilizzare PAM.
Vale la pena ricordare che in questo mese di settembre si dovrebbe poter confermare la qualità dell'implementazione ed è previsto anche un audit indipendente del codice base sudor-rs.
Inoltre, viene menzionato che la seconda versione prevede l'aggiunta di strumenti per lavorare in ambienti multiutente , come la modalità NOEXEC, i log di controllo, la possibilità per gli utenti con privilegi sudo di mappare gli host e il supporto per un massimo di 16 gruppi di utenti. La terza versione dovrebbe essere compatibile con la configurazione sudoers utilizzata in Fedora e includerà anche l' utilità sudoedit e l'utilizzo dei meccanismi SELinux e AppArmor per migliorare la sicurezza.
Infine , se siete interessati ad approfondire l'argomento , potete trovare maggiori dettagli al seguente link.