Páginas

▼

sexta-feira, 9 de outubro de 2026

Google Revoluciona a Segurança do Kernel Linux: Isolamento de Drivers com Kage, LFI e VKage

 



O Google isola os drivers Linux no kernel com o Kage, LFI e VKage. Entenda como funciona o sandbox em espaço de kernel, o impacto na performance e futuro dos drivers Android.


O Google está desenvolvendo uma abordagem inovadora para um dos problemas mais persistentes da segurança do Linux: o isolamento de drivers de dispositivos. 

Os engenheiros da empresa estão experimentando o Kage, um subsistema de kernel experimental que executa módulos de kernel dentro de sandboxes (caixas de areia) no próprio kernel, utilizando a funcionalidade Lightweight Fault Isolation (LFI) do LLVM. 

A proposta, apresentada na Linux Plumbers Conference 2026 por Zachary Yedidia (Stanford University e Google), promete reduzir drasticamente o impacto de vulnerabilidades em drivers sem sacrificar a performance que torna o Linux tão versátil.


O Problema: Drivers Como Vetores de Ataque


Drivers de dispositivos são componentes críticos que conectam o sistema operacional ao hardware — placas de vídeo, adaptadores de rede, controladores de armazenamento, dispositivos USB e chipsets sem fio. 

A maioria dos drivers tradicionais do Linux é executada no espaço do kernel, com acesso privilegiado a recursos do sistema e capacidade de interagir diretamente com o hardware. 

Essa arquitetura é uma das razões pelas quais o Linux entrega alta performance em uma ampla gama de dispositivos, mas também cria um desafio de segurança significativo.

Quando um aplicativo comum encontra um erro de memória, o sistema operacional geralmente pode encerrar aquele processo sem afetar o restante do sistema. Drivers de kernel operam sob condições diferentes. 

Como compartilham o espaço de endereço e os privilégios do kernel, um acesso inválido à memória ou uma vulnerabilidade explorável pode afetar os componentes não relacionados do kernel, resultando potencialmente em uma falha do sistema, escalação de privilégios ou comprometimento completo do sistema operacional.

O desafio se torna ainda mais complexo quando se considera o número enorme de drivers suportados pelo Linux. 

Alguns são mantidos por grandes organizações com infraestrutura extensa de testes, enquanto outros recebem contribuições de equipes menores ou mantenedores individuais. 

Mesmo os drivers cuidadosamente revisados podem conter bugs, particularmente quando interagem com hardware complicado, operações assíncronas e mecanismos de gerenciamento de memória.


A Solução: Kage e o Isolamento em Espaço de Kernel


O Kage é um subsistema de kernel experimental projetado para executar módulos de kernel selecionados dentro de regiões de memória restritas. A abordagem depende da tecnologia Lightweight Fault Isolation (LFI) do LLVM, que restringe os acessos à memória e as operações de fluxo de controle executadas por código nativo compilado. 

Em vez de realocar um driver para o espaço do usuário, o Kage permite que ele continue sendo executado dentro do kernel, impondo limites em torno da memória que pode acessar.

Drivers "Kage'd" mantêm o mesmo nível de privilégio de hardware e o mesmo espaço de endereço que o restante do kernel Linux, mas, por meio do LFI baseado em compilador, ficam confinados a um subconjunto do espaço de memória virtual. 

O objetivo é conter certas classes de corrupção de memória sem exigir as mudanças arquiteturais substanciais associadas à movimentação de drivers existentes para processos separados.


Como o LFI Funciona



O Lightweight Fault Isolation é uma tecnologia de isolamento baseada em software desenvolvida por meio de pesquisa em Stanford com o apoio do Google. 

O seu propósito é permitir que código de máquina nativo seja executado dentro de regiões restritas de um processo existente, sem necessariamente exigir um processo separado ou uma máquina virtual para isolamento. 

O Kage adapta esse conceito ao kernel Linux, onde drivers sensíveis à performance frequentemente precisam se comunicar com outros subsistemas do kernel.

Em alto nível, o LFI depende de restrições geradas pelo compilador e da verificação do código de máquina resultante. Os acessos à memória são restritos a regiões aprovadas, enquanto as restrições de fluxo de controle impedem que o código em sandbox execute livremente instruções arbitrárias fora do ambiente permitido.

A versão atual do LFI para o LLVM restringe os programas a uma região de 4 GiB de memória virtual, começando de onde o programa é carregado. Os programas compilados para o alvo LFI são restritos a um subconjunto do conjunto de instruções, projetado para que possam ser confinados com segurança à sua região de sandbox.

Um aspecto importante do LFI é seu verificador de código de máquina, que checa se as instruções compiladas estão em conformidade com as restrições do sandbox. Isso reduz a dependência do próprio compilador como componente de segurança confiável. 

De acordo com a apresentação do Kage, o verificador deve preservar o isolamento mesmo quando o código em sandbox é potencialmente malicioso, em vez de apenas proteger contra erros acidentais.

Para quem ama o Linux de verdade.


A Caneca I Love Linux é o companheiro ideal para devs, sysadmins e entusiastas do open source. Cerâmica de alta qualidade, estampa nítida e aquele design que diz tudo sem precisar abrir o terminal.

✅ Perfeita para o café, o chimarrão ou o energético da madrugada.

🎁 Ótima ideia de presente para o time de TI.

🛒 Compre agora: Caneca I Love Linux 330 ml -> https://link.amazon/B0dJ2DIT5


Eu ganho uma comissão quando você faz uma compra.

Suporte a Arquiteturas


O LLVM atualmente oferece suporte ao LFI para as plataformas AArch64 e X86-64. A versão para AArch64 foi previamente integrada ao upstream, enquanto o suporte para x86/x86_64 foi recentemente upstreamed, com a conclusão do suporte x86 planejada para o LLVM 24. 

Isso é crucial porque qualquer tecnologia prática de isolamento de drivers Linux precisa eventualmente suportar as arquiteturas usadas em servidores, desktops, sistemas embarcados e dispositivos móveis.



VKage: Combinando Kage com VirtIO


Os pesquisadores também estão experimentando uma arquitetura relacionada chamada VKage, que combina o Kage com o VirtIO. Tradicionalmente, o VirtIO é usado para comunicação entre uma máquina virtual e o hipervisor. 

No VKage, essa relação é invertida: em vez de se comunicar com um driver executado dentro de uma máquina virtual separada, o kernel se comunica com um driver isolado dentro de um sandbox Kage.

O pareamento do Kage com o VirtIO de maneira invertida já foi usado para prototipar NVMe, rede e WiFi funcionais nos ambientes de sandbox de driver. No entanto, mais testes precisam ser feitos no lado da performance, e também é preciso explorar se o isolamento de drivers de GPU seria viável. 

O Google pode estar considerando o (V)Kage para os drivers de dispositivos Android no futuro.


Interface Segura com BTF


Restringir o acesso à memória é apenas uma parte do isolamento de um driver de dispositivo. Os drivers ainda precisam se comunicar com o resto do kernel, solicitando serviços, trocando informações e acessando recursos necessários para operar o hardware. 

O Kage usa informações de tipo BTF (BPF Type Format) para verificar automaticamente assinaturas de chamadas e substituir ponteiros do kernel por identificadores opacos (opaque handles) nas chamadas entre o kernel e o módulo.

O protótipo atual pode colocar em sandbox módulos de kernel computacionais simples e espera-se que cresça em capacidades para lidar com MMIO, compartilhamento de buffers, DMA (via IOMMU) e roteamento de interrupções, com o objetivo final de isolar drivers reais e complexos, como USB, rede ou possivelmente até drivers de GPU.


Impacto na Performance


Uma das principais preocupações com qualquer mecanismo de isolamento é o custo de performance. As pesquisas publicadas na ACM Transactions on Architecture and Code Optimization mostram que o KAGE (a base do Kage) impõe menos de 1% de overhead para programas intensivos em chamadas de sistema em execução normal. 

A maioria das chamadas de sistema permanece abaixo de 5% de overhead, enquanto falhas de página adicionam cerca de 1,2% normalmente e 3% sob estresse.

Para os drivers de rede, o overhead do KAGE fica abaixo de 2% para placas de 1GbE e 10GbE. A vazão máxima com 10GbE tem overhead de 1,5%, e a latência UDP tem no máximo 1,5% de overhead. O consumo de memória é praticamente idêntico, com diferença inferior a 0,5%.


FAQs: Perguntas Frequentes


1. O que é o Kage e como ele difere de outras abordagens de isolamento?

O Kage é um subsistema de kernel experimental que executa módulos de kernel dentro de sandboxes no próprio kernel, usando a tecnologia LFI do LLVM. Diferentemente de abordagens que movem drivers para o espaço do usuário ou máquinas virtuais, o Kage mantém os drivers executando no mesmo nível de privilégio e espaço de endereço do kernel, mas restringe seus acessos à memória a um subconjunto do espaço virtual.


2. O Kage já está disponível para uso em produção?

Não. O Kage permanece um projeto de pesquisa experimental, não uma funcionalidade disponível em distribuições Linux mainstream. Os desenvolvedores ainda estão investigando performance, acesso a hardware e compatibilidade com drivers mais complicados, incluindo hardware gráfico.

3. Qual a diferença entre Kage e VKage?

O Kage é o subsistema de isolamento em si, enquanto o VKage combina o Kage com o VirtIO de maneira invertida. No VKage, em vez de o kernel se comunicar com um driver em uma máquina virtual separada, ele se comunica com um driver isolado dentro de um sandbox Kage. Essa abordagem já foi usada para prototipar NVMe, rede e WiFi funcionais em ambientes de sandbox.


Checklist para Acompanhar o Desenvolvimento do Kage


□ Acompanhar as atualizações do LLVM 24 para suporte x86/x86_64 do LFI.

□ Ler o paper completo na ACM Transactions on Architecture and Code Optimization.

□ Assistir à apresentação na Linux Plumbers Conference 2026.

□ Testar o protótipo do Kage em ambiente controlado (quando disponível).

□ Monitorar anúncios do Google sobre aplicação em drivers Android.

□ Verificar se drivers de GPU serão incluídos nos testes futuros.

□ Acompanhar discussões na lista de e-mail do kernel Linux sobre o Kage.


Conclusão 



O Kage representa uma mudança de paradigma na forma como pensamos sobre segurança de drivers no Linux. Em vez de sacrificar performance movendo drivers para o espaço do usuário, o Google está usando tecnol

ogia de compilador para criar fronteiras de isolamento dentro do próprio kernel. Com o suporte ao LFI progredindo em múltiplas arquiteturas e protótipos funcionais de NVMe, rede e WiFi já demonstrando viabilidade, o futuro do isolamento de drivers no Linux parece promissor.

Copie o nosso checklist completo em PDF com tudo o que você precisa saber para acompanhar o desenvolvimento do Kage e do LFI. Compartilhe este artigo com colegas desenvolvedores e deixe um comentário abaixo sobre o que você acha dessa abordagem inovadora!

Nenhum comentário:

Postar um comentário