Isolação
Processos do isolate dos sistemas em duas maneiras.
No primeiro, o processo é apresentado com um ambiente que
pareça ser um computador que funciona somente que processo ou aqueles
processos a ser isolados. No segundo, um ambiente está
fornecido em que as ações process estão analisadas para determinar
se escaparem a informação. O primeiro tipo de ambiente impedem
que o processo alcance o sistema computatorizado subjacente e todos os
processos ou os recursos que não são parte desse ambiente. O
segundo tipo de ambiente não emula um computador. Altera
meramente a relação entre o computador existente e o process(es).
Máquinas Virtuais
O primeiro tipo de ambiente é chamado uma máquina
virtual.
Uma máquina virtual é um programa que
simule a ferragem do sistema computatorizado de a (possivelmente
abstrato).
Uma máquina virtual usa um sistema operando-se especial
chamado um monitor virtual da máquina fornecer uma máquina virtual
em que os sistemas se operando convencionais podem funcionar
A vantagem preliminar de uma máquina virtual é
aquela sistemas operando-se existentes não necessita ser modificada.
Funcionam no monitor virtual da máquina. O monitor
virtual da máquina reforça a política desejada da segurança.
Isto é transparente ao usuário. O monitor virtual da
máquina funciona como uma semente da segurança.
Nos termos da política, o monitor virtual da máquina
trata dos assuntos (assuntos que são as máquinas virtuais).
Mesmo se uma máquina virtual está funcionando centenas dos
processos, o monitor virtual da máquina sabe somente sobre a máquina
virtual. Assim, pode aplicar verificações da segurança a seus
assuntos, e aqueles controles aplicam-se aos processos que aqueles
assuntos estão funcionando. Isto satisf à régua do
confinamento transitive.
EXEMPLO: O KVM/370 era uma versão
segurança-realçada do monitor virtual da máquina da IBM VM/370.
Este sistema forneceu máquinas virtuais para seus usuários, e
um de seus objetivos era impedir comunicações entre máquinas
virtuais de classes diferentes da segurança, assim que os usuários
em classes diferentes da segurança poderiam usar o sistema ao mesmo
tempo. Como VM/370, forneceu máquinas virtuais com os minidisks
e permitiu que os sistemas compartilhassem de algumas áreas de disco.
Ao contrário de VM/370, usou uma política da segurança mediar
o acesso às áreas compartilhadas do disco para limitar
comunicações entre sistemas. |
EXEMPLO: Karger e os colegas na Digital Equipment
Corporation Desenvolveram um monitor virtual da máquina (VMM) para o
DEC VAX. O monitor é uma semente da segurança e pode funcionar
o VMS ou o sistema operando-se de Ultrix. Os funcionamentos VMM
na ferragem nativa de VAX e são invocados sempre que a máquina
virtual executa uma instrução privilegiada. Sua estrutura é
típica das máquinas virtuais projetadas fornecer a segurança.
O VAX tem quatro níveis do privilégio: usuário,
supervisor, executivo, e modalidades da semente. A fim fornecer
uma máquina virtual compatível, as máquinas virtuais devem também
ter quatro níveis do privilégio. Entretanto, a modalidade da
semente permite que um processo alcance instruções privilegiadas na
ferragem de VAX diretamente. O somente o VMM são permitidos
fazer este. As máquinas virtuais não podem alcançar a
modalidade da semente. A solução deve fornecer modalidades
virtuais. Estas modalidades são usuário do VM (que
correspondem à modalidade do usuário), de supervisor do VM
modalidade, e executivo do VM e de semente do VM as modalidades (ambas
a modalidade realmente executiva).
Os assuntos VMM são usuários e máquinas virtuais.
VMM têm um sistema de lima básica, lisa para seu próprio uso
e divisórias o espaço de disco restante entre as máquinas virtuais.
Aquelas máquinas podem usar toda a estrutura que de lima
desejarem, e cada máquina virtual tem seu próprio jogo de sistemas
de lima. Cada assunto e objeto mandam uma etiqueta multilevel da
segurança e da integridade, e os níveis da segurança e da
integridade dar forma a uma classe do acesso. Duas entidades
têm a mesma classe do acesso se e somente se sua segurança e
etiquetas da integridade for a mesma, e uma entidade dominar outra se
e somente se as classes da segurança e da integridade dominarem.
Um componente integral do VMM é um mecanismo examinando.
Este mecanismo grava ações para uma análise mais atrasada. |
Porque as máquinas virtuais fornecem a mesma relação
para uma comunicação com outras máquinas virtuais que os
computadores fornecem, aquelas canaletas de uma comunicação podem
ser controladas ou severed. Como mencionado mais cedo, se um
único anfitrião funcionar máquinas virtuais múltiplas, aquelas
máquinas virtuais compartilham dos recursos físicos do anfitrião em
que funcionam. (podem também compartilhar de recursos lógicos,
dependendo de como a semente virtualizing é executada.) Isto
fornece uma terra fértil para as canaletas secretas.
Sandboxes
Um sandbox do playground fornece um ambiente
seguro para crianças para permanecer dentro. Se as crianças
deixarem o sandbox sem supervisão, podem fazer coisas que não são
supostas fazer. O sandbox do computador é similar.
Fornece um ambiente seguro para programas para executar dentro.
Se os programas "sairem" do sandbox, podem fazer as coisas que
não são supostos para fazer. Ambos os tipos de sandboxes
restringem as ações de seus occupants.
Um sandbox é um ambiente em
que as ações de um processo são concordar restrito a uma política
da segurança.
Os sistemas podem reforçar limitações em duas maneiras.
Primeiramente, o sandbox pode limitar o ambiente da execução
como necessitado. Isto é feito geralmente adicionando
mecanismos segurança-verificando do acréscimo às bibliotecas ou à
semente. O programa próprio não é modificado. Para o
exemplo, a semente VMM discutida mais cedo é um sandbox porque
confina os acessos dos sistemas se operando (unmodified) que funcionam
nela. A máquina virtual de Java é um sandbox porque seu
gerente da segurança limita o acesso de programas downloaded aos
recursos de sistema como ditados por uma política da segurança.
EXEMPLO: A semente operacional do guarda-fogo de
Sidewinder usa o tipo enforcement confinar processos. Este é um
exemplo de um sandbox construído em uma semente, e tem a propriedade
que o sandbox está definido pelo vendedor. Não se pretende ser
alterado no local. Tal projeto é típico para um sistema
turnkey, que seja o uso pretendido para um guarda-fogo de Sidewinder.
A máquina virtual de Java, em que downloaded applet é
executada, é um outro exemplo de um sandbox. O sandbox
restringe o jogo das limas que o applet pode alcançar e dos
anfitriões a que o applet pode conectar. Outros mecanismos da
segurança realçam o sandbox.
O DTE, o tipo mecanismo de enforcement para DTEL, é um
exemplo em que as modificações da semente permitem administradores
de sistema de configurarar seus próprios sandboxes. A semente
reforça os confinamentes. |
O segundo método do enforcement deve modificar o programa
(ou o processo) a ser executados. Os debuggers dinâmicos e
alguns profilers usam esta técnica adicionando limites de faturamento
ao código e, quando a armadilha ocorre, analisando o estado do
processo running. Um variant, sabido como a isolação de falha
do software, adiciona as instruções que executam verificações do
acesso de memória ou outras verificam enquanto o programa funciona,
assim que toda a tentativa de violate a política da segurança causa
um erro.
EXEMPLO: Janus executa um sandbox. É um
ambiente da execução em que as chamadas do sistema são prendidas e
verificadas. Os usuários executam-no para restringir os objetos
e as modalidades do acesso do untrusted o programa. Janus
consiste em uma estrutura, que faça verificar runtime, e nos
módulos, que determinam que acessos devem ser reservados.
Janus lê primeiramente uma lima da configuração.
Esta lima instrui-o para carregar determinados módulos.
Junto com o módulo a identificação é uma lista dos
confinamentes. A seguinte lima da configuração do exemplo
define o IFS da variável de ambiente para a criança e restringe o
acesso da criança ao sistema de lima. A criança não pode
alcançar nenhumas limas exceto aquelas que são nomeadas abaixo.
A criança pode ler ou para escrever a toda a lima no sistema de
lima de /usr à exceção daquelas no /usr/lib e os diretórios de
/usr/local/lib (que são lidos somente) e em /usr/bin (lido e para
executar). A criança pode ler toda a lima no diretório de /lib
e pode ler e executar qualquer lima nos diretórios de /sbin e de
/bin. Na lima da configuração abaixo, a primeira palavra em
cada linha de instrução é o nome do módulo e as outras palavras
são os argumentos passados aos módulos ("#" começa um comentário).
# módulo básico básico
# defina o putenv IFS="\t\n"
PATH=/sbin:/bin:/usr/bin TZ=PST8PDT das variáveis de ambiente do
subprocess
# negue o acesso a tudo a não ser que as limas
sob o trajeto de /usr neguem lido, escrevem * o trajeto reserva lido,
escreve /usr/* # permitem que o subprocess leia limas em diretórios
de biblioteca # necessitado para o trajeto dinâmico do carregamento
reservam lêem /lib/* /usr/lib/* /usr/local/lib/* # necessitado assim
que a criança pode executar programas que o trajeto permite lido,
exec /sbin/* /bin/* /usr/bin/*
Cada módulo confina chamadas do sistema. A
estrutura usa os módulos construir uma lista ligada para cada chamada
monitorada do sistema. A lista define ações permitidas e
disallowed. Uma vez que esta lista foi construída, a estrutura
de Janus invoca o programa de tal maneira que todas as chamadas
monitoradas do sistema são prendidas.
Quando o programa executa uma chamada monitorada do
sistema, as armadilhas do programa e a estrutura de Janus estão
invocadas. Tem o acesso aos argumentos fornecidos à chamada do
sysem. Valida que a chamada do sistema, com estes parâmetros
específicos, está permitida. Se a chamada do sistema não for
permitida, a estrutura ajusta o ambiente da criança de modo que a
chamada do sistema pareça ter falhado. Se a chamada do sistema
for permitida, a estrutura retorna o controle à criança, que passa
por sua vez o controle à semente. No retorno, o controle vai à
estrutura, que atualiza todo o estado interno e retorna os resultados
à criança.
Um uso do exemplo estaria no correio do MIME da leitura.
Um poderia ter ajustado o programa da leitura do correio para
passar o controle a um motor da exposição do postscript.
Alguns tais motores têm um mecanismo para executar os comandos
system-level encaixados na lima do postscript. Daqui, um
atacante podia pôr um comando do apagamento da lima na lima do
postscript. O receptor funcionaria o motor da exposição para
ler a lima, e alguma dela limas seria suprimida. Entretanto, o
usuário (ou o administrador de sistema) podem ajustar acima a lima da
configuração de Janus disallow a execução de todos os subprograms.
Então o comando encaixado será detectado (na chamada do
sistema para o executar) e rejeitado. |
Como um monitor virtual da máquina, um sandbox dá forma
à parte da base computando confiada. Se o sandbox falhar,
fornece menos proteção do que se acredita para fornecer.
Daqui, assegurar de que o sandbox execute corretamente uma
política desejada da segurança é crítico à segurança do sistema.
este é um artigo adicionado por Fred Promover