System Guard: Como uma raiz de confiança baseada em hardware ajuda a proteger o Windows

Para proteger recursos críticos, como a pilha de autenticação do Windows, tokens de logon único, a pilha biométrica do Windows Hello e o Virtual Trusted Platform Module, o firmware e o hardware de um sistema devem ser confiáveis.

O System Guard reorganiza os recursos de integridade do sistema existentes do Windows sob o mesmo teto e configura o próximo conjunto de investimentos em segurança do Windows. Ele foi projetado para oferecer estas garantias de segurança:

  • Proteger e manter a integridade do sistema durante a inicialização
  • Validar se a integridade do sistema foi realmente mantida por meio de atestado local e remoto

Manter a integridade do sistema à medida que ele é iniciado

Raiz de confiança estática para medição (SRTM)

Com o Windows 7, um dos meios que os invasores usariam para persistir e evitar a detecção era instalar o que geralmente é chamado de bootkit ou rootkit no sistema. Esse software mal-intencionado seria iniciado antes da inicialização do Windows ou durante o próprio processo de inicialização, permitindo que ele seja iniciado com o nível mais alto de privilégio.

Com o Windows 10 em execução em hardware moderno, uma raiz de confiança baseada em hardware ajuda a garantir que nenhum firmware ou software não autorizado (como um kit de inicialização) possa ser iniciado antes do carregador de inicialização do Windows. Essa raiz de confiança baseada em hardware vem do recurso Inicialização Segura do dispositivo, que faz parte da UEFI (Unified Extensible Firmware Interface). Essa técnica de medição dos componentes UEFI estáticos de inicialização antecipada é chamada de SRTM (Raiz Estática de Confiança para Medição).

Como existem milhares de fornecedores de PC que produzem muitos modelos com diferentes versões do UEFI BIOS, torna-se um número incrivelmente grande de medições SRTM na inicialização. Existem duas técnicas para estabelecer confiança aqui: manter uma lista de medidas SRTM "ruins" conhecidas (também conhecida como lista de bloqueio) ou uma lista de medidas SRTM "boas" conhecidas (também conhecida como lista de permissões).

Cada opção tem uma desvantagem:

  • Uma lista de medições SRTM 'ruins' conhecidas permite que um hacker altere apenas 1 bit em um componente para criar um hash SRTM totalmente novo que precisa ser listado. Isso significa que o fluxo SRTM é inerentemente frágil - uma pequena alteração pode invalidar toda a cadeia de confiança.
  • Uma lista de medições SRTM 'boas' conhecidas requer que cada nova medição de combinação BIOS/PC seja cuidadosamente adicionada, o que é lento. Além disso, uma correção de bug para o código UEFI pode levar muito tempo para ser projetada, compilada, testada, validada e reimplantada.

Lançamento Seguro: a raiz dinâmica da DRTM (confiança para medição)

O Lançamento Seguro do System Guard, introduzido pela primeira vez no Windows 10 versão 1809, tem como objetivo aliviar esses problemas usando uma tecnologia conhecida como DRTM (Raiz Dinâmica de Confiança para Medição). O DRTM permite que o sistema inicialize livremente em código não confiável inicialmente, mas logo depois inicia o sistema em um estado confiável, assumindo o controle de todas as CPUs e forçando-as a usar um caminho de código conhecido e medido. Isso tem a vantagem de permitir que um código UEFI inicial não confiável inicialize o sistema, mas depois ser capaz de fazer a transição com segurança para um estado confiável e medido.

Inicialização Segura do System Guard.

O Secure Launch simplifica o gerenciamento de medições SRTM porque o código de inicialização agora não está relacionado a uma configuração de hardware específica. Isso significa que o número de medições de código válidas é pequeno e atualizações futuras podem ser implantadas de forma mais ampla e rápida.

Proteção do Modo de Gerenciamento do Sistema (SMM)

O Modo de Gerenciamento do Sistema (SMM) é um modo de CPU para fins especiais em microcontroladores x86 que lida com gerenciamento de energia, configuração de hardware, monitoramento térmico e qualquer outra coisa que o fabricante considere útil. Sempre que uma dessas operações do sistema é solicitada, uma SMI (interrupção não mascarável) é invocada em tempo de execução, que executa o código SMM instalado pelo BIOS. O código SMM é executado no nível de privilégio mais alto e é invisível para o sistema operacional, o que o torna um alvo atraente para atividades maliciosas. Mesmo que o Lançamento Seguro do System Guard seja usado para inicialização tardia, o código SMM pode acessar a memória do hipervisor e alterar o hipervisor.

Para se defender contra isso, duas técnicas são usadas:

  • Proteção de paginação para impedir o acesso inadequado a código e dados
  • Supervisão e atestado de hardware SMM

A proteção de paginação pode ser implementada para bloquear determinadas tabelas de código para serem somente leitura para evitar adulteração. Isso impede o acesso a qualquer memória que não tenha sido atribuída.

Um recurso de processador imposto por hardware conhecido como manipulador SMI supervisor pode monitorar o SMM e garantir que ele não acesse nenhuma parte do espaço de endereço que não deveria.

A proteção SMM é criada com base na tecnologia Secure Launch e requer que ela funcione. No futuro, o Windows 10 também medirá o comportamento desse manipulador SMI e atestará que nenhuma memória de propriedade do sistema operacional foi adulterada.

Validando a integridade da plataforma após a execução do Windows (tempo de execução)

Embora o System Guard forneça proteção avançada que ajudará a proteger e manter a integridade da plataforma durante a inicialização e em tempo de execução, a realidade é que devemos aplicar uma mentalidade de "assumir violação" até mesmo às nossas tecnologias de segurança mais sofisticadas. Podemos confiar que as tecnologias estão fazendo seu trabalho com sucesso, mas também precisamos da capacidade de verificar se elas foram bem-sucedidas em atingir seus objetivos. Quanto à integridade da plataforma, não podemos simplesmente confiar na plataforma, que potencialmente pode estar comprometida, para atestar automaticamente seu estado de segurança. Portanto, o System Guard inclui uma série de tecnologias que permitem a análise remota da integridade do dispositivo.

À medida que o Windows é inicializado, uma série de medidas de integridade são feitas pelo System Guard usando o Trusted Platform Module 2.0 (TPM 2.0) do dispositivo. O Início Seguro do System Guard não dá suporte a versões anteriores do TPM, como o TPM 1.2. Esse processo e dados são isolados por hardware longe do Windows para ajudar a garantir que os dados de medição não estejam sujeitos ao tipo de violação que poderia acontecer se a plataforma fosse comprometida. A partir daqui, as medidas podem ser usadas para determinar a integridade do firmware do dispositivo, o estado de configuração de hardware e os componentes relacionados à inicialização do Windows, para citar alguns.

Integridade do tempo de inicialização.

Depois que o sistema é inicializado, o System Guard assina e lacra essas medidas usando o TPM. Mediante solicitação, um sistema de gerenciamento como o Intune ou o Microsoft Configuration Manager pode adquiri-los para análise remota. Se o System Guard indicar que o dispositivo não tem integridade, o sistema de gerenciamento poderá executar uma série de ações, como negar o acesso do dispositivo aos recursos.

Edição do Windows e requisitos de licenciamento

A tabela a seguir lista as edições do Windows que oferecem suporte ao System Guard:

Windows Pro Windows Enterprise Windows Pro Education/SE Windows Education
Sim Sim Sim Sim

Os direitos de licença do System Guard são concedidos pelas seguintes licenças:

Windows Pro/Pro Education/SE Windows Enterprise E3 Windows Enterprise E5 Windows Education A3 Windows Education A5
Sim Sim Sim Sim Sim

Para obter mais informações sobre o licenciamento do Windows, consulte Visão geral do licenciamento do Windows.

Requisitos do sistema para o System Guard

Esse recurso está disponível para os seguintes processadores:

  • Processadores Intel® vPro™ começando com Intel® Coffeelake, Whiskeylake ou silício posterior
  • Processadores AMD® começando com Zen2 ou silício posterior
  • ® Processadores Qualcomm com chipsets SD850 ou posteriores

Requisitos para processadores Intel® vPro™ começando com Intel® Coffeelake, Whiskeylake ou silício posterior

Nome Descrição
CPU de 64 bits Um computador de 64 bits com no mínimo quatro núcleos (processadores lógicos) é necessário para hipervisor e segurança baseada em virtualização (VBS). Para obter mais informações sobre o Hyper-V, consulte Hyper-V no Windows Server 2016 ou Introdução ao Hyper-V no Windows 10. Para obter mais informações sobre o hipervisor, consulte Especificações do hipervisor.
Trusted Platform Module (TPM) 2.0 As plataformas devem dar suporte a um TPM 2.0 discreto. Não há suporte para TPMs integrados/firmware, exceto chips Intel que dão suporte à PTT (Tecnologia de Confiança de Plataforma), que é um tipo de TPM de hardware integrado que atende à especificação TPM 2.0.
Proteção de DMA do Windows As plataformas devem atender à Especificação de Proteção de DMA do Windows (todas as portas DMA externas devem estar desativadas por padrão até que o sistema operacional as ligue explicitamente).
Buffers de comunicação SMM Todos os buffers de comunicação SMM devem ser implementados nos tipos de memória EfiRuntimeServicesData, EfiRuntimeServicesCode, EfiACPIMemoryNVS ou EfiReservedMemoryType.
Tabelas de Página SMM NÃO deve conter nenhum mapeamento para EfiConventionalMemory (por exemplo, nenhuma memória de propriedade do sistema operacional/VMM).
NÃO deve conter nenhum mapeamento para seções de código em EfiRuntimeServicesCode.
NÃO deve ter permissões de execução e gravação para a mesma página
Deve permitir APENAS que as páginas TSEG possam ser marcadas como executáveis e o mapa de memória deve relatar TSEG EfiReservedMemoryType.
O manipulador SMI do BIOS deve ser implementado de forma que as tabelas de páginas SMM sejam bloqueadas em todas as entradas do SMM.
Espera Moderna/Conectada As plataformas devem dar suporte ao Modo de Espera Moderno/Conectado.
Índice AUX do TPM A plataforma deve configurar um índice AUX com índice, atributos e política que corresponda exatamente ao índice AUX especificado no DG TXT com um tamanho de dados de exatamente 104 bytes (para dados AUX SHA256). (NameAlg = SHA256)
As plataformas devem configurar um índice PS (Platform Supplier) com:
  • Exatamente o estilo "TXT PS2" Atributos na criação da seguinte forma:
    • AuthWrite
    • PolicyDelete
    • WriteLocked
    • WriteDefine
    • AuthRead
    • WriteDefine
    • NoDa
    • Escrita por escrito
    • PlatformCreate
  • Uma política exatamente PolicyCommandCode(CC = TPM2_CC_UndefineSpaceSpecial) (SHA256 NameAlg e Policy)
  • Tamanho de exatamente 70 bytes
  • NameAlg = SHA256
  • Além disso, ele deve ter sido inicializado e bloqueado (TPMA_NV_WRITTEN = 1, TPMA_NV_WRITELOCKED = 1) no momento da inicialização do sistema operacional.
Dados de índice PS DataRevocationCounters, SINITMinVersion e PolicyControl devem ser 0x00
Política AUX A política AUX necessária deve ser a seguinte:
  • A = TPM2_PolicyLocality (Localidade 3 & Localidade 4)
  • B = TPM2_PolicyCommandCode (TPM_CC_NV_UndefineSpecial)
  • authPolicy = {A} OR {{A} AND {B}}
  • authPolicy digest = 0xef, 0x9a, 0x26, 0xfc, 0x22, 0xd1, 0xae, 0x8c, 0xec, 0xff, 0x59, 0xe9, 0x48, 0x1a, 0xc1, 0xec, 0x53, 0x3d, 0xbe, 0x22, 0x8b, 0xec, 0x6d, 0x17, 0x93, 0x0f, 0x4c, 0xb2, 0xcc, 0x5b, 0x97, 0x24
Índice TPM NV O firmware da plataforma deve configurar um índice NV do TPM para uso pelo sistema operacional com:
  • Punho: 0x01C101C0
  • Atributos:
    • TPMA_NV_POLICYWRITE
    • TPMA_NV_PPREAD
    • TPMA_NV_OWNERREAD
    • TPMA_NV_AUTHREAD
    • TPMA_NV_POLICYREAD
    • TPMA_NV_NO_DA
    • TPMA_NV_PLATFORMCREATE
    • TPMA_NV_POLICY_DELETE
  • Uma política de:
    • A = TPM2_PolicyAuthorize(MSFT_DRTM_AUTH_BLOB_SigningKey)
    • B = TPM2_PolicyCommandCode(TPM_CC_NV_UndefineSpaceSpecial)
    • authPolicy = {A} OR {{A} AND {B}}
    • Valor de resumo de 0xcb, 0x45, 0xc8, 0x1f, 0xf3, 0x4b, 0xcf, 0x0a, 0xfb, 0x9e, 0x1a, 0x80, 0x29, 0xfa, 0x23, 0x1c, 0x87, 0x27, 0x30, 0x3c, 0x09, 0x22, 0xdc, 0xce, 0x68, 0x4b, 0xe3, 0xdb, 0x81, 0x7c, 0x20 0xe1
Firmware da plataforma O firmware da plataforma deve conter todo o código necessário para executar um lançamento seguro da Intel® Trusted Execution Technology:
  • O Intel® SINIT ACM deve ser transportado no BIOS OEM
  • As plataformas devem ser enviadas com um ACM de produção assinado pelo signatário correto do Intel® ACM de produção para a plataforma
Atualização do firmware da plataforma É recomendável atualizar o firmware do sistema por meio do UpdateCapsule no Windows Update.

Requisitos para processadores AMD® a partir do Zen2 ou silício posterior

Nome Descrição
CPU de 64 bits Um computador de 64 bits com no mínimo quatro núcleos (processadores lógicos) é necessário para hipervisor e segurança baseada em virtualização (VBS). Para obter mais informações sobre o Hyper-V, consulte Hyper-V no Windows Server 2016 ou Introdução ao Hyper-V no Windows 10. Para obter mais informações sobre o hipervisor, consulte Especificações do hipervisor.
Trusted Platform Module (TPM) 2.0 As plataformas devem dar suporte a um TPM 2.0 OU Microsoft Pluton TPM discreto.
Proteção de DMA do Windows As plataformas devem atender à Especificação de Proteção de DMA do Windows (todas as portas DMA externas devem estar desativadas por padrão até que o sistema operacional as ligue explicitamente).
Buffers de comunicação SMM Todos os buffers de comunicação SMM devem ser implementados nos tipos de memória EfiRuntimeServicesData, EfiRuntimeServicesCode, EfiACPIMemoryNVS ou EfiReservedMemoryType.
Tabelas de Página SMM NÃO deve conter nenhum mapeamento para EfiConventionalMemory (por exemplo, nenhuma memória de propriedade do sistema operacional/VMM).
NÃO deve conter nenhum mapeamento para seções de código em EfiRuntimeServicesCode.
NÃO deve ter permissões de execução e gravação para a mesma página
O manipulador SMI do BIOS deve ser implementado de forma que as tabelas de páginas SMM sejam bloqueadas em todas as entradas do SMM.
Espera Moderna/Conectada As plataformas devem dar suporte ao Modo de Espera Moderno/Conectado.
Índice TPM NV O firmware da plataforma deve configurar um índice NV do TPM para uso pelo sistema operacional com:
  • Punho: 0x01C101C0
  • Atributos:
    • TPMA_NV_POLICYWRITE
    • TPMA_NV_PPREAD
    • TPMA_NV_OWNERREAD
    • TPMA_NV_AUTHREAD
    • TPMA_NV_POLICYREAD
    • TPMA_NV_NO_DA
    • TPMA_NV_PLATFORMCREATE
    • TPMA_NV_POLICY_DELETE
  • Uma política de:
    • A = TPM2_PolicyAuthorize(MSFT_DRTM_AUTH_BLOB_SigningKey)
    • B = TPM2_PolicyCommandCode(TPM_CC_NV_UndefineSpaceSpecial)
    • authPolicy = {A} OR {{A} AND {B}}
    • Valor de resumo de 0xcb, 0x45, 0xc8, 0x1f, 0xf3, 0x4b, 0xcf, 0x0a, 0xfb, 0x9e, 0x1a, 0x80, 0x29, 0xfa, 0x23, 0x1c, 0x87, 0x27, 0x30, 0x3c, 0x09, 0x22, 0xdc, 0xce, 0x68, 0x4b, 0xe3, 0xdb, 0x81, 0x7c, 0x20 0xe1
Firmware da plataforma O firmware da plataforma deve conter todo o código necessário para executar o Secure Launch:
  • As plataformas AMD® Secure Launch devem ser fornecidas com o driver AMD® DRTM devnode exposto e o driver AMD® DRTM instalado

A plataforma deve ter a proteção anti-reversão do firmware do processador AMD® Secure habilitada
A plataforma deve ter o AMD® Memory Guard habilitado.
Atualização do firmware da plataforma É recomendável atualizar o firmware do sistema por meio do UpdateCapsule no Windows Update.

Requisitos para processadores Qualcomm® com chipsets SD850 ou posteriores

Nome Descrição
Comunicação do Modo Monitor Todos os buffers de comunicação do Modo de Monitor devem ser implementados nas seções EfiRuntimeServicesData (recomendado), seções de dados de EfiRuntimeServicesCode, conforme descrito pela Tabela de Atributos de Memória, tipos de memória EfiACPIMemoryNVS ou EfiReservedMemoryType
Tabelas de Página do Modo Monitor Todas as tabelas de página do Modo Monitor devem:
  • NÃO contêm mapeamentos para EfiConventionalMemory (por exemplo, nenhuma memória de propriedade do SO/VMM)
  • Eles NÃO devem ter permissões de execução e gravação para a mesma página
  • As plataformas só devem permitir páginas do Modo Monitor marcadas como executáveis
  • O mapa de memória deve relatar o Modo Monitor como EfiReservedMemoryType
  • As plataformas devem fornecer um mecanismo para proteger as tabelas de página do Modo Monitor contra modificação
Espera Moderna/Conectada As plataformas devem dar suporte ao Modo de Espera Moderno/Conectado.
Firmware da plataforma O firmware da plataforma deve conter todo o código necessário para iniciar.
Atualização do firmware da plataforma É recomendável atualizar o firmware do sistema por meio do UpdateCapsule no Windows Update.