Proiectul Landrun a început dezvoltarea unui nou sistem pentru execuția izolată a aplicațiilor individuale. Pentru izolare, este utilizat modulul LSM din nucleul Linux Landlock, care permite evitarea execuției operațiunilor privilegiate în timpul creării unui mediu sandbox. Din punct de vedere al funcționalităților, Landrun este similar cu utilitarul Firejail, dar se deosebește printr-o implementare mai simplă, fiind mai ușor și având capacitatea de a funcționa sub un utilizator obișnuit fără a fi livrat cu flag-ul suid. Codul proiectului este scris în limbajul Go și este distribuit sub licența GPLv2.
Mecanismul Landlock permite programelor fără privilegii să limiteze utilizarea obiectelor din nucleul Linux, cum ar fi ierarhiile de fișiere, socket-urile de rețea și ioctl. Spre deosebire de spațiile de nume și filtrarea apelurilor de sistem, mediu izolat este creat de nucleul Linux sub forma unei straturi suplimentare peste mecanismele existente de control al accesului. Pentru a interacționa cu subsistemul Landlock, utilitarul landrun folosește biblioteca go-landlock de la dezvoltatorii LandLock.
Landrun permite reducerea riscului de compromitere a sistemului de bază atunci când se execută programe nefiabile sau potențial vulnerabile. Printre funcționalitățile sale se numără suportul pentru limitarea selectivă a accesului la nivel de directoare individuale, legarea privilegiilor la căile fișierelor (permisiuni de citire, scriere și execuție) și controlul inițierii și acceptării conexiunilor TCP.
De exemplu, cu ajutorul Landrun, unui proces i se poate interzice să execute fișiere executabile, să se permită scrierea doar într-un subdirector specific cu date, să se interzică crearea socket-urilor de ascultare pentru conexiuni de rețea și să se permită trimiterea cererilor de rețea doar pe porturile TCP specificate. În cel mai simplu caz, pentru a interzice scrierea, execuția și funcționalitățile de rețea, programul poate fi executat cu comanda „landrun —ro /”, iar pentru izolarea nginx se poate folosi: landrun —rox /usr/bin —ro /lib,/lib64,/var/www —rwx /var/log —bind-tcp 80,443 /usr/bin/nginx.
În planurile de viitor se menționează un control extins al accesului la sistemul de fișiere, suport pentru UDP și gestionarea resurselor proceselor. Pentru limitarea accesului la nivel de sistem de fișiere este necesar cel puțin nucleul Linux 5.13, iar pentru restricțiile de rețea — 6.8.
De asemenea, se poate menționa că modificările au fost deja acceptate în baza de cod Firejail, care permit utilizarea subsistemului de nucleu Landlock pentru izolarea fără bitul suid și creșterea privilegiilor, dar versiunea cu acest suport nu a fost publicată încă.
Sursa: opennet.ro
