BRPI0501171B1 - Method in a computing device to enforce a security policy - Google Patents
Method in a computing device to enforce a security policy Download PDFInfo
- Publication number
- BRPI0501171B1 BRPI0501171B1 BRPI0501171B1 BR PI0501171 B1 BRPI0501171 B1 BR PI0501171B1 BR PI0501171 B1 BRPI0501171 B1 BR PI0501171B1
- Authority
- BR
- Brazil
- Prior art keywords
- security
- computing device
- instruction
- virtual machine
- block
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 24
- 230000009471 action Effects 0.000 claims description 25
- 238000004886 process control Methods 0.000 claims description 23
- 238000012545 processing Methods 0.000 claims description 22
- 230000007246 mechanism Effects 0.000 description 36
- 238000012360 testing method Methods 0.000 description 20
- 230000006870 function Effects 0.000 description 16
- 238000010586 diagram Methods 0.000 description 13
- 230000008569 process Effects 0.000 description 6
- 230000006399 behavior Effects 0.000 description 5
- 230000000903 blocking effect Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
Description
Relatório Descritivo da Patente de Invenção para "MÉTODO EM UM DISPOSITIVO DE COMPUTAÇÃO PARA FAZER CUMPRIR UMA POLÍTICA DE SEGURANÇA".
CAMPO DA INVENÇÃO
[001] A tecnologia descrita é relacionada geralmente para reforçar uma política de segurança para bloquear um comportamento indesejado de um programa de computador.
FUNDAMENTOS DA INVENÇÃO
[002] Sistemas de software, tais como sistemas operacionais e sistemas de arquivo, fornecem interfaces de programação de aplicação através dos quais programas de aplicação podem acessar os serviços dos sistemas de software. Uma interface de programa de aplicação pode fornecem funções com parâmetros para executar um serviço específico. Por exemplo, um sistema de arquivo pode ter uma função (também referida como um "chamado de sistema") para criar um arquivo. Essa função pode ter parâmetros que especificam uma localização de arquivo, um nome de arquivo, tamanho de arquivo, e assim por diante do arquivo a ser criado. Quando um programa de aplicação invoca uma função, ele transmite parâmetros atuais correspondentes aos parâmetros formais definidos pela função. A função pode executar certas verificações nos parâmetros atuais para assegurar que eles sâo válidos. Por exemplo, a função de arquivo criar pode assegurar que o tipo de arquivo especificado é válido. Se um parâmetro não é válido, então a função retoma um erro ao programa de aplicação.
[003] Sistemas de software podem ser extremamente complexos por uma variedade de razões. Um sistema de software pode tentar ser compatível para trás com todas as versões anteriores desse sistema de software. Em tal caso, o sistema de software pode precisar suportar todas as funções da interface de programa de aplicação das versões anteriores. Desde que novas funções são tipicamente adicionadas a cada versão, o número de funções pode ser muito amplo e suas interações complexas. Alguns sistemas de software podem também incluir componentes de software desenvolvidos por divisões diferentes da mesma companhia ou por diferentes companhias. As interações desses componentes podem ser também muito complexas.
[004] Tornou-se progressiva mente importante para os sistemas de software assegurar que suas interfaces de programação de aplicação não são vulneráveis a ou uso impróprio negligente ou ataque intencional. Uma vulnerabilidade de um sistema de software pode ser através dos parâmetros de sua interface de programação de aplicação. Quando as funções de versões anteriores são combinadas com aquelas das novas versões, e quando componentes de diferentes produtores são integrados, a validação de parâmetro existente executada pelas funções pode não ser suficiente para assegurar o comportamento correto das funções. Por exemplo, uma interface de programação de aplicação de um sistema de arquivo desenvolvida por uma companhia pode ser integrada a um servidor de arquivo desenvolvido por uma outra companhia. O parâmetro de tamanho de arquivo máximo da interface de programação de aplicação pode ser maior do que aquele suportado pelo servidor de arquivo. Em tal caso, um tamanho de arquivo que é aceitável à interface de programação de aplicação pode causar problemas ao servidor de arquivo. Como um outro exemplo, um administrador de sistema pode querer limitar o tamanho máximo de arquivo mesmo mais adiante, mas o administrador de sistema pode não ter dispositivos disponíveis para assegurar essa limitação.
[005] Seria desejável ter um mecanismo para reforçar políticas de segurança e, em particular, políticas de segurança que especificam condições válidas para parâmetros de interfaces de programação de aplicação. SUMÁRIO DA INVENÇÃO
[006] Um método e sistema para reforçar uma política de segurança são fornecidos por um mecanismo virtual de segurança. O mecanismo vir- tual de segurança inclui um mecanismo processador, um armazenador de instrução, um armazenador de dados, e um indicador de instrução. O mecanismo virtual de segurança executa um programa de segurança especificado usando uma linguagem intermediária que é compilada a partir de uma representação de linguagem de alto nível da política de segurança. O programa de segurança é carregado dentro do armazenador de instrução para execução. Quando um evento de aplicação de segurança ocorre, tal como a convocação de uma função de uma interface de programação de aplicação, dados do evento de reforço de segurança são armazenados no armazenador de dados e o mecanismo de processador começa a mandar e executar as instruções para o programa de segurança do armazenador de instrução. As instruções especificam ações a serem tomadas para reforçar a política de segurança baseada nos dados do evento de reforço de segurança.
BREVE DESCRICÃO DOS DESENHOS
[007] A Figura 1 é um diagrama de bloco que ilustra componentes do sistema de segurança em uma modalidade.
[008] A Figura 2 é um diagrama de bloco que ilustra a estrutura de dados do armazenador de dados em uma modalidade.
[009] A Figura 3 é um diagrama que ilustra o esquema de uma instrução do mecanismo virtual de segurança em uma modalidade.
[0010] A Figura 4 é um diagrama de fluxo que ilustra o processamento do componente de carregar programa em uma modalidade, [0011] A Figura 5 é um diagrama de fluxo que ilustra o processamento do componente de interceptar chamada de sistema em uma modalidade.
[0012] A Figura 6 é um diagrama de fluxo que ilustra o processamento do mecanismo de processador do mecanismo virtual de segurança em uma modalidade.
[0013] A Figura 7 é um diagrama de fluxo que ilustra o processamento do componente de referência do mecanismo virtual de segurança em uma modalidade.
[0014] A Figura 8 é um diagrama de fluxo que ilustra o processamento do componente de avaliar teste do mecanismo virtual de segurança em uma modalidade.
[0015] A Fígura 9 é um diagrama de fluxo que ilustra o processamento do componente de teste do mecanismo virtual de segurança em uma modalidade.
[0016] A Figura 10 é um diagrama de fluxo que ilustra o processamento do componente de verificação de igualdade de série do mecanismo virtual de segurança em uma modalidade.
[0017] A Figura 11 é um diagrama de fluxo que ilustra o processamento do componente de não testar do mecanismo virtual de segurança em uma modalidade.
DESCRICÃO DETALHADA DA INVENÇÃO
[0018] Um método e sistema em um sistema de computador para reforçar uma política de segurança codificada em um conjunto de instrução de um mecanismo virtual de segurança são fornecidos. Em uma modalidade, um sistema de segurança fornece um mecanismo virtual de segurança que executa programas de segurança expressados no conjunto de instrução (por exemplo, linguagem intermediária) do mecanismo virtual de segurança. O sistema de segurança pode incluir um compilador que recebe uma política de segurança representada em uma linguagem de alto nível e gera um programa de segurança que é uma representação da política de segurança na linguagem intermediária do mecanismo virtual de segurança. O sistema de segurança armazena o programa de segurança em um armazenador de instrução do mecanismo virtual de segurança. Quando um evento de reforço de segurança ocorre (por exemplo, uma ação que precisa ser verificada para assegurar que ela obedece à política de segurança), o mecanismo virtual de segurança executa as instruções para o programa de segurança a partir de seu armazenador de instrução usando dados do evento de reforço de segurança para assegurar a política de segurança. Se o evento de reforço de segurança indica que uma tentativa está sendo feita para executar um comportamento indesejado (por exemplo, uma ação que pode explorar uma vulnerabilidade de um sistema operacional), então o programa de segurança pode bloquear a tentativa. Em uma modalidade, o mecanismo virtual de segurança do sistema de segurança executa em modo de núcleo central (“kernel”) de um sistema operacional para identificar e impedir tentativas por aplicações e sistemas externos para executar um comportamento indesejado para o sistema de computador no qual o sistema de segurança está executando.
[0019] Em uma modalidade, o sistema de segurança identifica quando parâmetros de um chamado de sistema emitido por uma aplicação a um serviço de sistema (por exemplo, sistema de arquivo e sistema de gerenciamento de memória) podem levar a um comportamento indesejado. A política de segurança contém regras que cada uma especifica uma condição baseada em parâmetros do chamado de sistema e uma ação para aceitá-lo quando a condição é satisfeita. Por exemplo, a condição de uma regra pode ser satisfeita quando um chamado de sistema de criar arquivo é emitido com um parâmetro especificando um tamanho de arquivo maior do que 1GB. A ação associada a essa regra pode ser para bloquear a criação do arquivo. A linguagem de alto nível pode ser uma linguagem baseada em XML, e cada regra pode ser identificada por regra, condição, e caracteres de ação. Quando as regras da política de segurança representada na linguagem de alto nível são compiladas, cada regra é traduzida em instruções da linguagem intermediária para formar o programa de segurança. Por exemplo, uma regra pode ser traduzida em uma série de instruções. Uma que compare o chamado de sistema a um valor indicando que a função é “criar arquivo”, uma que compare um parâmetro de tamanho de arquivo a uma constante com o valor de 1GB, e uma que emite uma indicação para bloquear o chamado de sistema.
[0020] Em uma modalidade, o mecanismo virtual de segurança inclui um mecanismo processador, um armazenador de instrução, um indicador de instrução, e um armazenador de dados. Quando inicializando o mecanismo virtual de segurança para reforçar a política de segurança, o sistema de segurança carrega o armazenador de instrução com um programa de segurança que implementa a política de segurança. O sistema de segurança também carrega dados do programa de segurança no armazenador de dados. Quando um chamado de sistema é recebido, o sistema de segurança armazena os parâmetros do chamado de sistema (incluindo um valor que identifica o chamado de sistema) no armazenador de dados. O sistema de segurança pode também armazenar informação de controle de processo do processo que emite o chamado de sistema no armazenador de dados. O sistema de segurança inicializa o indicador de instrução para apontar para uma instrução iniciar do programa de segurança. O mecanismo processador inicia o programa de segurança através de mandar e executar a instrução iniciar apontado pelo indicador de instrução. Cada instrução que é executada modifica o indicador de instrução para apontar para a próxima instrução a ser executada. As instruções se referem aos dados do armazenador de dados para reforçar a política de segurança. A execução do programa de segurança gera um conjunto de ação de saída que especifica as ações (por exemplo, bloquear chamado de sistema) que são para serem tomadas para reforçar a política de segurança.
[0021] Em uma modalidade, a política de segurança pode compreender uma sub-política para cada chamado de sistema cujos parâmetros estão para serem verificados. O sistema de segurança pode compilar cada sub-política em um subprograma de segurança separado que pode ser carregado no armazenador de instrução independentemente dos outros subprogramas de segurança. Cada sub-política pode corresponder ao reforço de segurança para um único chamado de sistema. O sistema de segurança pode manter um mapeamento de cada chamado de sistema para um indicador de instrução iniciar no armazenador de instrução e um indicador de instrução iniciar para os dados no armazenador de dados do correspondente subprograma de segurança. Quando reforçando a política de segurança em um chamado de sistema, o sistema de segurança inicializa o indicador de instrução ao correspondente indicador de instrução iniciar e o indicador de dados ao correspondente indicador de dados iniciar. Os subprogramas de segurança podem usar técnicas de referência de dados e instrução que são relativas ao indicador de instrução e o indicador de dados. Desse modo, as instruções e dados de cada subprograma de segurança são relocáveis. Na descrição seguinte, um único programa de segurança identifica todos os chamados de sistema através de decodificar cada chamado de sistema e pulando para a localização apropriada da instrução para processar esse chamado de sistema. Os versados na técnica apreciarão que esse sistema descrito pode ser adaptado para suportar um subprograma para cada chamado de sistema.
[0022] A Figura 1 é um diagrama de bloco que ilustra componentes do sistema de segurança em uma modalidade. O sistema de segurança inclui alguns componentes que executam no modo de usuário 100 e outros que executam no modo de núcleo central 120. Um compilador de política 102 é um componente que executa no modo de usuário para compilar políticas de segurança de um armazenador de política 103 em programas de segurança que são executáveis pelo mecanismo virtual de segurança. Os componentes de modo de núcleo central incluem um componente de interceptar chamado de sistema 121, um componente de carregar programa 122, e um mecanismo virtual de segurança 125. O mecanismo virtual de segurança inclui um indicador de instrução 126, um mecanismo processador 127, um armazenador de instrução 128, e um armazenador de dados 129. O componente de carregar programa carrega programas de segurança compilados pelo compilador de política no armazenador de instrução do mecanismo virtual de segurança, armazena dados de programa no arma- zenador de dados, e ajusta o indicador de instrução iniciar. O componente de interceptar chamado de sistema intercepta chamados de sistema emitidos pelos programas de aplicação 101 e armazena os parâmetros para cada chamado de sistema e informação de controle de processo dos programas de aplicação no armazenador de dados. Depois de interceptar um chamado de sistema e armazenar seus parâmetros, o componente de interceptar chamado de sistema instrui o mecanismo processador para executar o programa de segurança do armazenador de instrução. O mecanismo processador executa o programa de segurança através de mandar instruções apontadas pelo indicador de instrução e executando as operações especificadas pelas instruções. As operações incluem ações de armazenamento para serem tomadas para reforçar a política de segurança em um conjunto de ações de saída do armazenador de dados. Mediante a finalização da execução do programa de segurança, o componente de interceptar chamado de sistema executa as ações do conjunto de ações de saída.
[0023] O dispositivo de computação no qual o sistema de segurança é implementado pode incluir uma unidade de processamento central, memória, dispositivos de entrada (por exemplo, teclado e dispositivos de apontamento), dispositivos de saída (por exemplo, dispositivos de exibição), e dispositivos de armazenamento (por exemplo, acionadores de disco). A memória e os dispositivos de armazenamento são meios legíveis por computador que podem conter instruções que implementam o sistema de segurança. Em adição, as estruturas de dados e estruturas de mensagem podem ser armazenadas ou transmitidas via um meio de transmissão de dados, tal como um sinal em uma conexão de comunicações. Várias conexões de comunicações podem ser usadas, tal como a Internet, uma rede de área local, uma rede de área ampla, ou uma conexão de telefone automático ponto a ponto.
[0024] A Figura 1 ilustra um exemplo de um ambiente operacional adequado no qual o sistema de segurança pode ser implementado. Esse ambiente operacional é somente um exemplo de um ambiente operacional adequado e não pretende sugerir qualquer limitação como ao escopo do uso ou funcionalidade do sistema de segurança. Outros sistemas de computação bem conhecidos, e configurações que podem ser adequados ao uso incluem computadores pessoais, computadores servidores, dispositivos laptop ou portáteis, sistemas multiprocessadores, sistemas baseados em microprocessadores, eletrônicos de consumo programável, PCs de rede, minicomputadores, computadores de quadro principal, ambientes de computação distribuídos que incluem quaisquer dos sistemas ou dispositivos acima, e seus similares.
[0025] O sistema de segurança pode ser descrito no contexto geral de instruções executáveis por computador, tais como módulos de programa, executadas por um ou mais computadores ou outros dispositivos. Geralmente, módulos de programas incluem rotinas, programas, objetos, componentes, estruturas de dados, e assim por diante que executam tarefas particulares ou implementam tipos de dados abstratos particulares. Tipicamente, a funcionalidade dos módulos de programas pode ser combinada ou distribuída como desejado em várias modalidades.
[0026] A Figura 2 é um diagrama de bloco que ilustra a estrutura de dados do armazenador de dados em uma modalidade. O armazenador de dados inclui uma estrutura de dados literais 201, uma estrutura de dados dinâmicos 211, uma estrutura de dados de parâmetros de chamado de sistema 221, uma estrutura de dados para bloquear o controle de processo 231, e um conjunto de saída de ação 241. A estrutura literal de dados inclui uma tabela de dados literais 202 e um armazenador de dados literais 203. A tabela de dados literais contém entradas de tamanho fixo que se referem aos dados literais armazenados no armazenador de dados literais. “Dados literais” se referem a dados do programa de segurança que são constantes para a vida da política de segurança correntemente carregada.
Os dados literais podem somente ser mudados carregando uma nova política de segurança. A estrutura de dados dinâmicos tem uma organização similar à estrutura de dados literais, mas ela armazena dados “dinâmicos” ao invés de dados “literais”. “Dados dinâmicos” se referem a dados do programa de segurança que podem ser modificados sem carregar uma nova política de segurança. Por exemplo, dados dinâmicos podem incluir os nomes das aplicações que estão isentas da política de segurança. Cada entrada das tabelas de dados literais e dinâmicos aponta para dados no correspondente armazenador de dados. Os dados dos armazenadores de dados literais e dinâmicos são representados em um formato autodescrito. Esse formato inclui tipos de dados e informação de tamanho de dados. Em uma modalidade, o mecanismo virtual de segurança suporta tipos de dados Booleanos, inteiros, seqüências, e binário bruto (também referido como “objeto binário longo” (“blob”)) em adição a arranjos de inteiros, seqüências, e blobs. As instruções fazem referência aos dados literais e dinâmicos usando índices nas tabelas literais e dinâmicas. Quando executando uma instrução, o mecanismo virtual de segurança dereferencia o índice para a tabela literal e dinâmica através de encontrar a entrada indicada e usando seu valor como um indicador do início do item de dados no armazenador literal ou dinâmico. Desde que os dados são autodescritos, o tipo e tamanho de dados podem ser determinados. A estrutura de dados de parâmetros do chamado de sistema inclui uma tabela de seqüência 222, uma tabela de inteiros 223, e uma tabela de binários brutos 224. Os parâmetros do chamado de sistema são armazenados nessas tabelas de acordo com seu tipo de dados. A estrutura de dados para bloquear o controle de processo é uma tabela que contém uma entrada para cada parte da informação de controle de processo que está disponível ao mecanismo virtual de segurança. Em uma modalidade, a informação de controle de processo inclui um identificador de aplicação e um identificador de execução. O conjunto de ações de saída pode ser um conjunto de sinalizadores de ação que é gerado durante a execução do programa de segurança e que indica ações a serem executadas para reforçar a política de segurança no chamado de sistema. As ações podem incluir bloquear o chamado de sistema e notificar um usuário.
[0027] A Figura 3 é um diagrama que ilustra o esquema de uma instrução do mecanismo virtual de segurança em uma modalidade. Cada instrução inclui um campo de operação 310, um campo de parâmetro 1 320, um campo de seção verdadeira 330, um campo de seção falsa 340, e um campo de parâmetro 2 350. O campo de parâmetro 1 se refere a dados associados ao chamado de sistema (por exemplo, armazenados na estrutura de dados de chamado de sistema ou na estrutura de dados de controle de processo), e o campo de parâmetro 2 se refere a dados associados ao programa de segurança (por exemplo, dados imediatos ou dados armazenados nas estruturas de dados literais ou dinâmicos). O campo de operação inclui um descritor de parâmetro 2 311 (“m”) e um código de operação 312. O descritor de parâmetro 2 especifica como interpretar o parâmetro 2. O parâmetro 2 pode conter dados imediatos, uma referência a dados dinâmicos, ou uma referência a dados literais. Quando uma referência é especificada, o mecanismo virtual de segurança diferencia o parâmetro 2 antes de executar a operação da instrução. O código de operação identifica a operação da instrução como definida abaixo, em mais detalhes. O campo de parâmetro 1 contém um descritor de parâmetro 1 321 (“s”) e um índice 322. O descritor de parâmetro 1 indica se o parâmetro 1 se refere a um parâmetro de chamado de sistema ou à informação de controle de processo. Se o descritor de parâmetro 1 indica um parâmetro de chamado de sistema, então os bits de ordem alta do índice especificam se a tabela de seqüência, a tabela de inteiros, ou a tabela de binários brutos da estrutura de dados de parâmetros do chamado de sistema estão para ser indicados, e os bits de ordem baixa indicam a entrada indicada da tabela. Se o descritor de parâmetro 1 indica informação de controle de pro- cesso, então o índice indica a informação de controle de processo especificada. O campo de seção verdadeira e o campo de seção falsa contêm deslocamentos que especificam a próxima instrução a executar dependendo se o código de condição dessa instrução avalia em verdadeiro ou falso. O deslocamento é adicionado ao indicador de instrução corrente para apontar para a próxima instrução a ser executada.
[0028] As tabelas 1 e 2 ilustram as instruções do mecanismo virtual de segurança em uma modalidade. As instruções podem ser classificadas como aquelas que executam um teste em dados e aquelas que não o fazem. A tabela 1 ilustra as instruções de não testar. TABELA 1 [0029] A tabela 2 ilustra as instruções de testar. A instrução padrão pode definir uma expressão regular para comparar duas seqüências, que é útil para comparações de tipo símbolo de nomes de arquivo {por exemplo, “*.DAT”). TABELA 2 [0030] A Figura 4 é um diagrama de fluxo que ilustra o processamento do componente de carregar programa em uma modalidade. O componente é convocado quando um programa de segurança está para ser carregado em um mecanismo virtual de segurança. Um programa de segurança contém instruções virtuais, um bloco de dados literais, e um bloco de dados dinâmicos. O bloco de dados literais inclui a informação da tabela de dados literais seguida pela informação do armazenador de dados literais. O componente copia o bloco de dados literais para o armazenador de dados literais iniciando em uma localização de início. O componente então adiciona essa localização de base a cada deslocamento na tabela de dados literais para converter os deslocamentos dos indicadores. O componente processa o bloco de dados dinâmicos de uma maneira similar. As instruções virtuais contêm deslocamentos que são relativos ao início do armazenador literal e do armazenador dinâmico. No bloco 401, o componente identifica uma localização de início no armazenador literal e copia o bloco de dados literais do programa de segurança iniciando nessa localização de início. No bloco 402, o componente adiciona a localização de início a cada deslocamento da tabela de dados literais para converter os deslocamentos do programa de segurança em indicadores. No bloco 403, o componente identifica uma localização de início no armazenador dinâmico e copia o bloco de dados dinâmicos do programa de segurança iniciando nessa localização de início. No bloco 404, o componente adiciona a localização de início a cada deslocamento da tabela de dados dinâmicos para converter os deslocamentos do programa de segurança em indicadores. No bloco 405, o componente copia as instruções virtuais do programa de segurança no armazenador de instrução e então finaliza.
[0031] A Figura 5 é um diagrama de fluxo que ilustra o processamento do componente de interceptar chamado de sistema em uma modalidade. O componente é convocado quando um chamado de sistema é interceptado. O componente inicializa a estrutura de dados de parâmetro de chamado de sistema e a estrutura de dados de controle de processo e então inicia o mecanismo virtual de segurança. O componente pode também fornecer um indicador de instrução da instrução para iniciar a execução de processar o chamado de sistema. Quando subprogramas de segurança são usados, o componente pode ter um mapeamento de chamados de sistema para os indicadores de instrução iniciar e para iniciar os indicadores de dados nas estruturas de dados literais e dinâmicos para esse chamado de sistema. O componente de carregar programa pode ser chamado múltiplas vezes para carregar diferentes subprogramas do programa de segurança para processar diferentes chamados de sistema. Desde que as instruções e dados são baseados em deslocamento, as instruções e dados podem ser armazenados nas próximas localizações disponíveis do armazenador de instrução e estruturas de dados. No bloco 501, o componente ajusta o indicador de instrução corrente ao indicador de instrução iniciar do programa de segurança e zera o conjunto de saída de ação a um estado inicial (por exemplo, vazio). Nos blocos 502-504, o componente enlaça o armazenamento dos parâmetros do chamado de sistema na estrutura de dados de parâmetro de chamado de sistema. No bloco 502, o componente seleciona o próximo parâmetro do chamado de sistema. No bloco de decisão 503, se todos os parâmetros do chamado de sistema já foram selecionados, então o componente continua no bloco 505, de outra forma o componente continua no bloco 504. No bloco 504, o componente armazena o parâmetro selecionado na tabela apropriada da estrutura de dados de parâmetro de chamado de sistema e então volta para o bloco 502 para selecionar o próximo parâmetro do chamado de sistema. Nos blocos 505-507, o componente enlaça o armazenamento de informação de controle de processo na estrutura de dados de controle do processo. No bloco 505, componente seleciona a próxima informação de controle de processo para o processo que instalou o chamado de sistema. No bloco de decisão 506, se toda a informação de controle de processo já foi selecionada, então o componente continua no bloco 508, de outra forma o componente continua no bloco 507. No bloco 507, o componente armazena a informação de controle do processo selecionada na estrutura de dados de controle de processo e então volta ao bloco 505 para selecionar a próxima informação de controle de processo. Alternativamente, ao invés de usar e inicializar uma estrutura de dados de controle de processo interno, o sistema de segurança pode encontrar informação de controle de processo diretamente a partir de um bloco de controle de processo quando precisa. Os versados na técnica apreciarão que um bloco de controle de processo é criado por um sistema operacional quando um processo é criado. No bloco 508, o componente inicia o mecanismo virtual de segurança para reforçar a política de segurança no chamado de sistema interceptado. Mediante a finalização da execução do programa de segurança pelo mecanismo virtual de segurança, o componente executa as ações do conjunto de saída de ação.
[0032] A Figura 6 é um diagrama de fluxo que ilustra o processamento do mecanismo processador do mecanismo virtual de segurança em uma modalidade. O mecanismo processador inicializa a estrutura de dados de parâmetro de chamado de sistema baseado no chamado de sistema interceptado, inicia o mecanismo virtual de segurança, e executa as ações do conjunto de ação de saída. Nos blocos 601-607, o mecanismo processador volta a carregar e executar as instruções do programa de segurança armazenadas no armazenador de instrução até que uma instrução de parar (“halt”) seja executada. Em uma modalidade, a política de segurança pode definir que, a qualquer hora que uma condição de uma regra é satisfeita, nenhuma outra regra é testada. No bloco 601, o mecanismo proces- sador trazido da instrução apontada pelo indicador de instrução corrente. No bloco 602, o mecanismo processador convoca um componente a dere-ferenciar o parâmetro 1 e o parâmetro 2. No bloco de decisão 603, se o código de operação da instrução é uma operação de testar, então o mecanismo processador continua no bloco 604. Se o código de operação da instrução é uma operação de não testar (exceto para uma operação de parar), então o mecanismo processador continua no bloco 608. Se o código de operação da instrução é uma operação de parar, então o mecanismo processador continua no bloco 609. No bloco 604, o mecanismo processador convoca o componente de avaliar teste para determinar se a operação de testar avalia em verdadeiro ou falso. O componente convocado ajusta um sinalizador de código de condição em verdadeiro ou falso. No bloco de decisão 605, se o código de condição é verdadeiro, então o mecanismo processador continua no bloco 607, de outra forma o mecanismo processador continua no bloco 606. No bloco 606, o mecanismo processador adiciona o deslocamento do campo de seção falso ao indicador de instrução corrente e então volta ao bloco 601 para mandar vir a próxima instrução. No bloco 607, o mecanismo processador adiciona o deslocamento do campo de seção verdadeiro ao indicador de instrução corrente e então volta ao bloco 601 para mandar vir a próxima instrução. No bloco 608, o mecanismo processador convoca o componente de não executar teste e então volta ao bloco 601 para mandar vir a próxima instrução. O componente de não executar teste executa a operação da instrução e ajusta o indicador de instrução corrente para apontar para a próxima instrução a ser executada. O componente de não executar teste adiciona o deslocamento da seção verdadeiro (ou parâmetro 2 no caso de uma instrução de pular (“jump”)) da instrução do indicador de instrução. No bloco 609, o componente executa a instrução de parar e então finaliza.
[0033] A Figura 7 é um diagrama de fluxo que ilustra o processamento do componente de dereferência do mecanismo virtual de segurança em uma modalidade. Esse componente dereferencia o parâmetro 1 e o parâmetro 2 da instrução enviada. Nos blocos 701-708, o componente dereferencia o parâmetro 1. No bloco de decisão 701, se o parâmetro 1 é um parâmetro de chamado de sistema como indicado pelo descritor de parâmetro 1, então o componente continua no bloco 703, de outra forma o componente continua no bloco 702. No bloco 702, o componente ajusta o parâmetro 1 dereferenciado à informação de controle de processo especificado pelo índice do parâmetro 1 e então continua no bloco 709. No bloco de decisão 703, se o índice do parâmetro 1 indica que o parâmetro de chamado de sistema é um inteiro, então o componente continua no bloco 704, de outra forma o componente continua no bloco 705. No bloco 704, o componente ajusta o parâmetro 1 dereferenciado ao inteiro especificado pelo índice e continua no bloco 709. No bloco de decisão 705, se o índice do parâmetro 1 indica que o parâmetro de chamado de sistema é uma se-qüência, então o componente continua no bloco 706, de outra forma o componente continua no bloco 707. No bloco 706, o componente ajusta o parâmetro 1 dereferenciado à seqüência especificada pelo índice e continua no bloco 709. No bloco de decisão 707, se o índice do parâmetro 1 indica que o parâmetro de chamado de sistema é um binário bruto, então o componente continua no bloco 708, de outra forma um erro ocorreu. No bloco 708, o componente ajusta o parâmetro 1 dereferenciado ao binário bruto especificado pelo índice e continua no bloco 709. Nos blocos 709-714, o componente dereferencia o parâmetro 2. No bloco de decisão 709, se o descritor de parâmetro 2 indica dados imediatos, então o componente continua no bloco 710, de outra forma o componente continua no bloco 711. No bloco 710, o componente ajusta o parâmetro 2 dereferenciado ao valor do parâmetro 2 na instrução enviada e então retorna. No bloco de decisão 711, se o descritor de parâmetro 2 indica dados literais, então o componente continua no bloco 712, de outra forma o componente continua no bloco 713. No bloco 712, o componente ajusta o parâmetro 2 derefe- rendado ao aos dados literais espedficados pelo parâmetro 2 na instrução enviada e então retorna. No bloco de decisão 713, se o descritor de parâmetro 2 indica dados dinâmicos, então o componente continua no bloco 714, de outra forma um erro ocorreu. No bloco 714, o componente ajusta o parâmetro 2 dereferenciado ao aos dados dinâmicos especificados pelo parâmetro 2 na instrução enviada e então retorna.
[0034] A Figura 8 é um diagrama de fluxo que ilustra o processamento do componente de avaliar teste do mecanismo virtual de segurança em uma modalidade. O componente decodifica o código de operação da instrução carregada e convoca um componente a implementar um teste desse código de operação. O componente convocado ajusta o código de condição em verdadeiro ou falso. Nos blocos de decisão 801-803, o componente decodifica o código de operação da instrução carregada. Nos blocos 804-806, o componente convoca os componentes para implementar o código de operação decodificado e então retorna.
[0035] A Figura 9 é um diagrama de fluxo que ilustra o processamento do componente de teste do mecanismo virtual de segurança em uma modalidade. O componente de teste implementa o código de operação de testar. No bloco 901, o componente ajusta o código de condição ao valor do parâmetro 2 dereferenciado e então retorna.
[0036] A Figura 10 é um diagrama de fluxo que ilustra o processamento do componente de comparar seqüência do mecanismo virtual de segurança em uma modalidade. O componente determina se o parâmetro 1 dereferenciado combina com o parâmetro 2 dereferenciado. Em uma modalidade, o mecanismo virtual de segurança pode usar combinação de padrões. Por exemplo, um parâmetro pode incluir uma especificação de “símbolo” ou uma expressão geralmente mais regular. No bloco de decisão 1001, se os comprimentos do parâmetro 1 e do parâmetro 2 combinam, então o componente continua no bloco 1003, de outra forma os parâmetros dereferenciados não podem combinar-se e o componente continua no bloco 1002. No bloco 1002, o componente ajusta o código de condição para falso e então retorna. Nos blocos 1003-1006, o componente volta a verificar cada caractere das seqüências dos parâmetros dereferenciados. No bloco 1003, o componente seleciona o próximo caractere de cada seqüên-cia. No bloco de decisão 1004, se todos os caracteres das seqüências já foram selecionados, então o componente continua no bloco 1008, de outra forma o componente continua no bloco 1005. No bloco 1005, o componente normaliza os caracteres selecionados. Por exemplo, o componente pode colocar cada caractere em letras minúsculas para implementar uma comparação de caso insensitivo. No bloco de decisão 1006, se os caracteres selecionados combinam, então o componente volta ao bloco 1003 para selecionar o próximo caractere das seqüências, de outra forma o componente continua no bloco 1007. No bloco 1007, o componente ajusta o código de condição para falso e então retorna. No bloco 1008, todos os caracteres das seqüências combinam e o componente ajusta o código de condição para verdadeiro e então retorna.
[0037] A Figura 11 é um diagrama de fluxo que ilustra o processamento do componente de não testar do mecanismo virtual de segurança em uma modalidade. O componente executa a operação do código de operação de não testar da instrução enviada, incluindo ajustar o indicador de instrução corrente para apontar para a próxima instrução para executar. No bloco de decisão 1101, se o código de operação é uma operação de ação, então o componente continua no bloco 1102, de outra forma o componente continua no bloco 1103. No bloco 1102, o componente adiciona o parâmetro 2 da instrução enviada ao conjunto de saída de ação e então continua no bloco 1107. No bloco de decisão 1103, se o código de operação é uma operação de zerar (“reset”), então o componente continua no bloco 1104, de outra forma o componente continua no bloco 1105. No bloco 1104, o componente zera o conjunto de saída de ação e então continua no bloco 1107. No bloco de decisão 1105, se o código de operação é uma operação de pular, então o componente continua no bloco 1106, de outra forma o componente continua a decodificar códigos de operação adicionais. No bloco 1106, o componente adiciona o parâmetro 2 ao indicador de instrução corrente e então retorna. No bloco 1107, o componente adiciona o valor do campo de seção verdadeiro ao indicador de instrução corrente e então retorna.
[0038] Os versados na técnica apreciarão que embora modalidades específicas do sistema de segurança tenham sido descritas aqui para propósitos de ilustração, várias modificações podem ser feitas sem desviar do espírito e escopo da invenção. Os versados na técnica apreciarão que um sistema de segurança usando um mecanismo virtual de segurança pode ser usado para reforçar uma ampla variedade de políticas de segurança. Por exemplo, o sistema de segurança pode ser usado para reforçar a segurança de mensagens recebidas via uma rede, transações recebidas por um processador de transações, e mais geralmente qualquer aplicação que fornece uma interface de programação de aplicação. Conseqüentemente, a invenção não é limitada exceto pelas reivindicações em anexo.
REIVINDICAÇÕES
Claims (13)
1. Método em um dispositivo de computação para fazer cumprir uma política de segurança, o dispositivo de computação tendo um primeiro conjunto de instruções, compreendendo: proporcionar uma política de segurança em uma linguagem de alto nível, a política de segurança indicando parâmetros de chamadas do sistema que podem levar a um comportamento indesejável; compilar a política de segurança na linguagem de alto nível para um programa de segurança baseado em um segundo conjunto de instruções de uma máquina virtual de segurança, o segundo conjunto de instruções da máquina virtual de segurança sendo diferente do primeiro conjunto de instruções do dispositivo de computação, a máquina virtual de segurança sendo implementada utilizando instruções do primeiro conjunto de instruções do dispositivo de computação; carregar, pelo dispositivo de computação, o programa de segurança em um armazenamento de instruções da máquina virtual de segurança; caracterizado pelo fato de que sob o controle de um sistema operacional, executar no dispositivo de computação no modo kernel, receber, pelo sistema operacional a partir de uma aplicação que executa no dispositivo de computação no modo de usuário, uma indicação da invocação de uma chamada de sistema do sistema operacional com um parâmetro, a invocação sendo um evento de aplicação de segurança que ocorre durante a execução da aplicação fora da máquina virtual de segurança; e ao receber a invocação e sob o controle da máquina virtual de segurança com suas instruções do primeiro conjunto de instruções sendo executadas pelo dispositivo de computação enquanto no modo kernel, executar, pela máquina virtual de segurança, o programa de segurança do armazenamento de instruções com base em dados do evento de aplicação de segurança que inclui uma indicação da chamada de sistema e do parâmetro para garantir que o evento de aplicação de segurança cumpre com a política de segurança; quando o evento de aplicação de segurança cumpre com a política de segurança, permitir a invocação da chamada do sistema; e quando o evento de aplicação de segurança não cumpre com a política de segurança, bloquear a invocação da chamada de sistema.
2. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a informação de controle de processo de uma aplicação que coloca a chamada de sistema são os dados do evento de aplicação de segurança.
3. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que os dados do programa de segurança são armazenados em uma estrutura de dados literal.
4. Método, de acordo com a reivindicação 3, caracterizado pelo fato de que uma instrução do segundo conjunto de instruções contém uma referência ao dados literais armazenados na estrutura de dados literal.
5. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que os dados do programa de segurança são armazenados em uma estrutura de dados dinâmica.
6. Método, de acordo com a reivindicação 5, caracterizado pelo fato de que uma instrução do segundo conjunto de instruções contém uma referência aos dados dinâmicos armazenados na estrutura de dados dinâmicos.
7. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que uma instrução do segundo conjunto de instruções identifica um local da instrução seguinte a executar.
8. Método, de acordo com a reivindicação 1, caracterizado pe- Io fato de que a máquina virtual de segurança suporta tipos de dados binários brutos, booleanos, de números inteiros e de cadeias de caracteres.
9. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a máquina virtual de segurança suporta comparações de correspondência de padrões de expressão regulares.
10. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a execução do programa de segurança cria um conjunto de ações de saída que especifica como lidar com o evento de aplicação de segurança.
11. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que uma instrução do segundo conjunto de instruções inclui um código de operação, parâmetros e campos de ramificação.
12. Método, de acordo com a reivindicação 11, caracterizado pelo fato de que os campos de ramificação incluem um campo de ramificação real que especifica a instrução seguinte quando uma condição da instrução é avaliada como verdadeira e um campo de ramificação falsa que especifica a instrução seguinte quando a condição da instrução é avaliada como falsa.
13. Método em um dispositivo de computação para fazer cumprir uma política de segurança, o dispositivo de computação um primeiro conjunto de instruções, compreendendo: proporcionar uma política de segurança em uma linguagem de alto nível, a política de segurança indicando parâmetros de chamadas de sistema que podem levar a um comportamento indesejável, a política de segurança sendo compilada a partir da linguagem de alto nível em um programa de segurança baseado em um segundo conjunto de instruções de uma máquina virtual de segurança, o segundo conjunto de instruções da máquina virtual de segurança sendo diferente do primeiro conjunto de instruções do dispositivo de computação, a máquina virtual de segurança sendo implementada utilizando instruções do primeiro conjunto de instru- ções do dispositivo de computação que são executadas diretamente por uma unidade de processamento central do dispositivo de computação; carregar, pelo dispositivo de computação, o programa de segurança em um armazenamento de instruções da máquina virtual de segurança; caracterizado pelo fato de que sob controle de uma aplicação executando no dispositivo de computação no modo de usuário do dispositivo de computação e fora da máquina virtual de segurança, invocar uma chamada de sistema de um sistema operacional implementado utilizando as instruções do primeiro conjunto de instruções do dispositivo de computação que são executadas diretamente por uma unidade de processamento central do dispositivo de computação que executa no dispositivo de computação, a chamada de sistema incluindo um parâmetro; e enquanto no modo kernel do dispositivo de computação e sob controle do sistema operacional, receber, pelo sistema operacional da aplicação que executa no dispositivo de computação no modo de usuário, uma indicação da invocação da chamada de sistema do sistema operacional com um parâmetro, a invocação sendo um evento de aplicação de segurança que ocorre durante a execução da aplicação, a aplicação sendo implementada utilizando instruções do primeiro conjunto de instruções do dispositivo de computação que são executadas diretamente por uma unidade de processamento central do dispositivo de computação; e ao receber a invocação da chamada de sistema do sistema operacional, iniciar a execução da máquina virtual de segurança no modo kernel; durante a execução da máquina virtual de segurança no modo kernel, executar as instruções do segundo conjunto de instruções do armazenamento de instruções com base em dados do evento de aplicação de segurança que inclui um parâmetro para assegurar que o evento de aplicação de segurança cumpre com a política de segurança; e após a execução da máquina virtual de segurança ser interrompida, quando o evento de aplicação de segurança cumpre com a política de segurança, executar a chamada do sistema; e quando o evento de aplicação não cumpre com a política de segurança, bloquear o desempenho da chamada do sistema.
Family
ID=
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US8607299B2 (en) | Method and system for enforcing a security policy via a security virtual machine | |
| US8104021B2 (en) | Verifiable integrity guarantees for machine code programs | |
| Van Rossum et al. | The python language reference | |
| US9336018B2 (en) | Mechanism for class data sharing using extension and application class-loaders | |
| US8326579B2 (en) | Method and system for program execution integrity measurement | |
| US20070204261A1 (en) | Robust software library wrapper method and apparatus | |
| Fu et al. | Evmfuzz: Differential fuzz testing of ethereum virtual machine | |
| Vanegue et al. | Towards practical reactive security audit using extended static checkers | |
| US20080120604A1 (en) | Methods, Systems, And Computer Program Products For Providing Program Runtime Data Validation | |
| Cassel et al. | Nodemedic: End-to-end analysis of node. js vulnerabilities with provenance graphs | |
| Hung et al. | Brf: Fuzzing the ebpf runtime | |
| Agesen et al. | The SELF 4.0 Programmer’s Reference Manual | |
| Kellogg et al. | Lightweight verification of array indexing | |
| Park et al. | Static analysis of JavaScript libraries in a scalable and precise way using loop sensitivity | |
| BRPI0501171B1 (pt) | Method in a computing device to enforce a security policy | |
| Orenbach et al. | Securing access to untrusted services from TEEs with GateKeeper | |
| HK1085281A (en) | A method and system for enforcing a security policy via a security virtual machine | |
| Kokosa et al. | . NET Fundamentals | |
| CN121070380A (zh) | 一种应用于容器环境的策略转译与内核防护方法及系统 | |
| Holmes | Windows powershell quick reference | |
| Dhanjani et al. | Kernel korner: Loadable kernel module programming and system call interception | |
| HK1085281B (en) | A method and system for enforcing a security policy via a security virtual machine | |
| Borrie | Firebird 2.1 Release Notes | |
| Silva | Static Data Flow Analysis for Vulnerable Permission Configurations of Android Applications | |
| Vardanega–Italy et al. | WG 23/N1202 |