
Utilitário do Windows que consulta a API do kernel para relatar o status de mitigação de software e hardware contra vulnerabilidades de execução especulativa (Meltdown, Spectre, Foreshadow).
SpecuCheck é um utilitário Windows para verificar o estado das mitigações de software e hardware contra CVE-2017-5754 (Meltdown), CVE-2017-5715 (Spectre v2), CVE-2018-3260 (Foreshadow) e CVE-2018-3639 (Spectre v4). Ele utiliza duas novas classes de informação que foram adicionadas à chamada de API NtQuerySystemInformation como parte das correções recentes introduzidas em janeiro de 2018 e reporta os dados conforme vistos pelo Kernel do Windows.
Um módulo oficial de cmdlet PowerShell da Microsoft também existe, sendo a maneira recomendada e suportada para obter essas informações.

Em 3 de janeiro de 2018, Intel, AMD e ARM Holdings, bem como vários fornecedores de sistemas operacionais, relataram uma série de vulnerabilidades descobertas pelo Google Project Zero:
A Microsoft lançou correções para Windows 7 SP1 e versões superiores no mesmo dia. Essas correções, dependendo da arquitetura, versão do SO, configurações de inicialização e uma série de propriedades relacionadas ao hardware, aplicam várias mitigações de software e hardware contra esses problemas. O estado de ativação dessas mitigações, sua disponibilidade e configuração são armazenados pelo kernel do Windows em diversas variáveis globais e expostos a chamadores em modo de usuário por meio de uma chamada de sistema não documentada.
Além disso, novos ataques de canal lateral foram relatados, como o Spectre Variante 4: bypass de armazenamento especulativo (CVE-2018-3639) e Foreshadow: falha terminal L1 (CVE-2018-3620), que foram corrigidos no Windows 7 SP1 e versões superiores com as correções da Patch Tuesday de agosto.
O SpecuCheck aproveita essa chamada de sistema para confirmar se um sistema foi de fato corrigido (sistemas sem correção falharão na chamada) e qual é o status das mitigações, o que pode ser usado para determinar possíveis armadilhas de desempenho.
Originalmente, havia muito barulho, hype e marketing em torno do problema, e pouca documentação sobre como verificar se você estava afetado e qual era a sobrecarga de desempenho. O SpecuCheck visava tornar esses dados facilmente acessíveis por usuários e departamentos de TI, evitando a necessidade de usar um depurador do Windows ou fazer engenharia reversa da API por conta própria.
Desde então, a Microsoft fez um ótimo trabalho ao expor esses dados do modo kernel de maneira concisa, indicando sucintamente o suporte e o uso do kernel para várias tecnologias e recursos de hardware mitigadores, e lançou um módulo de cmdlet PowerShell para recuperar esses dados. Portanto, o SpecuCheck permanece apenas como uma ferramenta de pesquisa e não é recomendado — use o módulo PowerShell aprovado pela Microsoft.
Para executar o SpecuCheck, basta executá-lo na linha de comando:
c:\SpecuCheck.exe
O que resultará em uma tela informativa indicando quais funcionalidades/mitigações estão ativadas. Se você vir o texto:
Your system either does not have the appropriate patch, or it may not support the information class required
Isso indica que seu sistema não está atualmente corrigido para mitigar essas vulnerabilidades.
Se você quiser saber mais sobre minha pesquisa ou trabalho, convido-o a visitar meu blog em http://www.alex-ionescu.com, bem como minha empresa de treinamento e consultoria, Winsider Seminars & Solutions Inc., em http://www.windows-internals.com.
Você também deve definitivamente ler o incrivelmente informativo Post do Project Zero.
Para informações adicionais sobre as correções apropriadas e necessárias do Windows, leia o Comunicado da Microsoft e as Orientações adicionais da Microsoft.
O SpecuCheck depende de chamadas de sistema e classes de informação não documentadas que estão sujeitas a alterações. Além disso, o SpecuCheck retorna apenas as informações que o kernel do Windows está armazenando sobre o estado das mitigações e recursos de hardware — com base em configurações de política (registro, parâmetros de inicialização) ou outros sinalizadores de compatibilidade, o estado do kernel do Windows pode não corresponder ao estado real do hardware. O objetivo desta ferramenta é fornecer uma avaliação específica do Windows, não uma avaliação de hardware independente do SO.
O SpecuCheck é apenas uma ferramenta de pesquisa e não é recomendada para uso geral ou comercial — use o módulo PowerShell aprovado pela Microsoft.
Copyright 2018 Alex Ionescu. All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided
that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this list of conditions and
the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions
and the following disclaimer in the documentation and/or other materials provided with the
distribution.
THIS SOFTWARE IS PROVIDED BY ALEX IONESCU ``AS IS'' AND ANY EXPRESS OR IMPLIED
WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ALEX IONESCU
OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
The views and conclusions contained in the software and documentation are those of the authors and
should not be interpreted as representing official policies, either expressed or implied, of Alex Ionescu.