Microkernel em sistemas operacionais ganham espaço contra ameaças em dispositivos inteligentes

Microkernel em sistemas operacionais estão ganhando mais importância em mercados que precisam de segurança.

 Até 2030, o número de dispositivos conectados no mundo deve chegar a 24 bilhões. Essa estatística inclui uma infinidade de sistemas e acessórios domésticos: relógios inteligentes, pulseiras fitness, alto-falantes com assistentes de voz inteligentes e todos os aparelhos que eles controlam. Também engloba caixas eletrônicos inteligentes, terminais POS (conhecidos aqui como as maquininhas de cartão), câmeras de vigilância por vídeo e similares. Esses são todos os dispositivos que os usuários estão acostumados a usar confiando dados sensíveis, mas que não são capazes de controlar a segurança. Ao mesmo tempo, os dispositivos de internet das coisas (IoT) estão se tornando alvos de um número crescente de ataques. E embora os fornecedores tentem não enfatizar isso, o problema de segurança da IdC torna-se cada vez mais relevante — especialmente para ecossistemas de vários dispositivos conectados.

Por exemplo, em 2020, os pesquisadores da Check Point testaram um ataque a uma rede por meio de uma lâmpada inteligente. Eles conseguiram carregar o firmware ajustado em uma lâmpada inteligente e usá-lo para instalar malware em um dispositivo que controla o sistema de iluminação. A partir daí, eles penetraram na rede local. A vulnerabilidade foi prontamente fechada, mas quais são as garantias de que um truque semelhante não pode ser executado por meio outras brechas de segurança da IdC?

Outro exemplo – uma situação envolvendo uma vulnerabilidade de fechaduras inteligentes KeyWe coreanas – parece ainda pior. Além das falhas no processo de geração de chaves, os pesquisadores descobriram alguns problemas fundamentais de design. Isso tornou bastante fácil para os invasores interceptar e descriptografar as senhas dos bloqueios. Além disso, constatou-se que era impossível atualizar o firmware com uma patch de segurança — a vulnerabilidade só poderia ser corrigida em novos bloqueios que estivessem livres da falha de projeto mencionada.

O último exemplo mostra que as lacunas de segurança da IdC podem se originar no nível do design do sistema. Para evitar tais problemas, vários fornecedores nos últimos anos se voltaram para sistemas operacionais baseados em microkernel. Na arquitetura de microkernel, o kernel contém muito menos código do que o kernel de um sistema tradicional e executa apenas as funções estritamente necessárias — o que o torna mais confiável e resistente a falhas.

A popularidade do microkernel em sistemas operacionais está superando a do Windows e do Android

Se você perguntar aos usuários de computadores desktop qual é o sistema operacional mais popular que eles conhecem, certamente ouvirá o Windows como a resposta. De fato, sua participação no mercado global é de 72% — se contabilizada pelo número de computadores com Windows integrado. Mas são poucos os usuários que pensam no que está acontecendo em uma camada mais profunda: no nível do firmware do microchip e do microcontrolador. Lá, o sistema operacional mais difundido é o MINIX, baseado na arquitetura de microkernel. É o sistema operacional que vem com o firmware Intel ME 11. Hoje está presente em todos os desktops e laptops equipados com CPUs Intel, que representam dois terços do mercado de CPUs х86.

Há um cenário semelhante no mercado de dispositivos mobile, portáteis e embedados. Aqui o preferido é o Android. No entanto, novamente, se investigarmos mais profundamente, os sistemas operacionais com microkernel não são menos comuns nesse mercado, embora permaneçam em segundo plano. Uma das mais antigas implementações de arquitetura de microkernel no mercado móvel é o QNX. Este sistema operacional surgiu na década de 1980 em estruturas industriais críticas, sendo posteriormente utilizado em estações de radar navais. Sua versão mais atual, QNX Neutrino, agora pode ser encontrada em roteadores Cisco e no firmware de milhões de veículos motorizados.

Interface de firmware de um veículo moderno, proposta em 2017

Interface de firmware em um veículo moderno apresentado em 2017

Não vamos esquecer outros dispositivos com firmware de microkernel; por exemplo, há sistemas baseados na família de kernel L4, incluindo modems Qualcomm e sistemas automotivos baseados em OKL4, cuja popularidade atingiu o pico em 2012.

MINIX e L4 certamente não são os aplicativos mais relevantes que existem. Alguns podem até chamá-los de vintage. Mas a evolução dos sistemas operacionais de microkernel não parou por aí: seu desenvolvimento foi continuado por vários fornecedores de ecossistemas inteligentes:

  • Um microkernel OS de codinome Horizon forma a espinha dorsal dos consoles de jogos Nintendo Switch. O público tem informações limitadas sobre o próprio sistema operacional, pois é um sistema proprietário.
  • Em janeiro de 2023, os jornalistas do 9to5google descobriram que o novo alto-falante Google Nest provavelmente viria com o Fuchsia – um sistema operacional com o microkernel Zircon em seu núcleo.
  • Em novembro de 2022, a Huawei anunciou que 320 milhões de seus dispositivos estão equipados com HarmonyOS – um sistema operacional de microkernel baseado no kernel HongMeng para dispositivos vestíveis e IdC. Até o final de 2022, os aparelhos equipados com HarmonyOS representavam 2% do total de vendas globais de smartphones. E em abril de 2023, foi lançada a nova versão HarmonyOS 3.1. De acordo com os desenvolvedores, eles percorreram um longo caminho para otimizar o sistema.

Por que os fornecedores são tão ativos nesse campo? Por um lado, é por causa do desenvolvimento do mercado de IdC. Por outro, é devido a uma crise de confiança na proteção tradicional conjugada que não é ela suficientemente eficaz no mundo da IdC.

Coisas que ajudam os fornecedores de firmware de microkernel a proteger os sistemas IdC

Como vimos no caso de sequestro de lâmpada inteligente mencionado acima, os ecossistemas de IdC geralmente são baseados em vários microcontroladores e sensores interconectados. Os invasores tendem a mirar especificamente nos dispositivos finais desprotegidos, para usá-los como um ponto de entrada e, posteriormente, assumir o controle de todo o ecossistema por meio da escalada de privilégios. Equipar cada aparelhinho com sofisticados mecanismos de proteção é economicamente inviável. A situação dá origem a dois problemas fundamentais:

  • Todos nós queremos confiar na proteção integrada do sistema. Em IdCs, estamos lidando com vários pequenos elementos que não são confiáveis. Há duas maneiras de abordar esse problema: tornar cada um o mais protegido possível ou começar reconhecendo as limitações e projetar o sistema para que ainda seja seguro – mesmo com esses elementos integrados.
  • Controle de interações. Em um grande sistema, normalmente nenhum elemento opera no vácuo: eles “se comunicam” entre si e muitas vezes têm privilégios para realizar determinadas ações uns sobre os outros. Em um sistema no qual não podemos confiar em todos os elementos, essas interações e privilégios devem ser limitados e monitorados com alguns meios de controle.

É assim que esses problemas podem ser resolvidos com sistemas operacionais de microkernel:

  1. O microkernel em sistemas operacionais distingue os componentes entre confiáveis ​​e não confiáveis. Sua arquitetura é construída em torno de vários componentes isolados intercomunicantes, que podem ser convenientemente classificados como não confiáveis ​​ou confiáveis. O kernel está entre os componentes confiáveis: executa apenas as funções mais necessárias e contém o mínimo possível de linhas de código; e todos os drivers, sistemas de arquivos e similares são removidos para componentes separados fora do kernel. Isso permite limitar os elementos do sistema cujo código somos forçados a confiar a um mínimo necessário e suficiente.

Quanto menos linhas de código confiável o sistema contiver, melhor, pois é mais simples e rápido verificar se há erros nesse código. Esta é a razão pela qual os fornecedores tentam fazer o microkernel o menor possível: ele simplifica a validação de confiança (detalhada abaixo).

  1. Os sistemas operacionais de microkernel isolam a maioria dos componentes privilegiados e os operam no modo de usuário. Em sistemas operacionais de microkernel, o kernel é responsável pelo isolamento dos componentes: cada um reside em seu próprio espaço de endereço. O microkernel fornece um mecanismo para troca de mensagens entre os componentes, planeja os fluxos e controla a memória, os cronômetros e as interrupções.

Os componentes confiáveis ​​e não confiáveis ​​operados no modo de usuário têm tantos privilégios quantos forem necessários para que executem suas funções.

  1. Os sistemas operacionais de microkernel apresentam recursos e ferramentas extras para controle de interação. Em um sistema operacional microkernel, qualquer ação equivale ao envio de uma mensagem (comunicação). Conforme mencionado anteriormente, o microkernel controla o mecanismo de mensagens chave. Além disso, SOs de microkernel geralmente empregam o mecanismo de “capacidades de objeto”, que permite, entre outras coisas, controlar o estabelecimento de novos canais de comunicação.

A única coisa que tende a faltar em todos esses mecanismos são as opções de verificação de confiança. Alguns componentes só precisam ser confiáveis, é verdade; mas que tal “tentar antes de confiar”? Como migramos de “confiável” para “realmente confiável”?

Existem diferentes maneiras de garantir que um elemento é confiável: testes, diferentes métodos de análise, especificação formal e verificação. Todos esses métodos permitem implementar segurança verificável na qual baseamos nossa confiança não na reputação do fornecedor, mas nos resultados destas metodologias de análise aplicadas. Isso está no cerne de muitos modelos de segurança reconhecidos, por exemplo, MILS, ou padrões e critérios de avaliação de segurança, como os “critérios comuns”. Prevemos que esses métodos e modelos serão cada vez mais usados.

Em um futuro próximo, novas gerações de sistemas operacionais de microkernel ajudarão a obter segurança verificável e imunidade cibernética

Após um estudo de longo prazo das melhores práticas de proteção, usamos princípios de segurança verificáveis ​​para desenvolver nossa própria abordagem imunidade cibernética, que usaremos para criar sistemas de TI inerentemente seguros. Cyber ​​Immunity é uma implementação da abordagem Secure by Design, onde a segurança da informação está em foco em todos os estágios de desenvolvimento.

Nos sistemas ciberimunes, todas as interações são tipificadas e verificadas: em particular, um monitoramento especial está no controle de todas as comunicações entre processos. Este módulo é capaz de fazer uma introspecção de todos os dados trocados entre os processos e pode utilizá-los nas tomadas de decisões relacionadas à segurança. A confiança é validada por meio de testes, análises estáticas e dinâmicas, fuzzing, pentesting e métodos formais.

O KasperskyOS é baseado em microkernel e é o primeiro sistema operacional que oferece suporte a essa abordagem, atuando como uma plataforma para a criação de produtos ciberimunes. Mas, em geral, a metodologia combina os melhores princípios de segurança existentes e não depende muito de quais ferramentas de implementação são usadas. Portanto, esperamos que essas boas práticas encontrem seu caminho em outros aplicativos de firmware de dispositivo de microkernel.

Dicas