FreeBSD sta sviluppando un meccanismo di isolamento simile a plegde e unveiled

È stata proposta un'implementazione di un meccanismo di isolamento dell'applicazione per FreeBSD, che ricorda le chiamate di sistema plegde e unveil sviluppate dal progetto OpenBSD. L'isolamento in plegde viene effettuato vietando l'accesso alle chiamate di sistema che non sono utilizzate nell'applicazione e nello svelamento attraverso l'apertura selettiva dell'accesso solo per determinati percorsi di file con cui l'applicazione può funzionare. Per l'applicazione, viene formata una sorta di lista bianca di chiamate di sistema e percorsi di file e tutte le altre chiamate e percorsi sono vietati.

La differenza tra plegde e unveiled, sviluppato per FreeBSD, si riduce a fornire un livello aggiuntivo che consente di isolare le applicazioni senza apportare modifiche al loro codice o con modifiche minime. Ricordiamo che in OpenBSD, plegde e unveil mirano a una stretta integrazione con l'ambiente di base e vengono implementati aggiungendo annotazioni speciali al codice di ciascuna applicazione. Per semplificare l'organizzazione della protezione, i filtri consentono di evitare dettagli a livello di singole chiamate di sistema e di manipolare le classi di chiamate di sistema (input/output, lettura file, scrittura file, socket, ioctl, sysctl, avvio processo, ecc.) . Le funzioni di restrizione dell'accesso possono essere richiamate nel codice dell'applicazione quando vengono eseguite determinate azioni, ad esempio, l'accesso ai socket e ai file può essere chiuso dopo aver aperto i file necessari e aver stabilito una connessione di rete.

L'autore del port of plegde e unveiling per FreeBSD intende fornire la possibilità di isolare applicazioni arbitrarie, per le quali viene proposta l'utilità curtain, che consente di applicare alle applicazioni regole definite in un file separato. La configurazione proposta include un file con impostazioni di base che definiscono le classi di chiamate di sistema e percorsi di file tipici specifici per determinate applicazioni (funzionamento con audio, interazione di rete, registrazione, ecc.), nonché un file con regole di accesso per applicazioni specifiche.

L'utilità curtain può essere utilizzata per isolare la maggior parte delle utilità non modificate, i processi del server, le applicazioni grafiche e persino intere sessioni desktop. È supportata la condivisione della tenda con i meccanismi di isolamento forniti dai sottosistemi Jail e Capsicum. È anche possibile organizzare l'isolamento nidificato, quando le applicazioni avviate ereditano le regole impostate dall'applicazione principale, integrandole con restrizioni separate. Alcune operazioni del kernel (strumenti di debug, POSIX/SysV IPC, PTY) sono inoltre protette da un meccanismo di barriera che impedisce l'accesso agli oggetti del kernel creati da processi diversi da quello corrente o padre.

Un processo può impostare il proprio isolamento chiamando curtainctl o utilizzando le funzioni plegde() e unveil() fornite dalla libreria libcurtain, simili a quelle di OpenBSD. Il sysctl 'security.curtain.log_level' viene fornito per tenere traccia dei blocchi mentre l'applicazione è in esecuzione. L'accesso ai protocolli X11 e Wayland è abilitato separatamente specificando le opzioni “-X”/”-Y” e “-W” all'avvio del sipario, ma il supporto per le applicazioni grafiche non è ancora sufficientemente stabilizzato e presenta una serie di problemi irrisolti (i problemi compaiono principalmente quando si utilizza X11 e il supporto di Wayland è molto migliore). Gli utenti possono aggiungere ulteriori restrizioni creando file di regole locali (~/.curtain.conf). Ad esempio, per consentire la scrittura da Firfox solo nella directory ~/Downloads/, è possibile aggiungere la sezione "[firefox]" con la regola "~/Downloads/ : rw +".

L'implementazione include il modulo kernel mac_curtain per Mandatory Access Control (MAC), un set di patch per il kernel FreeBSD con l'implementazione dei necessari gestori e filtri, la libreria libcurtain per l'utilizzo di plegde e funzioni svelate nelle applicazioni, l'utility curtain, sample file di configurazione, una serie di test e patch per alcuni programmi nello spazio utente (ad esempio, per utilizzare $TMPDIR per unificare il lavoro con i file temporanei). Quando possibile, l'autore intende ridurre al minimo il numero di modifiche che richiedono l'applicazione di patch al kernel e alle applicazioni.

Fonte: opennet.ru

Aggiungi un commento