Modo de fabricação Intel ME - uma ameaça oculta ou o que está por trás da vulnerabilidade CVE-2018-4251 no MacBook



O princípio de “ segurança através da obscuridade ” tem sido criticado por especialistas há vários anos, mas isso não impede que grandes fabricantes de eletrônicos pretendam proteger a propriedade intelectual para exigir a assinatura de acordos de confidencialidade para receber documentação técnica. A situação está se deteriorando devido à crescente complexidade dos microcircuitos e à integração de vários firmware proprietários neles. Na verdade, isso torna impossível analisar essas plataformas para pesquisadores independentes, o que coloca em risco usuários comuns e fabricantes de equipamentos.

Um exemplo é a tecnologia Intel Management Engine (Intel ME), bem como suas versões para plataformas servidor (Intel SPS) e móvel (Intel TXE) (consulte [5] , [6] para obter mais informações sobre essa tecnologia. Neste artigo, informaremos como usar comandos não documentados (se o termo "documentado" é geralmente aplicável ao Intel ME), você pode sobrescrever a memória flash SPI e implementar o pior cenário - exploração local de uma vulnerabilidade no ME (INTEL-SA-00086) .A raiz desse problema foi o modo de operação não documentado do Intel ME - Modo de fabricação.

O que é o modo de fabricação


Modo de fabricação Intel ME - modo de operação de serviço projetado para configurar, configurar e testar a plataforma final no estágio de produção; ele deve ser desligado antes que o equipamento seja colocado à venda e enviado ao usuário. Nem esse modo nem seus riscos potenciais são descritos na documentação pública da Intel. Um usuário comum não pode desativá-lo sozinho, pois o utilitário para gerenciá-lo no pacote Intel ME System Tools não está oficialmente disponível. Observe que nenhuma proteção de software pode proteger o usuário se este modo estiver ativado, ou pelo menos notificá-lo sobre isso. Mesmo o utilitário Chipsec [2] , projetado especificamente para detectar erros de configuração de chipset e processador no nível de firmware UEFI (em particular, configuração incorreta dos direitos de acesso às regiões flash SPI), não sabe nada sobre o Modo de fabricação Intel.

Este modo permite definir parâmetros críticos da plataforma armazenados na memória de gravação única (FUSES). Um exemplo desses parâmetros que são "conectados" no FUSES são os parâmetros do BootGuard (modo, políticas, soma de verificação da chave de assinatura digital para os módulos ACM e UEFI). Alguns deles são chamados de FPF (fusíveis programáveis ​​em campo). A lista de FPFs que podem ser gravados em FUSES (incompletos, de fato, vários FPFs não podem ser definidos diretamente) pode ser obtida através do utilitário FPT (Flash Programming Tool) do pacote Intel ME System Tools.



Fig 1. O resultado da opção –FPFs do utilitário FPT

Deve-se notar que os FPFs representam apenas parte da matriz total do FUSE e a maior parte dessa memória é usada pela própria Intel para armazenar muitos parâmetros da plataforma. Por exemplo, parte do espaço dessa matriz é chamada de fusíveis IP e destina-se a armazenar os parâmetros de configuração de módulos de hardware individuais (propriedade inteligente). Portanto, o dispositivo DFx Aggregator especial armazena no FUSE um sinal de que a plataforma é serial ou de teste.

Além do FPF, no modo de fabricação, o fabricante do equipamento pode definir os parâmetros de firmware do Intel ME, que são armazenados no sistema de arquivos de firmware interno - MFS, na mídia flash SPI. Esses parâmetros podem ser alterados em caso de reprogramação do flash SPI. Eles são chamados CVARs (NVARs configuráveis, variáveis ​​nomeadas).

Para instalar CVARs, o módulo de firmware Intel ME, mca_server, é responsável. MCA é a abreviação de Manufacture-Line Configuration Architecture, o nome comum para o processo de configuração da plataforma durante a fase de fabricação. CVARs, como FPFs, podem ser definidos e lidos usando FPTs.



Figura 2. Lista de CVARs emitidas pelo utilitário FPT para a plataforma Broxton P

A lista de CVARs varia de acordo com a plataforma e a versão do firmware do Intel ME. Para chipsets compatíveis com a tecnologia Intel AMT, uma dessas variáveis ​​é a senha para inserir a MEBx (extensão do BIOS da ME).

A instalação de FPFs e quase todas as variáveis ​​CVARs é possível apenas se o firmware Intel ME operar no modo de fabricação. O processo de instalação dos FPFs é dividido em dois estágios: configuração dos FPFs (armazenados na memória temporária) e transferência dos FPFs para uma matriz de fusíveis. Ao mesmo tempo, o primeiro estágio é possível apenas no modo de fabricação, e a real "queima" ocorre automaticamente, após sair do modo de fabricação, se durante a operação nesse modo o fabricante definir valores de FPF e, ao mesmo tempo, a faixa correspondente nunca foi registrada na matriz de fusão. Portanto, se o sistema operar no modo de fabricação, as variáveis ​​FPF provavelmente não serão inicializadas.

Um sinal de desabilitação do Modo de Manufatura é armazenado no arquivo / home / mca / eom no MFS; portanto, ao reescrever o SPI flash com firmware com o sistema de arquivos base (para obter mais detalhes, consulte [9] ), a plataforma pode funcionar novamente no Modo de Manufatura (mas não será possível sobrescrever FUSES). .

Chave pública OEM


Portanto, o procedimento para configurar plataformas Intel é bastante complexo e consiste em vários estágios. Se o fabricante do equipamento violou ou alterou a sequência, a plataforma está em sério risco. Mesmo que o Modo de fabricação fosse concluído, o fabricante não poderia escrever FUSES, o que permitiria que um invasor fizesse isso por ele, anotando seus valores em vez da chave para assinar o código de inicialização dos módulos BootGuard (ACM) e UEFI, permitindo que a plataforma inicialize apenas com seu código malicioso, e em uma base contínua. Isso levará a uma perda irrecuperável de equipamentos, uma vez que a chave fraudulenta será registrada na memória permanente, para sempre (detalhes desse ataque podem ser encontrados no estudo de proteção de rootkits: Intel BootGuard por Alexander Ermolov [8] ).

Em novos sistemas (Apollo Lake, Gemini Lake, Cannon Point) no FPF, não apenas a chave do BootGuard é armazenada, mas também a chave pública OEM (ou melhor, SHA-256 da chave pública RSA OEM), na qual se baseiam vários mecanismos de proteção ME. Por exemplo, uma seção flash SPI especial chamada SMIP (Signed Master Image Profile) armazena as correias PCH específicas do fabricante (configuração de hardware PCH). Esta seção é assinada em uma chave, SHA-256, a partir da qual é colocada em um arquivo especial no SPI flash. Esse arquivo é chamado oem.key, localizado na seção FTPR e contém várias chaves públicas fornecidas pelo OEM para assinar uma variedade de dados. Aqui está a lista completa dos conjuntos de dados assinados pelo fabricante, cada um em uma chave exclusiva, para a plataforma Cannon Point:



Figura 3. Lista de dados assinados da plataforma CNP do OEM

O próprio arquivo oem.key é assinado pela chave raiz compartilhada do OEM, cuja quantidade de hash deve ser registrada nos FPFs.



Figura 4. Assinatura OEM

Ignorar bloqueio de gravação na região ME


Até recentemente (antes do Intel Apollo Lake), o firmware do Intel ME estava em uma região SPI separada, que tinha direitos de acesso independentes para CPU, GBE e ME. Assim, com a configuração correta dos atributos de acesso por parte da CPU (sistema principal), não foi possível ler nem escrever o firmware ME. No entanto, os controladores SPI do chipset Intel modernos têm um mecanismo especial de Master Grant. Essa tecnologia atribui a cada mestre SPI uma parte estritamente definida do flash SPI, que possui sua região, independentemente dos direitos de acesso especificados no descritor SPI. Cada mestre tem a oportunidade de fornecer acesso (para leitura ou escrita) à sua região (e somente à sua) a outro mestre, como ele deseja.



Figura 5. Trecho da documentação da Intel que descreve o SPI Master Grant

Assim, mesmo que o host especifique uma proibição de acesso à região ME SPI a partir do host, o ME ainda poderá fornecer acesso aos seus dados. Em nossa opinião, isso foi feito para permitir a atualização do firmware do Intel ME ignorando o algoritmo padrão.

Substituição da proteção contra flash da região Host ME


No firmware Intel ME, um comando HECI especial é implementado, o que permite abrir o acesso de gravação à região SPI ME a partir da CPU. É chamado de HMR FPO (Substituição da proteção contra flash da região Host ME). Em um de nossos estudos anteriores, descrevemos esse comando em detalhes [5]. Ela tem vários recursos.

Após receber o comando HMR FPO, o firmware abrirá o acesso à sua região somente após uma reinicialização. O próprio ME também oferece proteção: o comando é aceito apenas durante o período de execução do UEFI BIOS, até o momento do chamado fim do post (EOP). EOP é outro comando HECI que o UEFI BIOS envia antes de transferir o controle para o sistema operacional (ExitBootServices). Em algumas configurações do BIOS, você pode encontrar uma opção que permite o envio do comando HMRFPO ao EOP.



Figura 6. Abrindo a região ME no BIOS

Após receber o EOP, o firmware do ME ignora o HMR FPO, retornando o status correspondente. Mas isso só acontece após a conclusão do modo de fabricação . Assim, o firmware ME no modo de fabricação aceita HMR FPO a qualquer momento, independentemente do fim do post . Se o fabricante não fechou o Modo de fabricação, um invasor (formalmente falando, isso exige direitos de administrador, mas mesmo o kernel do SO não pode substituir o firmware do ME inicialmente) pode alterar o firmware do ME a qualquer momento. Nesta fase, o invasor pode substituir a imagem ME, por exemplo, para explorar a vulnerabilidade INTEL-SA-00086. Isso aumenta a necessidade de reinicialização, mas isso não é um obstáculo em quase todas as plataformas, exceto no MacBook. É nos computadores Apple que há uma verificação adicional no UEFI, que é realizada no momento do início e impede que o sistema seja iniciado se a região ME for aberta usando o HMRFPO. No entanto, como mostraremos mais adiante, esse mecanismo de proteção será superado se o firmware do ME operar no modo de fabricação.

Reiniciando o ME sem reiniciar a CPU principal


Nos computadores modernos, existem várias opções para reiniciar a plataforma. Entre eles estão documentados: reinicialização global e somente a CPU principal (sem reiniciar o ME). No entanto, se houver uma maneira de reiniciar o ME sem reiniciar a CPU principal (depois de executar também o comando HMRFPO), o acesso à região será aberto e o sistema principal continuará funcionando.



Figura 7. Reinicie o controle de tipo

Examinando os módulos de firmware internos do ME, descobrimos que existe um comando HECI ( "80 06 00 07 00 00 0b 00 00 00 03 00" , para obter mais detalhes sobre o envio de comandos, consulte [ 5 ]) para reinicializar apenas (!) O kernel do Intel ME, que no modo de fabricação também pode ser enviado a qualquer momento, mesmo após o EOP.



Figura 8. Lista do desmontador de uma função que processa os comandos de recarga ME HECI

Assim, o atacante, depois de enviar esses dois comandos HECI, abre a região ME e pode gravar quaisquer dados lá sem reiniciar a plataforma . Nesse caso, não importa o que o descritor SPI contenha, ou seja, os atributos de proteção corretos das regiões SPI não protegem o firmware do ME de alterações se o sistema operar no modo de fabricação.

Estudo de caso: Vulnerabilidade CVE-2018-4251


Analisamos várias plataformas de diferentes fabricantes. Entre eles, laptops Lenovo e Apple MacBook Pr®. Nos computadores examinados da linha Yoga e ThinkPad, não encontramos nenhum problema associado ao Modo de Fabricação, mas os laptops da Apple baseados nos chipsets Intel operam no Modo de Fabricação . Depois de transferir essas informações para a Apple, esse erro (CVE-2018-4251) foi corrigido na atualização do sistema operacional macOS High Sierra 10.13.5.

Operação local INTEL-SA-00086


Portanto, usando a vulnerabilidade CVE-2018-4251, um invasor pode escrever versões antigas do firmware ME contendo a vulnerabilidade INTEL-SA-00086 e, ao mesmo tempo, não precisa de um programador SPI ou de acesso ao jumper HDA_SDO (ou seja, acesso físico). Assim, o vetor mais perigoso - local - dessa vulnerabilidade é realizado (a execução de código arbitrário no firmware do ME). Vale ressaltar que nas explicações do boletim de segurança INTEL-SA-00086, a Intel não menciona o Modo de fabricação aberto como um meio de explorar essa vulnerabilidade localmente, sem acesso físico, mas apenas diz que a exploração local só é possível se o acesso às regiões SPI estiver incorretamente configurado isso não é verdade. Para proteger os usuários, decidimos descrever como verificar a disponibilidade do Modo de Fabricação e como desativá-lo.

Como se proteger


O pacote de utilitários de sistema para desenvolvedores de equipamentos baseados em chipsets e processadores Intel (Intel System Tools) inclui o utilitário MEInfo (TXEInfo, SPSInfo para plataformas móveis e de servidor, respectivamente), projetado para receber informações avançadas de diagnóstico sobre o estado atual do firmware do Management Engine e toda a plataforma como um todo. Demonstramos esse utilitário em um de nossos estudos anteriores sobre a desativação do ME e o modo HAP (High Assurance Platform) não documentado [ 6 ]. Este utilitário, chamado com o sinalizador –FWSTS, fornece uma descrição detalhada dos registros de status HECI e relata o status do Modo de Manufatura (o quarto bit do registro de status do FWSTS é definido para indicar que o Modo de Manufatura está ativo).



Figura 9. Exemplo de saída do utilitário MEInfo

Também desenvolvemos um programa [ 7 ], com o qual você pode verificar o status do Modo de fabricação, se o usuário não tiver acesso às Ferramentas de sistema Intel ME por qualquer motivo.



Figura 10. Um exemplo do script mmdetect

Surge a questão de como concluir o modo de fabricação de forma independente, se o fabricante não fez isso. Para concluir o Modo de fabricação, o utilitário FPT possui uma opção especial –CLOSEMNF, que, além de seu objetivo principal, também permite definir os direitos de acesso recomendados para as regiões flash SPI no descritor.



Figura 11. Resultado do utilitário FTP com a opção –CLOSEMNF

Neste exemplo, usamos o parâmetro NO da opção –CLOSEMNF para não reiniciar a plataforma, que é executada por padrão imediatamente após a conclusão do Modo de Fabricação.

Conclusão


Nossa pesquisa mostra que o problema do modo de fabricação do firmware Intel ME existe, e mesmo grandes fabricantes como a Apple são capazes de cometer erros ao configurar plataformas Intel. O pior de tudo é que não há informações públicas sobre esse assunto e os usuários finais nem sequer estão cientes de um problema tão sério que pode levar à perda de informações confidenciais, ao surgimento de rootkits não excluídos e à desativação irrevogável de equipamentos.

Além disso, suspeitamos que a capacidade de reiniciar o ME sem reiniciar a CPU principal pode levar a outros problemas de segurança devido aos estados BIOS / UEFI e ME fora de sincronia.

Autores: Mark Ermolov e Maxim Goryachiy

[1] Atualização crítica do firmware do mecanismo de gerenciamento Intel, Intel-SA-00086
[2] GitHub - chipsec / chipsec: plataforma de avaliação de segurança da plataforma
[4] Firmware OpenSource rápido, seguro e flexível, Coreboot
[5] Mark Ermolov, Maxim Goryachy, Como se tornar o único proprietário do seu PC, PHDays VI, 2016
[6] Mark Ermolov, Maxim Goryachy, desabilitando o Intel ME 11 via modo não documentado, blog da Positive Technologies
[7] Ferramentas de detecção do modo de fabricação Intel ME
[8] Alexander Ermolov, Protegendo os rootkits: Intel BootGuard
[9] Dmitry Sklyarov, Intel ME: Sistema de arquivos Flash. Explicado

Source: https://habr.com/ru/post/pt425105/


All Articles