
Backdoors de hardware em CPUs x86
: backdoors de hardware em CPUs x86
github.com/xoreaxeaxeax/rosenbridge // domas // @xoreaxeaxeax
project:rosenbridge revela uma backdoor de hardware em alguns processadores x86 de desktop, laptop e embarcados.
A backdoor permite que o código do anel 3 (userland) contorne as proteções do processador para ler e escrever livremente dados do anel 0 (kernel). Embora a backdoor normalmente esteja desabilitada (exigindo execução no anel 0 para ativá-la), descobrimos que ela está ativada por padrão em alguns sistemas.
Este repositório contém utilitários para verificar se o seu processador está afetado, fechar a backdoor se ela estiver presente, e a pesquisa e ferramentas usadas para descobrir e analisar a backdoor.
A backdoor rosenbridge é um pequeno núcleo não-x86 embutido ao lado do núcleo x86 principal na CPU. Ela é ativada por um bit de controle de registro específico do modelo e, em seguida, alternada com uma instrução de lançamento. O núcleo embutido recebe comandos, envoltos em uma instrução x86 especialmente formatada. O núcleo executa esses comandos (que chamamos de 'conjunto de instruções profundamente embutidas'), ignorando todas as proteções de memória e verificações de privilégio.
Embora a backdoor deva exigir acesso ao nível do kernel para ser ativada, foi observado que ela está ativada por padrão em alguns sistemas, permitindo que qualquer código sem privilégios modifique o kernel.
A backdoor rosenbridge é totalmente distinta de outros coprocessadores conhecidos publicamente em CPUs x86, como o Management Engine ou Platform Security Processor; ela está mais profundamente embutida do que qualquer coprocessador conhecido, tendo acesso não apenas a toda a memória da CPU, mas também ao seu arquivo de registradores e pipeline de execução.
Acredita-se que apenas CPUs VIA C3 são afetadas por este problema. Os processadores da série C são comercializados para automação industrial, pontos de venda, caixas eletrônicos e equipamentos de saúde, bem como uma variedade de computadores desktop e laptop de consumo.
O escopo desta vulnerabilidade é limitado; gerações de CPUs posteriores ao C3 não contêm mais esse recurso.
Este trabalho é divulgado como um estudo de caso e experimento mental, ilustrando como backdoors podem surgir em processadores cada vez mais complexos, e como pesquisadores e usuários finais podem identificar tais recursos. As ferramentas e pesquisas oferecidas aqui fornecem o ponto de partida para pesquisas cada vez mais profundas sobre vulnerabilidades de processadores.
Para verificar se sua CPU está afetada:
git clone https://github.com/xoreaxeaxeax/rosenbridge
cd rosenbridge/util
make
sudo modprobe msr
sudo ./bin/check
O utilitário fornecido deve ser executado em baremetal (não em uma máquina virtual) e está em estado alfa. Ele pode travar, causar pânico ou travar sistemas que não contenham a backdoor.
Os utilitários fornecidos aqui foram projetados para uma família e núcleo de processador específicos; infelizmente, as ferramentas não detectarão a backdoor se ela tiver sido ligeiramente modificada em relação à forma pesquisada.
Alguns sistemas têm a backdoor ativada por padrão, permitindo que código sem privilégios obtenha acesso ao nível do kernel sem permissão. Se as etapas em 'Verificando sua CPU' indicarem que sua CPU está vulnerável, você pode instalar um script para fechar a backdoor no início do processo de inicialização:
cd fix
make
sudo make install
reboot
Observe que, mesmo com isso, um invasor com acesso ao nível do kernel ainda pode reativar a backdoor. Este script é fornecido como um esboço para corrigir o problema durante o processo de inicialização, mas exigirá adaptação para diferentes sistemas.
O utilitário sandsifter é usado extensivamente nesta pesquisa para descobrir instruções desconhecidas.
asm
Um montador para o Conjunto de Instruções Profundamente Embutidas (DEIS). Ele converte programas escritos na montagem personalizada rosenbridge em instruções x86, que, quando executadas após a instrução de lançamento, enviarão os comandos para o núcleo oculto da CPU.
esc
Uma prova de conceito do uso da backdoor rosenbridge para escalada de privilégios.
fix
Um esboço aproximado para fechar a vulnerabilidade em sistemas afetados, na medida do possível através de atualizações de registros específicos do modelo.
fuzz
Uma coleção de utilitários usados para fuzzing tanto os núcleos x86 quanto rosenbridge, a fim de isolar a instrução de lançamento e instrução de ponte desconhecidas, e resolver o formato de instrução do núcleo rosenbridge.
deis
O fuzzer usado para explorar os efeitos e capacidades do núcleo oculto da CPU.
exit
Acredita-se que, em alguns processadores, uma sequência de saída é necessária para voltar ao núcleo x86 no final de uma sequência DEIS. Este diretório contém os utilitários usados para procurar a sequência de saída nos estágios iniciais da pesquisa, mas foi abandonado quando foi encontrado um processador que não exigia tal sequência.
manager
Uma coleção de utilitários python projetados para monitorar e gerenciar tarefas de fuzzing distribuídas em uma rede de workers.
wrap
Uma versão reduzida do fuzzer sandsifter, usada para identificar a instrução de ponte que enviará comandos do núcleo x86 para o núcleo rosenbridge oculto.
kern
Uma coleção de utilitários auxiliares usados para monitorar a memória do kernel e registradores em busca de alterações causadas por instruções DEIS fuzzadas.
lock
Utilitários para travar ou destravar a backdoor rosenbridge.
proc
Uma ferramenta para identificar padrões nos logs de fuzzing para identificar classes de comportamentos de instruções DEIS.
test
Uma ferramenta usada no início da pesquisa, para tentar identificar a arquitetura do núcleo oculto executando instruções RISC conhecidas.
util
Uma ferramenta em estado alfa para detectar se um processador é afetado pela rosenbridge.
(TODO: link to whitepaper)
(TODO: link to slides)
Os detalhes e implicações apresentados neste trabalho são inferências e opiniões dos autores, derivadas da pesquisa descrita. A pesquisa é realizada e fornecida com o objetivo de identificar e corrigir uma vulnerabilidade de segurança percebida nas CPUs descritas. Os processadores VIA são renomados por seu baixo consumo de energia e excelência em designs embarcados; acreditamos que a funcionalidade descrita foi criada de boa fé como um recurso útil para o mercado embarcado, e foi deixada ativada involuntariamente em algumas gerações iniciais do processador. Nenhuma intenção maliciosa está implícita.
project:rosenbridge é um esforço de pesquisa de Christopher Domas (@xoreaxeaxeax).