
Утилита для Windows, которая обращается к API ядра и сообщает о статусе программных и аппаратных мер защиты от уязвимостей спекулятивного выполнения (Meltdown, Spectre, Foreshadow).
SpecuCheck — это утилита Windows для проверки состояния программных и аппаратных средств защиты от CVE-2017-5754 (Meltdown), CVE-2017-5715 (Spectre v2), CVE-2018-3260 (Foreshadow) и CVE-2018-3639 (Spectre v4). Она использует два новых информационных класса, добавленных в вызов API NtQuerySystemInformation в рамках недавних исправлений, выпущенных в январе 2018 года, и сообщает данные, какими их видит ядро Windows.
Теперь также существует официальный модуль командлетов Microsoft PowerShell, который является рекомендуемым и поддерживаемым способом получения этой информации.

3 января 2018 года компании Intel, AMD и ARM Holdings, а также ряд поставщиков операционных систем сообщили о серии уязвимостей, обнаруженных Google Project Zero:
Microsoft выпустила исправления для Windows 7 SP1 и выше в тот же день. Эти исправления, в зависимости от архитектуры, версии ОС, настроек загрузки и ряда свойств, связанных с оборудованием, применяют ряд программных и аппаратных мер защиты от этих проблем. Состояние включения этих мер, их доступность и конфигурация хранятся ядром Windows в ряде глобальных переменных и предоставляются вызывающим в пользовательском режиме через недокументированный системный вызов.
Кроме того, были сообщены новые атаки по побочным каналам, такие как Spectre Variant 4: обход спекулятивного хранилища (CVE-2018-3639) и Foreshadow: ошибка терминала L1 (CVE-2018-3620), которые были исправлены в Windows 7 SP1 и выше с помощью обновлений во вторник исправлений в августе.
SpecuCheck использует этот системный вызов, чтобы подтвердить, действительно ли система была исправлена (неисправленные системы не смогут выполнить вызов), и каков статус мер защиты, что можно использовать для определения потенциальных проблем с производительностью.
Первоначально вокруг этой проблемы было много шума, ажиотажа и маркетинга, но мало документации о том, как узнать, затронуты ли вы и каковы накладные расходы на производительность. SpecuCheck был создан, чтобы сделать эти данные легкодоступными для пользователей и ИТ-отделов, чтобы им не приходилось использовать отладчик Windows или самостоятельно проводить реверс-инжиниринг API.
С тех пор Microsoft проделала большую работу по предоставлению этих данных из режима ядра в сжатой форме, которая кратко указывает на поддержку ядром и использование различных технологий защиты и аппаратных функций, и выпустила модуль командлетов PowerShell для получения этих данных. Поэтому SpecuCheck остается лишь исследовательским инструментом и не рекомендуется — пожалуйста, используйте вместо него одобренный Microsoft модуль PowerShell.
Чтобы запустить SpecuCheck, просто выполните его в командной строке:
c:\SpecuCheck.exe
Это приведет к отображению информационного экрана, указывающего, какие функции/меры защиты включены. Если вы увидите текст:
Your system either does not have the appropriate patch, or it may not support the information class required
Это означает, что ваша система в настоящее время не исправлена для защиты от этих уязвимостей.
Если вы хотите узнать больше о моих исследованиях или работе, приглашаю вас посетить мой блог по адресу http://www.alex-ionescu.com, а также мою компанию по обучению и консалтингу Winsider Seminars & Solutions Inc. по адресу http://www.windows-internals.com.
Также обязательно прочитайте невероятно информативную статью Project Zero.
Для получения дополнительной информации о соответствующих и необходимых исправлениях Windows, пожалуйста, прочитайте уведомление Microsoft и дополнительные рекомендации Microsoft руководство.
SpecuCheck полагается на недокументированные системные вызовы и информационные классы, которые могут измениться. Кроме того, SpecuCheck возвращает только ту информацию, которую ядро Windows хранит о состоянии мер защиты и аппаратных функций — в зависимости от настроек политики (реестр, параметры загрузки) или других флагов совместимости состояние ядра Windows может не соответствовать истинному состоянию оборудования. Цель этого инструмента — дать вам оценку, специфичную для Windows, а не независимую от ОС аппаратную оценку.
SpecuCheck — это только исследовательский инструмент и не рекомендуется для общего или коммерческого использования — пожалуйста, используйте одобренный Microsoft модуль PowerShell.
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.