
أداة ويندوز تستعلم من واجهة برمجة تطبيقات النواة (API) للإبلاغ عن حالة التخفيف البرمجي والمادي ضد ثغرات التنفيذ التخميني (Meltdown, Spectre, Foreshadow).
SpecuCheck هي أداة ويندوز للتحقق من حالة التخفيفات البرمجية والمادية ضد CVE-2017-5754 (Meltdown)، وCVE-2017-5715 (Spectre v2)، وCVE-2018-3260 (Foreshadow)، وCVE-2018-3639 (Spectre v4). وهي تستخدم فئتي معلومات جديدتين تمت إضافتهما إلى استدعاء API الخاص بـ NtQuerySystemInformation كجزء من التصحيحات الأخيرة التي صدرت في يناير 2018، وتُبلغ بالبيانات كما تراها نواة ويندوز.
توجد الآن أيضًا وحدة Microsoft PowerShell Cmdlet رسمية، وهي الطريقة الموصى بها والمدعومة للحصول على هذه المعلومات.

في 3 يناير 2018، أبلغت كل من Intel وAMD وARM Holdings، بالإضافة إلى عدد من موردي أنظمة التشغيل، عن سلسلة من الثغرات الأمنية التي اكتشفها مشروع Google Project Zero:
أصدرت Microsoft تصحيحات لنظام Windows 7 SP1 والإصدارات الأحدث في وقت لاحق من اليوم نفسه. وتطبّق هذه التصحيحات، اعتمادًا على البنية المعمارية، وإصدار نظام التشغيل، وإعدادات الإقلاع، وعدد من الخصائص المتعلقة بالعتاد، عددًا من التخفيفات البرمجية والمادية ضد هذه المشكلات. تخزّن نواة ويندوز حالة تفعيل هذه التخفيفات وتوافرها وإعداداتها في عدد من المتغيرات العامة، وتُكشف لاستدعاءات وضع المستخدم عبر استدعاء نظام غير موثق.
بالإضافة إلى ذلك، تم الإبلاغ عن هجمات قنوات جانبية جديدة، مثل Spectre Variant 4: تجاوز التخزين التخميني (CVE-2018-3639) وForeshadow: خطأ L1 الطرفي (CVE-2018-3620)، والتي تم إصلاحها في Windows 7 SP1 والإصدارات الأحدث عبر تصحيحات صدرت في ثلاثاء التصحيحات في أغسطس.
تستفيد SpecuCheck من استدعاء النظام هذا للتأكد مما إذا كان النظام قد تم تحديثه بالفعل (ستفشل الأنظمة غير المحدّثة في إجراء الاستدعاء) وما هي حالة التخفيفات، وهو ما يمكن استخدامه لتحديد مشاكل الأداء المحتملة.
كان هناك في البداية الكثير من الضجيج والتهويل والتسويق حول هذه المسألة، ولم تكن هناك وثائق كثيرة حول كيفية معرفة ما إذا كنت متأثرًا، وما هو الحمل الإضافي على الأداء. هدفت SpecuCheck إلى جعل تلك البيانات سهلة الوصول للمستخدمين وأقسام تقنية المعلومات، لتجنب الاضطرار إلى استخدام مصحح أخطاء ويندوز أو هندسة عكسية لواجهة API بأنفسهم.
منذ ذلك الحين، قامت Microsoft بعمل رائع لكشف تلك البيانات من وضع النواة بشكل موجز، إذ تشير بإيجاز إلى دعم النواة واستخدامها لتقنيات التخفيف وميزات العتاد المختلفة، وأصدرت وحدة PowerShell CmdLet لاسترداد تلك البيانات. لذلك، تبقى SpecuCheck مجرد أداة بحثية ولا يُنصح باستخدامها — يرجى استخدام وحدة PowerShell المعتمدة من Microsoft بدلاً من ذلك.
لتشغيل 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 المفيد بشكل لا يصدق.
لمزيد من المعلومات حول تصحيحات ويندوز المناسبة واللازمة، يرجى قراءة نشرة Microsoft الاستشارية وإرشادات Microsoft الإضافية.
تعتمد SpecuCheck على استدعاءات نظام وفئات معلومات غير موثقة قد تتغير. بالإضافة إلى ذلك، تُرجع SpecuCheck فقط المعلومات التي تخزّنها نواة ويندوز حول حالة التخفيفات وميزات العتاد — وبناءً على إعدادات السياسة (السجل، معلمات الإقلاع) أو علامات التوافق الأخرى، قد لا تتطابق حالة نواة ويندوز مع حالة العتاد الفعلية. الهدف من هذه الأداة هو تقديم تقييم خاص بويندوز، وليس تقييمًا للعتاد مستقلًا عن نظام التشغيل.
SpecuCheck ليست سوى أداة بحثية ولا يُنصح باستخدامها للاستخدام العام أو التجاري — يرجى استخدام وحدة PowerShell المعتمدة من 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.