• Home
  • Química
  • Astronomia
  • Energia
  • Natureza
  • Biologia
  • Física
  • Eletrônicos
  • O isolamento automático do driver de dispositivo protege contra bugs nos sistemas operacionais

    Crédito:Pixabay/CC0 Public Domain

    O kernel de um sistema operacional atua como o tradutor entre o usuário e a máquina. Para melhorar a confiabilidade de um kernel, os desenvolvedores podem isolar os drivers de dispositivo do sistema operacional e evitar que uma falha em um componente afete outros componentes. O isolamento, no entanto, requer quantidades impraticáveis ​​de esforço humano.
    Uma equipe de pesquisadores, liderada por G. Gary Tan e Trent Jaeger, professores de ciência da computação e engenharia da Penn State, começou a desenvolver uma estrutura que pudesse automatizar e reduzir a quantidade de trabalho manual necessário para o isolamento de drivers de dispositivos na presença de padrões de kernel desafiadores.

    Os pesquisadores apresentaram sua estrutura no 16º Simpósio USENIX sobre Projeto e Implementação de Sistemas Operacionais (OSDI '22), que ocorreu de 11 a 13 de julho em Carlsbad, Califórnia. OSDI é uma conferência de primeira linha em pesquisa de sistemas operacionais e reúne profissionais de formação acadêmica e industrial para discutir o design, implementação e implicações de software de sistemas, de acordo com seu site.

    O kernel do sistema operacional controla e coordena todo o hardware e software no computador. Os drivers de dispositivo permitem que o kernel interaja com o hardware sem conhecer os detalhes do componente. Por exemplo, quando um usuário direciona seu computador para imprimir um documento, o kernel invoca certas funções de interface fornecidas por um driver de impressora, que processa os dados e envia o trabalho para a impressora.

    De acordo com Tan, para isolar efetivamente os drivers de dispositivo e manter a comunicação kernel-driver, os desenvolvedores precisavam inspecionar a grande e complexa interface de comunicação entre um driver e o kernel e decidir quais dados precisavam ser sincronizados examinando todas as interações entre o driver e o kernel. núcleo. Eles também precisavam lidar com padrões de sincronização desafiadores, como simultaneidade de dados, escrevendo milhares de linhas de código para manter as operações tranquilas.

    "O isolamento é uma técnica eficaz para melhorar a confiabilidade em sistemas de software, como o kernel, mas contar com o esforço humano para isolar os drivers não é realista, então começamos a desenvolver uma estrutura para automatizar o processo", disse Tan. "Com o isolamento, a falha em um componente fica restrita ao seu próprio domínio; bugs em um componente não podem afetar diretamente o restante do sistema. Isso melhora significativamente a confiabilidade."

    Eles desenvolveram o KSplit, uma abordagem que pode analisar automaticamente o estado compartilhado do driver-kernel e calcular qualquer uma das necessidades de sincronização apenas para esse estado compartilhado. O programa também identifica áreas que precisam de intervenção manual, reduzindo a carga de trabalho manual ao mínimo de codificação e empacotamento de dados.

    "Antes do KSplit, o processo era trabalhoso e propenso a erros", disse Tan. "Com o KSplit, a maioria dessas tarefas complicadas de isolamento são tratadas automaticamente."

    Os pesquisadores avaliaram a solução com 354 drivers de dispositivo em nove subsistemas em um kernel Linux. Para um driver complexo, o KSplit exigia atualizações manuais em 53 das 2.476 linhas de código, que eram especificações de interface geradas automaticamente, e 19 alterações adicionais no código do driver. Isso é menos de 3% do trabalho manual necessário sem o KSplit.

    "A análise do KSplit dos 354 drivers mostra que uma fração semelhante de trabalho manual é esperada, demonstrando que o KSplit é uma ferramenta prática para automatizar tarefas importantes para permitir o isolamento do driver", disse Jaeger. "No entanto, a estrutura se concentra principalmente em melhorar a confiabilidade do sistema. Planejamos estender o KSplit para fortalecer a interface entre o kernel e um driver, com garantia de segurança para o kernel mesmo na presença de um driver malicioso."

    De acordo com Jaeger, o conjunto de análises estáticas fornecidas pelo KSplit, como computar os dados necessários entre diferentes partes do sistema, pode ser estendido a softwares que exigem uma análise precisa das informações de acesso aos dados, destacando o potencial de proteção contra violações de segurança intencionais ou outros ataques . + Explorar mais

    Aproximando um núcleo de verdade




    © Ciência https://pt.scienceaq.com