Fim da Confiança Cega: Linux 7.0-rc1 adota Rust para autenticar cada dispositivo conectado ao seu PC

Fim da Confiança Cega: Linux 7.0-rc1 adota Rust para autenticar cada dispositivo conectado ao seu PC

Uma coalizão de desenvolvedores liderada por Alistair Francis (Western Digital), Jonathan Cameron (Huawei) e Lukas Wunner (Intel) submeteu uma série massiva de 27 patches para o Kernel Linux 7.0-rc1, introduzindo uma implementação em Rust do protocolo SPDM (Security Protocol and Data Model). O objetivo é elevar a segurança do sistema ao tratar dispositivos de hardware (como placas NVMe e aceleradores PCIe) como entidades potencialmente maliciosas até que sua identidade e integridade sejam comprovadas.

Esta iniciativa é um dos pilares do Kernel Linux 7.0-rc1, que como vimos recentemente no SempreUpdate, marca o início de uma expansão profunda da linguagem Rust para subsistemas críticos do núcleo.

O que isso significa na prática

Tradicionalmente, o Kernel Linux confia no hardware que está conectado fisicamente ao computador. No entanto, com a ascensão de ataques a nível de firmware, essa confiança tornou-se uma vulnerabilidade. O SPDM permite que o kernel realize a autenticação e atestação de dispositivos.

O uso de Rust para essa tarefa é o grande diferencial. Como as especificações do SPDM são extremamente complexas (mais de 250 páginas) e envolvem o processamento de dados binários vindos de fontes não confiáveis (o hardware), um erro de lógica em C poderia abrir as portas para um exploit de memória. O Rust elimina essa categoria de erro por design, garantindo que o “aperto de mão” entre o sistema e o hardware seja matematicamente seguro.

A implementação do SPDM em Rust complementa esforços anteriores de blindagem, como a criptografia de links PCIe introduzida no Kernel 6.19, reforçando a proteção contra ataques físicos e acessos maliciosos à memória RAM.

Detalhes da implementação

A série de patches implementa um “requester” SPDM completo. Entre os destaques técnicos estão:

  • Abstração de Dados Não Confiáveis: Introduzida por Benno Lossin, a biblioteca utiliza o tipo Untrusted<T>, que impede o acesso direto aos dados do hardware até que eles passem por uma validação rigorosa (Validate).
  • Integração CMA (Component Measurement and Authentication): O kernel agora pode autenticar dispositivos PCIe logo durante a enumeração no boot.
  • Recuperação e Resumo: O suporte em Rust garante que, após um estado de suspensão ou reset do barramento, o dispositivo seja re-autenticado antes que os drivers voltem a operar, fechando janelas de ataque de substituição de hardware.

O uso de Rust para gerenciar a segurança do hardware não é um caso isolado; essa tendência de modernização também está presente no refinamento do suporte às GPUs Blackwell da NVIDIA, onde o código Rust garante uma inicialização mais limpa e estável.

Curiosidades e bastidores da discussão

A discussão na LKML gerou debates intensos sobre onde deve ocorrer a verificação. Jason Gunthorpe argumentou que o kernel deveria apenas verificar se o dispositivo é o “mesmo” que foi aprovado anteriormente, deixando a verificação pesada de certificados para o espaço de usuário (userspace) via Netlink.

Por outro lado, Lukas Wunner defendeu que a verificação em kernel é vital para casos de retomada de suspensão (resume), onde o espaço de usuário ainda está “congelado”, mas os drivers já precisam acessar o hardware de forma segura. A escolha pelo Rust foi elogiada por transformar um componente crítico e propenso a falhas em um dos pilares de segurança mais robustos do Kernel Linux 7.0-rc1.

Quando isso chega no meu PC?

Embora o Rust não seja mais considerado experimental, esta implementação SPDM ainda está em fase de RFC (Request for Comments) v3, o que significa que passará por refinamentos antes de ser mesclada na árvore estável. Se o ritmo de desenvolvimento for mantido, poderemos ver o suporte completo e ativado por padrão nas distribuições corporativas e de segurança no segundo semestre de 2026, utilizando a base do Kernel Linux 7.0.