Penso che molti dei problemi con i sistemi basati sulle capacità e la nostra comprensione di questi sia che ce ne sono pochi in circolazione. Tuttavia, sei fortunato: FreeBSD ha appena aggiunto Capsicum supporto alla versione 9.0. Capsicum è un progetto di ricerca per implementare un [pratico insieme pratico di funzionalità] [1]. Questo lavoro ha coinvolto persone del team di Google Security Research e include una build sperimentale del browser Chrome progettata per utilizzare il sistema.
Ciò che potrebbe interessarti maggiormente è l'elenco delle funzioni:
- capabilities - refined file descriptors with fine-grained rights
In pratica, opererà come SELinux, con ovvie differenze amministrative. Ha analogie per digitare etichette.
- process descriptors - capability-centric process ID replacement
Ha analogie con i domini di SELinux. Dal punto di vista dell'utente, potrebbe non sembrare diverso.
Ora, nella prossima serie di funzionalità si vede perché le funzionalità non sono ancora di uso comune:
- anonymous shared memory objects - an extension to the POSIX shared memory API to support anonymous swap objects associated with file descriptors (capabilities)
- rtld-elf-cap - modified ELF run-time linker to construct sandboxed applications
- libcapsicum - library to create and use capabilities and sandboxed components
Mentre SELinux richiede il supporto del kernel e una politica e va bene da lì, i problemi di configurazione a parte, l'implementazione pratica delle funzionalità richiede un approccio modificato alle API disponibili e la successiva preparazione delle applicazioni per accedervi.
Ora specificamente per le tue domande:
Can they both prevent access to the same granular level?
Incredibilmente paragonabile, sì. SELinux può, ad esempio, descrivere un dominio di applicazione e dargli accesso a una determinata cartella per sola lettura. I sistemi basati sulla capacità, quando inizializzano il processo, semplicemente non gli consentono di scrivere su quel percorso, o rifiutano successivamente tali richieste. È il modo in cui vengono implementati che varia.
Are different attacks possible on SELinux in targeted mode than on a capability based operating system?
Onestamente, è abbastanza difficile da dire. Non conosco sistemi operativi basati su capacità schierate su larga scala che abbiano attratto l'interesse per essere seriamente testati su strada. Mi aspetto, tuttavia, che alla fine l'obiettivo rimanga lo stesso: persuadere un processo per eseguire il codice per te usando i suoi privilegi più elevati (capacità). Possono variare per sfruttare il modo in cui allo stesso modo i buffer overflow variano a seconda del programma scelto, ma alla fine l'obiettivo fondamentale è sempre lo stesso.
Potresti sempre fare un tentativo . C'è anche la documentazione su le modifiche API di cui ho parlato.
Dichiarazione di non responsabilità: non sono affiliato al Capsicum Project, all'Università di Cambridge o al Progetto FreeBSD in alcun modo.