Il progetto Landrun ha avviato lo sviluppo di un nuovo sistema per l'esecuzione isolata di singole applicazioni. Per l'isolamento viene utilizzato il modulo LSM del kernel Linux Landlock, che consente di evitare l'esecuzione di operazioni privilegiate durante la creazione di un ambiente sandbox. Per le sue funzioni, Landrun è simile all'utility Firejail, ma si distingue per una realizzazione più semplice, leggerezza e la possibilità di lavorare sotto un utente normale non privilegiato senza dover utilizzare il flag suid. Il codice del progetto è scritto in Go e distribuito sotto licenza GPLv2.
Il meccanismo Landlock consente a programmi non privilegiati di limitare l'uso di oggetti del kernel Linux, come gerarchie di file, socket di rete e ioctl. A differenza degli spazi dei nomi e del filtraggio delle chiamate di sistema, l'ambiente isolato è formato dal kernel Linux sotto forma di uno strato aggiuntivo sui meccanismi di gestione degli accessi esistenti. Per interagire con la sottosistema Landlock, l'utility landrun utilizza la libreria go-landlock sviluppata dagli autori di LandLock.
Landrun consente di ridurre il rischio di compromissione del sistema principale quando si eseguono programmi non fidati o potenzialmente vulnerabili. Tra le sue funzionalità, si segnala il supporto per la limitazione selettiva dell'accesso a livello di singoli directory, il legame dei privilegi ai percorsi dei file (autorizzazione o divieto di lettura, scrittura ed esecuzione) e il controllo sull'inizializzazione e l'accettazione di connessioni TCP.
Ad esempio, con Landrun è possibile vietare l'esecuzione di file eseguibili, consentire la scrittura solo in una sotto-cartella specifica con i dati, vietare la creazione di socket in ascolto per le connessioni di rete e consentire l'invio di richieste di rete solo a porte TCP specifiche. Nel caso più semplice, per vietare scrittura, esecuzione e capacità di rete, si può eseguire il programma con il comando «landrun —ro /», mentre per isolare nginx si può usare: landrun —rox /usr/bin —ro /lib,/lib64,/var/www —rwx /var/log —bind-tcp 80,443 /usr/bin/nginx
Nei piani futuri si fa riferimento a una gestione avanzata dell'accesso al file system, supporto UDP e gestione delle risorse dei processi. Per limitare l'accesso a livello di file system è necessario almeno il kernel Linux 5.13, mentre per le limitazioni di rete è necessario il 6.8.
Inoltre, si segnala che nel codice sorgente di Firejail sono già state accettate modifiche che consentono l'uso della sottosistema del kernel Landlock per l'isolamento senza bit suid e l'innalzamento dei privilegi, anche se il rilascio con questo supporto non è ancora stato pubblicato.
Fonte: opennet.ru
