Per FreeBSD si sta sviluppando un meccanismo di isolamento simile a plegde e unveil

Per FreeBSD è stata proposta un'implementazione di un meccanismo di isolamento delle applicazioni, simile alle chiamate di sistema plegde e unveil sviluppate dal progetto OpenBSD. L'isolamento in plegde avviene vietando l'accesso a chiamate di sistema non utilizzate dall'applicazione, mentre in unveil tramite l'apertura selettiva dell'accesso solo per specifici percorsi di file con cui l'applicazione può lavorare. Per l'applicazione viene creato un elenco bianco simile a quello delle chiamate di sistema e dei percorsi di file, mentre tutte le altre chiamate e percorsi vengono vietati.

La differenza rispetto all'analogo di plegde e unveil sviluppato per FreeBSD consiste nel fornire uno strato aggiuntivo che consente di isolare le applicazioni senza 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 utilizzate attraverso l'aggiunta di annotazioni speciali nel codice di ciascuna applicazione. Per semplificare l'organizzazione della protezione, i filtri consentono di evitare la specificazione a livello di singole chiamate di sistema e di manipolare classi di chiamate di sistema (input/output, lettura di file, scrittura di file, socket, ioctl, sysctl, avvio di processi, ecc.). Le funzioni di limitazione dell'accesso possono essere richiamate nel codice dell'applicazione durante l'esecuzione di determinate azioni, ad esempio, l'accesso a socket e file può essere chiuso dopo l'apertura dei file necessari e l'instaurazione della connessione di rete.

L'autore del port di plegde e unveil per FreeBSD intende fornire la possibilità di isolamento di applicazioni arbitrarie, per questo è stata 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 i percorsi di file tipici, specifici per determinate applicazioni (lavorazione audio, interazione di rete, registrazione in log, ecc.), oltre a un file contenente le regole di accesso per applicazioni specifiche.

L'utilità curtain può essere utilizzata per isolare la maggior parte delle utility non modificate, dei processi server, delle applicazioni grafiche e persino delle intere sessioni desktop. È supportata la condivisione di curtain con i meccanismi di isolamento forniti dai sottosistemi Jail e Capsicum. È anche possibile organizzare un'isolamento nidificato, in cui le applicazioni in esecuzione ereditano le regole stabilite dall'applicazione genitore, integrandole con specifiche limitazioni. Alcune operazioni del kernel (strumenti di debug, POSIX/SysV IPC, PTYs) sono ulteriormente protette mediante un meccanismo di barriere, che impedisce l'accesso agli oggetti del kernel creati da processi non attuali o parenti.

Il processo può configurare autonomamente la propria isolamento utilizzando la chiamata curtainctl o utilizzando le funzioni plegde() e unveil() fornite dalla libreria libcurtain, analoghe a quelle di OpenBSD. Per monitorare i bloccaggi durante l'esecuzione dell'applicazione, è previsto sysctl 'security.curtain.log_level'. L'accesso ai protocolli X11 e Wayland è attivato separatamente specificando durante l'avvio di curtain le opzioni '-X'/'-Y' e '-W', ma il supporto per le applicazioni grafiche non è ancora sufficientemente stabilizzato e presenta una serie di problemi irrisolti (i problemi si manifestano principalmente nell'utilizzo di X11, mentre il supporto per Wayland è stato realizzato in modo significativamente migliore). Gli utenti possono aggiungere ulteriori limitazioni creando file locali con regole (~/.curtain.conf). Ad esempio, per consentire la scrittura da Firefox solo nella cartella ~ /Downloads /, si può aggiungere una sezione '[firefox]' con la regola '~ /Downloads /: rw +'.

L'implementazione comprende il modulo del kernel mac_curtain per il controllo di accesso obbligatorio (MAC, Mandatory Access Control), un insieme di patch per il kernel FreeBSD con l'implementazione dei necessari gestori e filtri, la libreria libcurtain per l'utilizzo delle funzioni plegde e unveil nelle applicazioni, l'utilità curtain, esempi di file di configurazione, un insieme di test e patch per alcuni programmi nello spazio utente (ad esempio, per utilizzare $TMPDIR al fine di unificazione della gestione dei file temporanei). L'autore intende, per quanto possibile, ridurre al minimo il numero di modifiche che richiedono l'applicazione di patch al kernel e alle applicazioni.

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster