Noções básicas sobre a tabela de mitigação de segurança do SMM do Windows (WSMT)

A WSMT (Tabela de Mitigação de Segurança) do Windows SMM é uma tabela ACPI definida pela Microsoft que permite que o firmware do sistema confirme ao sistema operacional que determinadas práticas recomendadas de segurança foram implementadas no software SMM (Modo de Gerenciamento do Sistema). A definição da tabela WSMT é descrita na especificação WMST (Tabela de Mitigações de Segurança) do SMM do Windows.

Segundo plano

O WSMT foi definido para dar melhor suporte a recursos de segurança baseados em Virtualização do Windows. Consulte VBS (segurança baseada em virtualização) para obter mais informações sobre VBS. Como o SMM opera sem o conhecimento ou o controle do sistema operacional, o SMM representa uma superfície de ataque significativa que pode ser aproveitada por código mal-intencionado para comprometer ou contornar as proteções do sistema operacional habilitadas por meio da VBS. Fornecer uma plataforma VBS robusta e segura requer um escrutínio cuidadoso e atualizações prováveis do código SMM pelo OEM para eliminar vulnerabilidades comuns que podem ser exploradas. O WSMT contém sinalizadores que o firmware pode definir para indicar ao sistema operacional quais dessas práticas recomendadas de segurança específicas foram implementadas.

Implicações do WSMT no suporte a VBS do Windows

O campo Sinalizadores de Proteção WSMT indica a presença dessas mitigações de segurança específicas do SMM no firmware de sistemas. As versões com suporte do sistema operacional Windows leem os Sinalizadores de Proteção do WSMT antecipadamente durante a inicialização, antes da inicialização do hipervisor e do VBS, e podem optar por habilitar, desabilitar ou desativar determinados recursos de segurança com base na presença desses Sinalizadores de Proteções do SMM.

Notas da implementação

A implementação adequada das mitigações de segurança representadas pelos sinalizadores de proteção do WSMT FIXED_COMM_BUFFERS e COMM_BUFFER_NESTED_PTR_PROTECTION exigirá que o fornecedor de firmware avalie cuidadosamente e possivelmente recproteça os manipuladores de SMI (Interrupção de Gerenciamento do Sistema). Todos os manipuladores de SMI devem ser restritos apenas ao acesso (leitura ou gravação) a regiões de memória permitidas que contenham memória alocada por MMIO e EFI. Não é suficiente marcar que os ponteiros no SMM não referenciem a memória inteiramente fora do SMM. Em vez disso, todos os ponteiros do SMM devem ser validados para estar nessas regiões de memória segura. Isso impede que o SMM seja explorado em um ataque de "delegado confuso", que pode ser aproveitado para comprometer os recursos da VBS do Windows. Os Sinalizadores de Proteção mencionados acima referem-se apenas à validação de entrada e às verificações de ponteiro e não exigem a imposição por meio de proteções de página do SMM no momento. Por exemplo, o SMM não deve ler ou gravar na memória que foi descrito pelo firmware como EfiConventionalMemory porque pode conter segredos ou fazer com que o software se comporte de forma imprevisível.

Validando as proteções do WSMT

Como o SMM é opaco para o sistema operacional, não é possível produzir um teste executado no Windows para verificar se as proteções prescritas na especificação WSMT são realmente implementadas no SMM. No sistema operacional, a única marcar possível é procurar a presença do WSMT e marcar o estado de todos os Sinalizadores de Proteção definidos.

Portanto, é responsabilidade do OEM examinar cuidadosamente o código SMM de cada sistema e garantir que o firmware esteja em conformidade com as diretrizes descritas na especificação do WSMT e neste artigo. Nenhum Sinalizador de Proteção deve ser definido como "true" até que o OEM confirme que as mitigações correspondentes a cada valor do Sinalizador de Proteção foram implementadas corretamente. Não aderir a isso como prática recomendada deixará a plataforma vulnerável a comprometimentos e negará a eficácia de várias proteções do sistema operacional e recursos de segurança do Windows que dependem da VBS para manter limites de segurança robustos.

Versões com suporte do Windows

O suporte para o WSMT está incluído nas seguintes versões do Windows:

  • Windows Server Technical Preview 2016
  • Windows 10, versão 1607
  • Windows 10, versão 1703
  • Windows 10, versão 1709