Nova abordagem

AMD propõe simplificação no gerenciamento de vulnerabilidades de CPU no kernel Linux

A AMD propôs simplificar a forma como o kernel Linux gerencia vulnerabilidades de CPU, passando de uma abordagem individual para uma baseada em vetores de ataque, otimizando a proteção de acordo com as necessidades dos usuários.

Diagrama do driver AMD HFI destacando a otimização de núcleos heterogêneos para melhor eficiência energética e desempenho em processadores AMD

Um engenheiro da AMD sugeriu uma importante mudança no kernel Linux para facilitar o gerenciamento de vulnerabilidades de CPU. Atualmente, o kernel conta com 15 modos diferentes de proteção contra vulnerabilidades, o que torna a configuração manual através da linha de comando uma tarefa complexa, especialmente para administradores de sistemas. O desenvolvedor propôs que, em vez de configurar a proteção de cada vulnerabilidade de forma individual, seja adotado um sistema baseado em vetores de ataque, facilitando a ativação das proteções mais relevantes para cada cenário.

O que é uma vulnerabilidade de CPU?

Uma vulnerabilidade de CPU é uma falha ou fraqueza nos processadores (CPUs) que pode ser explorada para comprometer a segurança de um sistema. Isso significa que invasores podem utilizar essas falhas para acessar dados confidenciais, mesmo que as informações estejam protegidas. Ao longo dos anos, diversas falhas de segurança, como Meltdown e Spectre, foram descobertas em CPUs de várias fabricantes, incluindo Intel e AMD, forçando os desenvolvedores do Linux a implementar métodos de proteção contra essas vulnerabilidades.

A nova proposta

Atualmente, para ativar as proteções contra essas vulnerabilidades, o administrador do sistema precisa listar e configurar cada uma manualmente, o que é uma tarefa demorada e sujeita a erros. A nova proposta da AMD simplificaria esse processo ao permitir que as proteções sejam ativadas com base no tipo de ataque, facilitando a vida tanto de administradores experientes quanto de usuários comuns.

Aqui estão os tipos de ataques que poderiam ser configurados mais facilmente com essa nova abordagem:

  1. Entre o usuário e o kernel (mitigate_user_kernel): Protege contra ataques onde um programa comum tenta acessar áreas reservadas do sistema operacional (o “kernel”).
  2. Entre diferentes usuários (mitigate_user_user): Protege contra ataques de um usuário tentando acessar dados de outro usuário no mesmo sistema.
  3. Entre sistemas convidados e o ambiente host (mitigate_guest_host): Voltado para ambientes virtuais, protege o sistema principal (host) de ataques vindos de máquinas virtuais.
  4. Entre diferentes sistemas convidados (mitigate_guest_guest): Protege máquinas virtuais de ataques umas contra as outras.
  5. Entre diferentes threads (mitigate_cross_thread): Protege contra ataques entre diferentes processos ou tarefas que são executados simultaneamente na CPU.

Como isso beneficia o usuário comum?

Essa nova abordagem permitirá que administradores de sistemas e até usuários mais leigos ativem somente as proteções necessárias, sem a necessidade de entender cada vulnerabilidade específica. Por exemplo, em um ambiente de nuvem, onde várias máquinas virtuais (sistemas convidados) são executadas, o administrador pode ativar as proteções mitigate_guest_host e mitigate_guest_guest, assegurando que o ambiente virtual esteja seguro contra ataques direcionados a essas vulnerabilidades.

Tabela de vulnerabilidades

Para facilitar a compreensão, a tabela a seguir resume quais vulnerabilidades podem ser mitigadas com base no tipo de ataque:

================ ============== ============ ============= ============== ============  
Vulnerabilidade   User-to-Kernel User-to-User Guest-to-Host Guest-to-Guest Cross-Thread  
================ ============== ============ ============= ============== ============  
BHI                   X                           X  
GDS                   X              X            X              X  
L1TF                                              X                            X        
MDS                   X              X            X              X             X        
MMIO                  X              X            X              X             X        
Meltdown              X  
Retbleed              X                           X                            X        
RFDS                  X              X            X              X  
Spectre_v1            X  
Spectre_v2            X                           X  
Spectre_v2_user                      X                           X  
SRBDS                 X              X            X              X  
SRSO                  X                           X  
SSB         
TAA                   X              X            X              X             X