
投機的実行の脆弱性(Meltdown、Spectre、Foreshadow)に対するソフトウェアおよびハードウェアの緩和状況を報告するために、カーネルAPIに問い合わせるWindowsユーティリティ。
SpecuCheck は、CVE-2017-5754 (Meltdown)、CVE-2017-5715 (Spectre v2)、CVE-2018-3260 (Foreshadow)、CVE-2018-3639 (Spectre v4) に対するソフトウェアおよびハードウェアの緩和策の状態を確認するための Windows ユーティリティです。これは、2018 年 1 月に導入された最近のパッチの一部として NtQuerySystemInformation API 呼び出しに追加された 2 つの新しい情報クラスを使用し、Windows カーネルから見たデータを報告します。
この情報を取得するための推奨かつサポートされている方法として、公式の Microsoft PowerShell Cmdlet モジュールも現在存在します。

2018 年 1 月 3 日、Intel、AMD、ARM Holdings、および多数の OS ベンダーが、Google Project Zero によって発見された一連の脆弱性を報告しました:
Microsoft は同じ日の後半に Windows 7 SP1 以降向けのパッチをリリースしました。これらのパッチは、アーキテクチャ、OS バージョン、起動設定、および多数のハードウェア関連プロパティに応じて、これらの問題に対するさまざまなソフトウェアおよびハードウェアの緩和策を適用します。これらの緩和策の有効化状態、その可用性、および構成は、Windows カーネルによって多数のグローバル変数に格納され、非公開のシステムコールを通じてユーザーモードの呼び出し元に公開されます。
さらに、Spectre Variant 4: 投機的ストアバイパス (CVE-2018-3639) や Foreshadow: L1 ターミナルフォールト (CVE-2018-3620) などの新しいサイドチャネル攻撃も報告されました。これらは、8 月の Patch Tuesday のパッチによって Windows 7 SP1 以降で修正されました。
SpecuCheck はこのシステムコールを利用して、システムが実際にパッチ適用済みであるかどうか (パッチ未適用のシステムでは呼び出しが失敗します) と、緩和策の状態を確認します。これは、潜在的なパフォーマンス上の問題を判断するために使用できます。
当初、この問題については多くのノイズ、誇大広告、マーケティングがありましたが、自分が影響を受けているかどうか、またどの程度のパフォーマンスオーバーヘッドがあるかを確認する方法に関するドキュメントはほとんどありませんでした。SpecuCheck は、ユーザーや IT 部門が Windows デバッガーを使用したり API を自分でリバースエンジニアリングしたりする必要をなくし、そのデータに簡単にアクセスできるようにすることを目的としていました。
その後、Microsoft は、カーネルによる各種緩和技術およびハードウェア機能のサポートと使用状況を簡潔に示すデータをカーネルモードから公開する優れた作業を行い、そのデータを取得するための PowerShell Cmdlet モジュールをリリースしました。したがって、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 カーネルの状態が実際のハードウェアの状態と一致しない場合があります。このツールの目的は、OS に依存しないハードウェア評価ではなく、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.