Uma nova ferramenta permite a decodificação do microcódigo Intel

O projeto se chama Microcode Decryptor, e permite fazer exatamente o que o nome sugere: é uma ferramenta, composta por três scripts Python e disponível no GitHub , que permite decodificar o microcódigo de alguns processadores Intel como Atom, Pentium e Celeron baseado nas microarquiteturas Goldmont e Goldmont Plus. Isso abre as portas para diferentes cenários, como entender como a gigante de Santa Clara implementou determinados recursos do processador ou implementou várias correções e recursos de segurança.

Intel

O que é microcódigo Intel?

Nos cursos universitários clássicos dedicados a arquiteturas de computadores, ensina-se que dentro de um processador existe um decodificador de instruções (decodificador) e uma unidade de controle . A tarefa do decodificador e da unidade de controle é, por exemplo, receber uma instrução (do usuário) como ADD $ R3, $ R1, $ R2 e decodificá-la da seguinte forma: o arquivo de registro acessa os valores contidos em $ R1 e $ R2 e os fornece como saída nas duas portas de leitura do próprio arquivo de registro. A porta de escrita do arquivo registrador é habilitada em $ R3 e o valor de escrita será a saída da ALU (Airthmetic Logic Unit) que entretanto foi configurada pelo decodificador para realizar um add (ADD).

Processadores modernos, no entanto, não são tão simples. O exemplo acima vê um tipo de unidade de controle definida como cabeada. Isso significa que o comportamento da unidade de controle é escrito em hardware e, portanto, para cada instrução, o comportamento de cada saída da própria unidade de controle é definido de forma fixa (em hardware). Os processadores modernos, por outro lado, baseiam sua operação em uma unidade de controle baseada em microcódigo : cada instrução do usuário corresponde a uma série de instruções de microcódigo (microinstruções) que garantem que as coisas certas aconteçam no momento certo.

O objetivo é, portanto, capturar o comportamento de instruções muito mais complexas (aquelas visíveis para o usuário programador) com um conjunto de instruções muito mais simples. Na verdade, o microcódigo foi originalmente desenvolvido como um método mais simples de desenvolver lógica de controle para um computador. Embora as unidades de controle com fio sejam muito eficientes, a necessidade de instruções complexas tornou-as difíceis de projetar e depurar. O microcódigo simplificou o trabalho, permitindo que grande parte do comportamento do processador e do modelo de programação fosse definido por meio de rotinas de microprograma em vez de circuitos dedicados. Mesmo no final do processo de design, o microcódigo pode ser facilmente alterado, enquanto os designs de CPU com fio eram muito complicados de mudar. Portanto, isso facilitou muito o design da CPU.

Assim, responder à pergunta clássica "mas os processadores Intel são CISC ou RISC" fica mais fácil: os processadores Intel oferecem um Conjunto de Instruções CISC, mas internamente essas instruções são implementadas com uma série de microinstruções RISC .

A partir de meados da década de 1990, o microcódigo pode ser atualizado pelo sistema operacional ou pelo firmware do BIOS para contornar os bugs encontrados nas CPUs após o lançamento . Isso traz várias vantagens: permite a atualização em campo (in-field) sem ter que fazer recall do produto após um bug encontrado no processador.

A quais novos cenários essa ferramenta leva?

Mas voltando ao objetivo principal do artigo: como os desenvolvedores da ferramenta conseguiram obter o microcódigo? Aqui, ele é realmente criptografado, mas o trio de pesquisadores identificou uma vulnerabilidade nos chipsets Intel que permite ativar um modo de depuração não documentado, chamado "Red Unlock", que mais tarde permitiu encontrar a chave de descriptografia para extrair e descriptografar o microcódigo .

No entanto, felizmente, isso não abre a porta para quaisquer alterações maliciosas por parte mal-intencionada, pois o microcódigo possui uma assinatura RSA para proteção de integridade e, como resultado, o processador se recusaria a executá-lo, visto que a assinatura computada em novos microcódigos possíveis não corresponde ao original. No entanto, isso abre as portas para pesquisar arquiteturas x86 e entender como a Intel mitigou a vulnerabilidade Spectre ou explorar a implementação das tecnologias Intel TXT, SGX e VT-x .

A Intel imediatamente pegou a bola:

“A capacidade dos pesquisadores de analisar o microcódigo pode permitir a descoberta de novas vulnerabilidades. Como esse microcódigo foi exposto, a Intel convida os pesquisadores a participar do programa de recompensas de bugs de microcódigo caso problemas sejam descobertos."

O artigo Uma nova ferramenta que permite a decodificação do microcódigo da Intel foi escrito em: Tech CuE | Engenharia de close-up .