S-a anunțat că a fost propusă implementarea unui mecanism de izolare a aplicațiilor pentru FreeBSD , asemănător apelurilor de sistem foldde și unveil dezvoltate de proiectul OpenBSD.
Izolarea plierii este realizată prin interzicerea accesului la apelurile de sistem care nu sunt utilizate în aplicație și prin deschiderea selectivă a accesului la anumite căi de fișiere cu care aplicația poate funcționa. Pentru aplicație, se formează un fel de listă albă de apeluri de sistem și căi de fișiere, iar toate celelalte apeluri și căi sunt interzise.
Diferența dintre `pledge` și `unveil` , dezvoltate pentru FreeBSD , se reduce la furnizarea unui strat suplimentar care permite izolarea aplicațiilor cu modificări minime sau fără modificări ale codului lor. Rețineți că în OpenBSD, `pledge` și `unlock` vizează o integrare strânsă cu mediul de bază și sunt implementate prin adăugarea de adnotări speciale la codul fiecărei aplicații.
Pentru a simplifica organizarea protecției, filtrele vă permit să evitați detaliile la nivelul apelurilor de sistem individuale și să manipulați clasele de apeluri de sistem (intrare/ieșire, citire fișier, scriere fișier, socket, ioctl, sysctl, procese de pornire etc.) . Funcțiile de restricție de acces pot fi apelate în codul aplicației pe măsură ce sunt efectuate anumite acțiuni, de exemplu, accesul la socluri și fișiere poate fi închis după deschiderea fișierelor necesare și stabilirea unei conexiuni la rețea.
Autorul portului FreeBSD pentru pliere și desfășurare își propune să ofere posibilitatea de a izola aplicații arbitrare. Pentru a realiza acest lucru, propun utilitarul curtain, care permite aplicarea unor reguli definite într-un fișier separat aplicațiilor. Configurația propusă include un fișier cu setări de bază care definesc clasele de apeluri de sistem și căile tipice de fișiere specifice anumitor aplicații (lucrul cu sunetul, crearea de rețele, înregistrarea în jurnal etc.), precum și un fișier cu reguli de acces pentru aplicații specifice.
Utilitarul cortină poate fi utilizat pentru a izola majoritatea utilităților nemodificate, proceselor de server, aplicațiilor grafice și chiar sesiunilor întregi de desktop. Partajarea cortinelor este susținută de mecanismele de izolare oferite de subsistemele Jail și Capsicum.
Izolarea imbricată este de asemenea posibilă, unde aplicațiile lansate moștenesc regulile stabilite de aplicația principală, suplimentându-le cu restricții separate. Unele operațiuni ale kernelului (instrumente de depanare, POSIX/SysV IPC, PTY) sunt protejate în plus de un mecanism de barieră care împiedică accesul la obiectele kernelului create de alte procese decât procesul curent sau principal.
Un proces își poate configura propria izolare apelând curtainctl sau utilizând funcțiile pledge() și unveil() furnizate de biblioteca libcurtain, similare cu cele din OpenBSD. Parametrul sysctl 'security.curtain.log_level' este furnizat pentru a urmări blocările în timp ce aplicația rulează.
Accesul la problemele nerezolvate (problemele apar în principal la utilizarea X11, iar suportul Wayland este mult mai bun). Utilizatorii pot adăuga restricții suplimentare prin crearea fișierelor de reguli locale (~/.curtain.conf). De exemplu,
Implementarea include modulul mac_curtain kernel pentru controlul accesului obligatoriu (MAC), un set de patch-uri pentru nucleul FreeBSD cu implementarea driverelor și filtrelor necesare, biblioteca libcurtain pentru utilizarea plegde și caracteristicile dezvăluite în aplicații, cortina de utilitate, arată configurația fișiere, o suită de testare și patch-uri pentru unele programe din spațiul utilizatorului (de exemplu, pentru a utiliza $TMPDIR pentru a unifica munca cu fișierele temporare). Ori de câte ori este posibil, autorul își propune să minimizeze numărul de modificări care necesită corecții la kernel și la aplicații.
În cele din urmă, dacă sunteți interesați să aflați mai multe , puteți găsi detalii la linkul următor.