Protegendo o ambiente pré-sistema operacional com o UEFI

Criando o Windows 8

Nos bastidores com a equipe de engenharia do Windows

Protegendo o ambiente pré-sistema operacional com o UEFI

  • Comments 0

Surgiram comentários sobre a maneira como a Microsoft implementou a inicialização segura e, infelizmente, esses comentários acabaram representando circunstâncias incorretas. Portanto, usaremos esta postagem para descrever mais detalhadamente como a UEFI habilita a inicialização segura e as opções disponíveis aos fabricantes de PC. O mais importante é entender que estamos introduzindo recursos que não abrem mão da segurança que os clientes buscam e, ao mesmo tempo, mantêm disponível o controle completo sobre o PC. Tony Mangefeste, da nossa equipe de ecossistema, foi o autor desta postagem. --Steven

Um breve resumo

  • A UEFI permite ao firmware implementar uma política de segurança
  • A inicialização segura é um protocolo da UEFI. Ela não é um recurso do Windows 8
  • A inicialização segura da UEFI é parte da arquitetura de inicialização segura do Windows 8
  • O Windows 8 utiliza a inicialização segura para garantir que os ambientes pré-sistema operacional estejam seguros
  • A inicialização segura não “bloqueia” os carregadores do sistema operacional, mas é uma política que permite ao firmware validar componentes de autenticação
  • Os OEMs (fabricantes originais do equipamento) podem personalizar seus firmwares para atender às necessidades de seus clientes, personalizando o nível de gerenciamento de políticas e certificados de suas plataformas
  • A Microsoft não autoriza nem controla as configurações no firmware do PC que controla ou habilita a inicialização segura de qualquer sistema operacional que não seja o Windows

A visão global – sem abrir mão da segurança

O protocolo de inicialização segura da UEFI é a base de uma abordagem arquitetural neutra para a segurança da plataforma e do firmware. Com base no processo de PKI (infraestrutura de chave pública), que valida imagens de firmware para que elas possam ser executadas, a inicialização segura ajuda a reduzir o risco de ataques do carregador de inicialização. A Microsoft conta com esse protocolo no Windows 8 para melhorar a segurança de plataforma para nossos clientes.

 Diagrama da arquitetura de integridade da Plataforma Windows 8: 1. A inicialização segura evita a execução de um carregador de sistema operacional desconhecido. 2. O kernel inicia os drivers do ELAM (Early Launch Anti-Malware) primeiro e executa a política para drivers e aplicativos de terceiros. 3.  As medidas do estado inicial do sistema foram gravadas no TPM durante a inicialização. 4. Para provar que um cliente é seguro, o software de antimalware pode citar medidas de TPM para um verificador remoto.
Figura 1 – Arquitetura de integridade da plataforma

A Microsoft está trabalhando com os parceiros para garantir que a inicialização segura ofereça uma excelente experiência de segurança para todos os clientes. A Microsoft dá suporte aos OEMs que oferecem flexibilidade para decidir quem gerencia os certificados de segurança, como permitir que os clientes importem e gerenciem esses certificados e como gerenciar a inicialização segura. Acreditamos que é importante apoiar essa flexibilidade dos OEMs e permitir que nossos clientes decidam como gerenciar seus sistemas.

Para clientes do Windows, a Microsoft está usando o programa de Certificação do Windows para garantir que: os sistemas vendidos com o Windows 8 tenham a inicialização segura habilitada por padrão; o firmware não permita um controle programático da inicialização segura (para evitar que malwares desabilitem políticas de segurança em firmwares); os OEMs evitem tentativas não autorizadas de atualizar o firmware que poderiam comprometer a integridade do sistema.

A maioria dessas políticas não é nova para o firmware da UEFI, e a maioria dos PCs de hoje tem algum tipo de validação de firmware. Até mesmo o suporte herdado, como no caso de senhas BIOS, é uma forma de inicialização segura que está sob o controle de OEMs e do usuário final há anos. No entanto, com a inicialização segura e a UEFI, a indústria e a Microsoft estão se aperfeiçoando para criar uma maior integridade de sistemas e fornecer aos clientes um alto nível de proteção contra uma classe de ameaça crescente.

O que é a UEFI?

A UEFI (Unified Extensible Firmware Interface, Interface de Firmware Extensível Unificada) é gerenciada por um fórum da UEFI, um conjunto de chipsets, hardware, sistema, firmware e fornecedores de sistemas operacionais. O fórum mantém especificações, ferramentas de testes e implementações de referência que são usadas em muitos PCs UEFI. A Microsoft é um membro do conselho desse fórum. O fórum está aberto a qualquer pessoa ou empresa que queira ingressar, sem nenhum custo.

A UEFI define a próxima geração de interface de firmware para o seu computador pessoal. O firmware do sistema BIOS, originalmente escrito em assembly e utilizando interrupções de software para E/S, tem definido o ecossistema do PC desde sua origem. No entanto, alterações no mercado da computação têm pavimentado o caminho para que uma definição de “firmware moderno” lidere a próxima geração de tablets e dispositivos.

A intenção da UEFI é definir um padrão de comunicação entre o sistema operacional e o firmware da plataforma durante o processo de inicialização. Antes da UEFI, o principal mecanismo de comunicação com o hardware durante o processo de inicialização era a interrupção do software. Os PCs modernos são capazes de desempenhar um bloqueio de E/S mais rápido e eficiente entre hardware e software, e a UEFI permite que os designs utilizem todo o potencial de seu hardware.

A UEFI permite um design de firmware modulado que possibilita aos desenvolvedores de hardware e de sistema uma maior flexibilidade ao desenvolver firmware para os ambientes de computação modernos mais exigentes. Enquanto a E/S está limitada por interrupções de software, a UEFI promove o conceito de uma codificação padrão de arquitetura neutra com base em eventos.

O que é a inicialização segura?

A UEFI tem um processo de validação de firmware, chamado de inicialização segura, que é definido no Capítulo 27 da especificação do UEFI 2.3.1. A inicialização segura define como um firmware de plataforma gerencia certificados de segurança, validação de firmware e uma definição da interface (protocolo) entre o firmware e o sistema operacional.

A arquitetura de integridade da plataforma da Microsoft cria uma raiz de confiança com o firmware da plataforma usando a inicialização segura da UEFI e certificados armazenados no firmware. Uma tendência crescente na evolução de malware exploits é apontar o caminho da inicialização como um vetor de ataque preferencial. É difícil se defender dessa classe de ataques, uma vez que produtos antimalware podem ser desabilitados por software mal-intencionado, que impede o carregamento completo. Com a arquitetura de inicialização segura do Windows 8 e o estabelecimento de uma raiz de confiança, o cliente fica protegido da execução de códigos mal-intencionados no caminho da inicialização ao garantir que somente os códigos e carregadores de inicialização assinados, certificados e “reconhecidos como bons” sejam executados antes que o sistema operacional carregue.

Na maioria dos PCs de hoje, o ambiente pré-sistema operacional fica vulnerável a ataques ao redirecionar a entrega do carregador de inicialização a possíveis carregadores mal-intencionados. Esses carregadores continuariam não detectados pelas medidas de segurança do sistema operacional e de software antimalware.

Processos de inicialização existente: BIOS > Qualquer código de carregador do sistema operacional > Início do sistema operacional
Figura 2 - Caminho de inicialização do BIOS herdado

O Windows 8 trata dessa vulnerabilidade da inicialização segura da UEFI e utiliza a política presente no firmware junto com certificados para garantir que somente os componentes corretamente assinados e autenticados tenham permissão para serem executados.

Inicialização segura no Windows 8: UEFI 2.3.1 nativa > Somente o carregador do sistema operacional verificado > Início do sistema operacional
Figura 3 - Caminho da inicialização segura com a UEFI

A inicialização segura é apenas uma parte da história da Integridade da Plataforma Windows 8. Junto com a UEFI, a estratégia da Microsoft é uma abordagem holística que integra outros produtos de hardware disponíveis para aperfeiçoar ainda mais a segurança da plataforma.

Histórico: como funciona?

A ativação em um PC inicia o processo do código de execução que configura o processador, a memória e os periféricos de hardware em preparação para a execução de um sistema operacional. Esse processo é consistente em todas as plataformas, independentemente das arquiteturas de silicone adjacentes (x86, ARM etc.).

Logo após a ativação do sistema, e antes que ocorra a entrega ao carregador do sistema operacional, o firmware verificará a assinatura do código de firmware existente em periféricos de hardware, como placas de rede, dispositivos de armazenamento ou placas de vídeo. Esse código de dispositivo, chamado de Opção ROMs, continuará o processo de configuração garantindo que os periféricos estejam preparados para a entrega ao sistema operacional.

Nessa parte do processo de inicialização, o firmware verificará se há alguma assinatura inserida no módulo do firmware, como um aplicativo, e se essa assinatura corresponde ao banco de dados de assinaturas no firmware. Só assim esse módulo terá permissão para ser executado. Essas assinaturas estão armazenadas em bancos de dados no firmware. Esses bancos de dados são as listas de “Permitido” e “Não permitido” que determinam se o processo de inicialização pode continuar.

Diagrama mostrando listas de Permitido e listas de Não permitido (hashes de malware) controladas por KEK e certificados de chave de plataforma
Figura 4 - Banco de dados de segurança para certificados

Essa figura representa a hierarquia de assinaturas e chaves em um sistema com inicialização segura. Essa plataforma se mantém segura por uma chave de plataforma que o OEM instala no firmware durante a fabricação. Esse é o processo utilizado hoje na maioria dos sistemas vendidos, sejam eles baseados em UEFI ou em BIOS herdado. (Aplicativos como utilitários de atualização de firmware utilizarão a chave de plataforma para proteger a imagem do firmware.) Outras chaves são usadas pela inicialização segura para proteger o acesso a bancos de dados que armazenam chaves que permitem ou não a execução do firmware.

O banco de dados Permitido contém chaves que representam componentes de firmware confiáveis e, sobretudo, carregadores do sistema operacional. Outro banco de dados contém hashes de malware e firmware e bloqueia a execução desses componentes de malware. A força dessas políticas tem como base firmwares de assinatura que utilizam o Authenticode e a PKI (infraestrutura de chave pública). A PKI é um processo já estabelecido para criação, gerenciamento e revogação de certificados que estabelece confiança durante a troca de informações. A PKI está no centro do modelo de segurança da inicialização segura.

O que é necessário para a inicialização segura?

A inicialização segura exige o firmware que atenda (ou exceda) os requisitos da UEFI revisão 2.3.1. O fórum da UEFI aprovou a última revisão, que atualizou as políticas do Capítulo 27 para aprimorar o protocolo da inicialização segura existente, incluindo: variáveis autenticadas por tempo, chaves mais seguras para criptografia e esclarecimentos sobre como os certificados são armazenados.

O recurso seria mais transparente para o consumidor que compra um PC. O benefício é que os seus sistemas tenham um grau a mais de confiabilidade em caso de ataques do bootkit e rootkit, que têm como alvo as vulnerabilidades de sistema antes dos sistemas operacionais serem carregados, como descritos acima.

Quem está no controle?

No fim das contas, é o cliente que está no comando do PC. A filosofia da Microsoft é fornecer aos clientes, em primeiro lugar, a melhor experiência. E permitir que eles mesmos tomem decisões. Trabalhamos com nosso ecossistema de OEM para fornecer aos clientes essa flexibilidade. Com a segurança que a UEFI oferece com a inicialização segura, a maioria dos clientes terá o sistema protegido contra ataques de carregadores de inicialização. Para os entusiastas que desejam executar sistemas operacionais mais antigos, a opção está disponível para permitir que você tome essa decisão.

Uma demonstração desse controle pode ser encontrada no tablet da Samsung com o Windows 8 Developer Preview oferecido aos participantes da //BUILD/. Na captura de tela abaixo, você notará que desenvolvemos o firmware para permitir que o cliente desabilite a inicialização segura. No entanto, fazer isso tem seus próprios riscos. Os OEMs estão livres para escolher como habilitar esse suporte e poderão personalizar os parâmetros descritos acima, empenhando-se em oferecer proposições de valor único a seus clientes. O Windows simplesmente trabalhou para fornecer um ótimo suporte ao sistema operacional em um cenário que, acreditamos, muitos acharão valioso, sejam consumidores ou clientes corporativos.

Imagem de um console com opções para Configuração de TPM: Enable virtualization [enabled] [Habilitar virtualização (Habilitado)], CSM Support [Disabled] [Suporte a CSM (Desabilitado)], Attempt Secure Boot [Enabled] [Tentar inicialização segura (Habilitado)], Display Rev. Info [Informações de Rev. de Vídeo] - Intel UEFI...
Figura 5 - Configuração de inicialização segura em um PC da Samsung

Tony Mangefeste
Ecossistema