Isolamento
Processi dell'isolato dei sistemi in due sensi.
Nel primo, il processo è presentato con un ambiente che sembra
essere un calcolatore che funziona soltanto che processo o quei
processi da isolare. Nel secondo, un ambiente è fornito in cui
le azioni trattate sono analizzate per determinare se fuoriescono le
informazioni. Il primo tipo di ambiente impedisce il processo
l'accesso a del sistema di elaborazione di fondo e tutti i processi
o le risorse che non fanno parte di quell'ambiente. Il secondo
tipo di ambiente non emula un calcolatore. Soltanto altera
l'interfaccia fra il calcolatore attuale ed il process(es).
Macchine Virtuali
Il primo tipo di ambiente è denominato una
macchina virtuale.
Una macchina virtuale è un programma che
simula i fissaggi del sistema di elaborazione di a (possibilmente
astratta).
Una macchina virtuale usa un sistema operativo speciale
denominato un video virtuale della macchina per fornire una macchina
virtuale su cui i sistemi operativi convenzionali possono funzionare
Il vantaggio primario di una macchina virtuale è
quello sistemi operativi esistenti non deve essere modificato.
Funzionano sul video virtuale della macchina. Il video
virtuale della macchina fa rispettare la politica voluta di sicurezza.
Ciò è trasparente all'utente. Il video virtuale della
macchina funziona come nocciolo di sicurezza.
In termini di politica, il video virtuale della macchina
tratta con gli oggetti (gli oggetti che sono le macchine virtuali).
Anche se una macchina virtuale sta facendo funzionare le
centinaia dei processi, il video virtuale della macchina sa soltanto
circa la macchina virtuale. Quindi, può applicare i controlli
di sicurezza ai relativi oggetti e quei comandi si applicano ai
processi che quegli oggetti stanno facendo funzionare. Ciò
soddisfa la regola di relegazione transitiva.
ESEMPIO: Il KVM/370 era una versione
sicurezza-aumentata del video virtuale della macchina dell'IBM VM/370.
Questo sistema ha fornito le macchine virtuali per i relativi
utenti ed uno dei relativi obiettivi era di impedire le comunicazioni
fra le macchine virtuali dei codici categoria differenti di sicurezza,
in modo da gli utenti nei codici categoria differenti di sicurezza
potrebbero usare il sistema allo stesso tempo. Come VM/370, ha
fornito alle macchine virtuali i minidisks e che ha permesso che i
sistemi ripartissero alcune zone del disc. Diverso di VM/370, ha
usato una politica di sicurezza per mediare l'accesso alle zone comuni
del disc per limitare le comunicazioni fra i sistemi. |
ESEMPIO: Karger ed i colleghe alla Digital Equipment
Corporation Hanno sviluppato un video virtuale della macchina (VMM)
per il dicembre VAX. Il video è un nocciolo di sicurezza e può
operare il VMS o il sistema operativo di Ultrix. I funzionamenti
VMM sui fissaggi natali di VAX ed è invocato ogni volta che la
macchina virtuale esegue un'istruzione privilegiata. La relativa
struttura è tipica delle macchine virtuali destinate per fornire la
sicurezza.
Il VAX ha quattro livelli del privilegio: utente,
soprintendente, esecutivo e modi del nocciolo. Per fornire una
macchina virtuale compatibile, le macchine virtuali devono anche avere
quattro livelli del privilegio. Tuttavia, il modo del nocciolo
permette che un processo accedi direttamente alle istruzioni
privilegiate sui fissaggi di VAX. Il soltanto VMM è permesso
fare questo. Le macchine virtuali non possono accedere al modo
del nocciolo. La soluzione deve fornire i modi virtuali.
Questi modi sono utente della VM (che corrispondono al modo
dell'utente), modo del soprintendente della VM ed esecutivo della VM e
modi del nocciolo della VM (entrambi modo realmente esecutivo).
Gli oggetti VMM sono utenti e macchine virtuali. VMM
ha un sistema di lima di base e piana per il relativo proprio uso e
divisorii lo spazio di disc restante fra le macchine virtuali.
Quelle macchine possono usare tutta la struttura che di lima
vogliono ed ogni macchina virtuale ha relativo proprio insieme dei
sistemi di lima. Ogni oggetto ed oggetto fa un'etichetta
multilivelli di integrità e di sicurezza formare ed i livelli di
integrità e di sicurezza un codice categoria di accesso. Due
entità hanno lo stesso codice categoria di accesso se e soltanto se
la loro sicurezza ed etichette di integrità è la stessa ed
un'entità domina un altro se e soltanto se sia i codici categoria di
integrità che di sicurezza si dominano.
Un componente integrale del VMM è un meccanismo di
verifica. Questo meccanismo registra le azioni per analisi
successiva. |
Poiché le macchine virtuali forniscono la stessa
interfaccia per la comunicazione con altre macchine virtuali che i
calcolatori assicurano, quelle scanalature della comunicazione possono
essere controllate o hanno diviso. Come accennato più presto,
se un singolo ospite fa funzionare le macchine virtuali multiple,
quelle macchine virtuali ripartiscono le risorse fisiche in ospite su
cui funzionano. (possono anche ripartire le risorse logiche,
secondo come il nocciolo virtualizing è effettuato.) Ciò
fornisce una terra fertile per le scanalature segrete.
Sandboxes
Un sandbox del campo da giuoco fornisce un
ambiente sicuro per i bambini per rimanere dentro. Se i bambini
lasciano il sandbox senza controllo, possono fare le cose che non sono
supposti di fare. Il sandbox del calcolatore è simile.
Fornisce un ambiente sicuro per i programmi per eseguire dentro.
Se i programmi "lasciano" il sandbox, possono fare le cose che
non sono supposti per fare. Entrambi i tipi di sandboxes
limitano le azioni dei loro occupanti.
Un sandbox è un ambiente in
cui le azioni di un processo sono conciliarsi limitato ad una politica
di sicurezza.
I sistemi possono fare rispettare le limitazioni in due
sensi. In primo luogo, il sandbox può limitare l'ambiente di
esecuzione come stato necessario. Ciò è fatta solitamente
aggiungendo i meccanismi dicontrollo del supplemento alle biblioteche
o al nocciolo. Il programma in se non è modificato. Per
esempio, il nocciolo VMM discusso più presto è un sandbox perché
costringe gli accessi dei sistemi operativi (invariati) che funzionano
su esso. La macchina virtuale del Java è un sandbox perché il
relativo responsabile di sicurezza limita l'accesso dei programmi
trasferiti alle risorse di sistema come dettate da una politica di
sicurezza.
ESEMPIO: Il nocciolo operativo della parete
refrattaria di Sidewinder usa il tipo applicazione per limitare i
processi. Ciò è un esempio di un sandbox sviluppato in un
nocciolo ed ha la proprietà che il sandbox è definito dal fornitore.
Non è inteso per essere alterato al luogo. Un tal disegno
è tipico per un sistema di chiave in mano, che è l'uso progettato
per una parete refrattaria di Sidewinder.
La macchina virtuale del Java, in cui ha trasferito applet
è eseguita, è un altro esempio di un sandbox. Il sandbox
limita l'insieme delle lime a che il applet può accedere e degli
ospiti a cui il applet può collegare. Altri meccanismi di
sicurezza aumentano il sandbox.
Il DTE, il tipo meccanismo di esecuzione per DTEL, è un
esempio in cui le modifiche del nocciolo permettono ai coordinatori di
sistema di configurare i loro propri sandboxes. Il nocciolo fa
rispettare i vincoli. |
Il secondo metodo di applicazione deve modificare il
programma (o processo) da eseguire. I programmi di messa a punto
dinamici ed alcuni profilers usano questa tecnica aggiungendo gli
scaglioni di fatturazione al codice e, quando la presa accade,
analizzando il dichiarare del processo corrente. Un variabile,
conosciuto come individuazione dei difetti del software, aggiunge le
istruzioni che effettuano i controlli di accesso di memoria o altra
controlla mentre il programma funziona, in modo da tutto il tentativo
di violare la politica di sicurezza causa un errore.
ESEMPIO: Janus effettua un sandbox. È un
ambiente di esecuzione in cui le chiamate del sistema sono bloccate e
controllate. Gli utenti lo eseguono per limitare gli oggetti ed
i modi di accesso dell'untrusted il programma. Janus consiste di
una struttura, che fa il controllo runtime e dei moduli, che
determinano quali accessi devono concedersi.
Janus in primo luogo legge una lima di configurazione.
Questa lima gli insegna per caricare determinati moduli.
Con il modulo l'identificazione è una lista dei vincoli.
La seguente lima di configurazione di esempio definisce lo SFI
(statistiche finanziarie internazionali) di variabile di ambiente per
il bambino e limita l'accesso del bambino al sistema di lima. Il
bambino non può accedere ad alcune lime tranne quelli che sono
chiamati sotto. Il bambino può leggere o scrivere a tutta la
lima nel sistema di lima di /usr tranne quelli nel /usr/lib ed indici
di /usr/local/lib (che sono letti soltanto) ed in /usr/bin (colto ed
eseguire). Il bambino può leggere tutta la lima nell'indice di
/lib e può leggere ed eseguire qualunque lima negli indici di /bin e
di /sbin. Nella lima di configurazione qui sotto, la prima
parola in ogni linea di istruzione è il nome del modulo e le altre
parole sono le discussioni passate ai moduli ("#" comincia un
commento).
# modulo di base di base
# definisca il putenv IFS="\t\n"
PATH=/sbin:/bin:/usr/bin TZ=PST8PDT di variabili di ambiente di sotto
processo
# neghi l'accesso a tutto a meno che le lime sotto
il percorso di /usr neghino colto, scrivono * il percorso concede
indicato, scrive /usr/* # permettono che il sotto processo legga le
lime negli indici delle biblioteche # avuto bisogno di per il percorso
dinamico di caricamento concedono leggono /lib/* /usr/lib/*
/usr/local/lib/* # avuto bisogno di in modo da il bambino può
eseguire i programmi il percorso permette indicato, il exec /sbin/*
/bin/* /usr/bin/*
Ogni modulo costringe le chiamate del sistema.
La struttura utilizza i moduli per sviluppare una lista
collegata per ogni chiamata controllata del sistema. La lista
definisce le azioni permesse e respinte. Una volta che questa
lista è stata costruita, la struttura di Janus esegue il programma im
modo tale che tutte le chiamate controllate del sistema sono bloccate.
Quando il programma esegue una chiamata controllata del
sistema, le prese di programma e la struttura di Janus è invocata.
Ha accesso alle discussioni fornite alla chiamata dello sysem.
Convalida che la chiamata del sistema, con questi parametri
specifici, è permessa. Se la chiamata del sistema non è
permessa, la struttura regola l'ambiente del bambino in modo che la
chiamata del sistema sembri venire a mancare. Se la chiamata del
sistema è permessa, la struttura restituisce il controllo al bambino,
che a sua volta passa il controllo al nocciolo. A ritorno, il
controllo va alla struttura, che aggiorna tutto l'interno
dichiara e ritorni i risultati al bambino.
Un uso di esempio sarebbe nella posta del MIME della
lettura. Uno potrebbe regolare il programma della lettura della
posta per passare il controllo ad un motore dell'esposizione del
postscript. Alcuni tali motori hanno un meccanismo per
l'esecuzione degli ordini system-level inclusi nella lima del
postscript. Quindi, un attacker ha potuto mettere un ordine di
omissione della lima nella lima del postscript. Il destinatario
farebbe funzionare il motore dell'esposizione per leggere la lima ed
alcuna di lei lime sarebbe cancellata. Tuttavia, l'utente (o
coordinatore di sistema) può installare la lima di configurazione di
Janus respinge l'esecuzione di tutti i subprograms. Allora
l'ordine incluso sarà rilevato (sulla chiamata del sistema per
eseguirla) e sarà rifiutato. |
Come un video virtuale della macchina, un sandbox fa della
base di calcolo di fiducia. Se il sandbox viene a mancare,
assicura meno protezione che si crede per fornire. Quindi,
accertare che il sandbox effettui correttamente una politica voluta di
sicurezza è critico alla sicurezza del sistema.
ciò è un articolo aggiunto da Fred Foster