Arranque Seguro e UEFI

Unifed Extensible Firmware Interface (UEFI) ou em Português, Interface Unificada de Firmware Extensível, é uma especificação desenhada para substituir o subsistema BIOS (Basic Input Output System) que se encontra presente em todos os computadores. A BIOS é uma peça essencial para coisas tão elementares como instalar um sistema operativo quando ainda não existe nenhum SO instalado.
A necessidade de evolução da BIOS nasceu, tal como quase tudo na indústria, de limitações da plataforma anterior, como por exemplo o limite de endereçamento direto de memória, o aspeto gráfico ou questões de atualização. Esta evolução começou a materializar-se no início do século mas foi só a partir do lançamento do Windows 8, quando a Microsoft indexou a obtenção do logotipo de certificação a uma funcionalidade designada de “Arranque Seguro” (ou “Secure Boot” em Inglês) que se começou a falar sobre UEFI.

Neste artigo vou explicar o que é o Arranque Seguro e como é que o mesmo funciona.

image

Imagem 1 – Arquitetura integridade da plataforma Windows 8

Arranque Seguro (Safe Boot)

O Arranque Seguro foi desenvolvido para impedir malware de se infiltrar na máquina antes do próprio sistema operativo iniciar a sequência de arranque. Se um malware for capaz de se carregar antes do sistema operativo arrancar, o mesmo passa a ter a capacidade de contornar e evitar qualquer medida de segurança e ao mesmo tempo tornar-se invisível (recomendo leitura do artigo Rootkits).

O processo de Arranque Seguro segue o princípio das assinaturas onde apenas o software assinado e aprovado pode ser executado. Se uma peça de software, seja ela sistema operativo, ROMs ou firmware, não se encontrar assinada e aprovada a execução da mesma é recusada.

A primeira peça a ser assinada e autorizada é o Gestor de Arranque do Windows que desta forma impede a partir daquele momento a execução de qualquer outro software antes dele que não se encontre devidamente assinado e autorizado.

image

Imagem 2 – Percurso de arranque com a BIOS no modo Legado

image

Imagem 3 – Percurso de Arranque Seguro com via UEFI

Modo de funcionamento

Internamente o UEFI está dividido em três áreas: Uma que contém a lista de signatários e assinaturas das aplicações autorizadas, conhecida por “db”, uma outra área com o oposto, ou seja, com a lista de signatários não confiáveis ou revogados e aplicações não autorizadas, conhecida por “dbx”, e por último uma área que é usada para atualizar a lista de assinaturas autorizadas e revogadas, conhecida por “KEK”.

Depois de o computador ser ligado, as bases de dados de assinaturas são comparadas com a chave de plataforma. Se o firmware não for confiável, o firmware UEFI tem de iniciar o processo de recuperação específico do fabricante para restaurar um firmware confiável. Se houver um problema com o Gestor de Arranque do Windows, o firmware tentará usar uma cópia de segurança do Gestor de Arranque do Windows. Se isto também falhar, o firmware tem de iniciar o processo de remediação específico do fabricante. Após o início da execução do Gestor de Arranque do Windows, se houver um problema com os controladores ou com o núcleo NTOS, é carregado o Ambiente de Recuperação do Windows (Windows RE), para que seja possível recuperar a imagem destes controladores ou do núcleo. Em seguida, o Windows carrega o software antimalware. Finalmente, o Windows carrega os outros controladores do núcleo e inicializa os processos em modo de utilizador.

clip_image001

Imagem 4 – Bases de dados de segurança para os certificados

Aspetos negativos do Arranque Seguro

Uma das questões levantadas por esta implementação está relacionada com o facto de uma vez o Windows 8 instalado na máquina apenas versões futuras do sistema operativo Windows poderão ser instaladas. Se tentar numa máquina com UEFI/Windows 8 instalar um Linux vai verificar que o mesmo não é possível porque o arranque do boot loader do Linux não vai ser autorizado a arrancar.

Da mesma forma que é possível impedir outros boot loaders de arrancarem é possível instrumentar o arranque seguro para por exemplo impedir a instalação do Windows Server numa máquina que tenha sido vendida com o propósito de correr apenas o Windows 8.

Para aumentar o grau de complexidade deste tema podemos ainda adicionar os seguintes factos:

  • Para se poder gerar chaves válidas, o boot loader precisa ser assinado por uma CA de confiança… este processo é simples numa empresa que produza código fechado mas difícil de se conseguir com código aberto como é o caso do Linux.
  • A maior parte dos fabricantes não incluíram nas placas mães a funcionalidade de desligar o Arranque Seguro fazendo com que seja na maior parte dos casos um processo irreversível.

Como determinar se o Windows está arrancar em modo BIOS ou UEFI

Existem diversas técnicas para determinar que modo uma instalação do Windows está a usar para arrancar. Abaixo listo apenas dois desses métodos.

Método #1

1. Executar o comando “msinfo32”

2. Na janela “Informações de sistema” o valor do campo “Modo de BIOS” indica o modo de arranque do Windows

clip_image003

Imagem 6 – Janela Informações de Sistema mostrando que a BIOS se encontra em modo Legado

Método #2

1. Executar o comando “notepad C:\Windows\Panther\setupact.log”

2. No Bloco de Notas pesquisar por “Detected boot environment”

clip_image005

Imagem 7 – Entrada do ficheiro setupact.log mostrando que a BIOS se encontra em modo Legado

Consultório: Após atualizar para o Windows 8.1 aparece a marca de água a dizer que o Secure Boot (Inicialização Segura) não se encontra configurado corretamente

Na maior parte dos casos a forma de ultrapassar esta situação passa por desligar na BIOS o modo legado (legacy mode) da mesma e ativar o Secure Boot. Se a BIOS não apresentar esta opção o primeiro passo a fazer é procurar no sítio do fabricante se existem atualizações de firmware para a BIOS que possam ser aplicadas ao sistema, caso existam, devem aplicar-se, caso contrário pode aplicar-se a correção descrita no artigo “Actualização remove a marca d’água “O Windows 8.1 SecureBoot não está configurado correctamente” no ponto 8.1 do Windows e Windows Server R2 de 2012”.

Em alternativa à aplicação da correção, pode desativar-se o LUA (Limited User Account) no registry, reiniciar o computador, verificar que a marca d’água já não aparece e voltar a ativar o LUA. Para efetuar esta operação deve alterar-se o valor da chave EnableLUA de 1 (ativo) para 0 (desativo) que se encontra em:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System

image

Chave do registo para ativar o LUA

Recursos adicionais:

Artigo sobre Rootkits: https://ojmoura.wordpress.com/2011/06/13/rootkits/

Informação sobre “UEFI Secure Booting”: http://mjg59.dreamwidth.org/5552.html

Artigo da equipa Windows sobre “Protecting the pre-OS environment with UEFI”: http://blogs.msdn.com/b/b8/archive/2011/09/22/protecting-the-pre-os-environment-with-uefi.aspx

Artigo da equipa Windows sobre “Reengineering the Windows boot experience”: http://blogs.msdn.com/b/b8/archive/2011/09/20/reengineering-the-windows-boot-experience.aspx

Página sobre o processo de certificação de hardware Windows: http://msdn.microsoft.com/en-us/windows/hardware/gg463010

Informações sobre UEFI no Wikipedia: http://en.wikipedia.org/wiki/UEFI

Artigo técnico com a correção para remover a marca d’agua SecureBoot: http://support.microsoft.com/kb/2902864/pt-pt