شروڈنگر کا قابل اعتماد ڈاؤن لوڈ۔ انٹیل بوٹ گارڈ

شروڈنگر کا قابل اعتماد ڈاؤن لوڈ۔ انٹیل بوٹ گارڈ
ہم ایک بار پھر نچلی سطح پر جانے کی تجویز کرتے ہیں اور x86-مطابقت پذیر کمپیوٹر پلیٹ فارمز کے فرم ویئر کی حفاظت کے بارے میں بات کرتے ہیں۔ اس بار، مطالعہ کا بنیادی جزو Intel Boot Guard ہے (Intel BIOS گارڈ کے ساتھ الجھن میں نہ پڑیں!) - ایک ہارڈ ویئر سے تعاون یافتہ قابل اعتماد BIOS بوٹ ٹیکنالوجی جسے کمپیوٹر سسٹم فروش پیداوار کے مرحلے پر مستقل طور پر فعال یا غیر فعال کر سکتا ہے۔ ٹھیک ہے، تحقیقی نسخہ ہمارے لیے پہلے سے ہی واقف ہے: ریورس انجینئرنگ کا استعمال کرتے ہوئے اس ٹیکنالوجی کے نفاذ کو باریک کٹائیں، اس کے فن تعمیر کو بیان کریں، اسے غیر دستاویزی تفصیلات سے بھریں، اسے ذائقہ اور مکس کرنے کے لیے اٹیک ویکٹر کے ساتھ موسم بنائیں۔ آئیے اس کہانی میں ایندھن کا اضافہ کریں کہ کس طرح ایک بگ جس کو کئی دکانداروں کی تیاری میں سالوں سے کلون کیا گیا ہے ایک ممکنہ حملہ آور کو اس ٹیکنالوجی کا استعمال کرتے ہوئے سسٹم میں ایک پوشیدہ روٹ کٹ بنانے کی اجازت دیتا ہے جسے ہٹایا نہیں جا سکتا (یہاں تک کہ ایک پروگرامر کے ساتھ بھی)۔

ویسے، یہ مضمون کانفرنس کی رپورٹس پر مبنی ہے "On Guard of Rootkits: Intel BootGuard" زیرو نائٹس 2016 اور 29 ویں میٹنگ DefCon روس (دونوں پیشکشیں یہاں).

Intel 64 فن تعمیر کے ساتھ کمپیوٹر پلیٹ فارم کے لیے فرم ویئر

سب سے پہلے، اس سوال کا جواب دیتے ہیں: Intel 64 فن تعمیر کے ساتھ جدید کمپیوٹر پلیٹ فارم کا فرم ویئر کیا ہے؟ یقینا، UEFI BIOS. لیکن ایسا جواب درست نہیں ہوگا۔ آئیے اس تصویر پر ایک نظر ڈالتے ہیں، جس میں اس فن تعمیر کا ڈیسک ٹاپ (لیپ ٹاپ) ورژن دکھایا گیا ہے۔

شروڈنگر کا قابل اعتماد ڈاؤن لوڈ۔ انٹیل بوٹ گارڈ
بنیاد لنک ہے:

  • پروسیسر (سی پی یو، سنٹرل پروسیسنگ یونٹ)، جس میں مرکزی کور کے علاوہ، بلٹ ان گرافکس کور (تمام ماڈلز میں نہیں) اور میموری کنٹرولر (آئی ایم سی، انٹیگریٹڈ میموری کنٹرولر) ہوتا ہے۔
  • چپ سیٹ (PCH، پلیٹ فارم کنٹرولر حب)، جس میں پردیی آلات کے ساتھ تعامل کرنے اور ذیلی نظاموں کے انتظام کے لیے مختلف کنٹرولرز ہوتے ہیں۔ ان میں معروف Intel Management Engine (ME) ہے، جس میں فرم ویئر (Intel ME فرم ویئر) بھی ہے۔

لیپ ٹاپ کے لیے، مندرجہ بالا کے علاوہ، ایک بلٹ ان کنٹرولر (ACPI EC، ایڈوانسڈ کنٹرول اور پاور انٹرفیس ایمبیڈڈ کنٹرولر) کی ضرورت ہوتی ہے، جو پاور سب سسٹم، ٹچ پیڈ، کی بورڈ، Fn کیز (اسکرین کی چمک، آواز کا حجم) کے آپریشن کے لیے ذمہ دار ہے۔ ، کی بورڈ بیک لائٹ، وغیرہ) اور دیگر چیزیں۔ اور اس کا اپنا فرم ویئر بھی ہے۔

لہذا، مندرجہ بالا فرم ویئر کی مجموعییت کمپیوٹر پلیٹ فارم (سسٹم فرم ویئر) کا فرم ویئر ہے، جو ایک عام SPI فلیش میموری پر محفوظ کیا جاتا ہے۔ تاکہ اس میموری کے استعمال کنندگان اس بارے میں الجھن میں نہ پڑیں کہ یہ کہاں ہے، اس میموری کے مواد کو درج ذیل خطوں میں تقسیم کیا گیا ہے (جیسا کہ تصویر میں دکھایا گیا ہے):

  • UEFI BIOS؛
  • ACPI EC فرم ویئر (Skylake پروسیسر مائکرو آرکیٹیکچر (2015) کے ساتھ ایک علیحدہ خطہ ظاہر ہوا، لیکن جنگل میں ہم نے ابھی تک اس کے استعمال کی مثالیں نہیں دیکھی ہیں، اس لیے بلٹ ان کنٹرولر کا فرم ویئر اب بھی UEFI BIOS میں شامل ہے) ;
  • Intel ME فرم ویئر؛
  • بلٹ ان GbE (گیگابٹ ایتھرنیٹ) نیٹ ورک اڈاپٹر کی ترتیب (MAC ایڈریس، وغیرہ)؛
  • فلیش ڈسکرپٹرز فلیش میموری کا اہم خطہ ہے جس میں دوسرے خطوں کی طرف اشارہ کرنے کے ساتھ ساتھ ان تک رسائی کی اجازت بھی ہوتی ہے۔

شروڈنگر کا قابل اعتماد ڈاؤن لوڈ۔ انٹیل بوٹ گارڈ
SPI بس ماسٹر، ایک SPI کنٹرولر جو چپ سیٹ میں بنایا گیا ہے، جس کے ذریعے اس میموری تک رسائی حاصل کی جاتی ہے، علاقوں تک رسائی کو محدود کرنے کا ذمہ دار ہے (مخصوص اجازتوں کے مطابق)۔ اگر اجازتیں Intel کی تجویز کردہ (سیکیورٹی وجوہات کی بناء پر) اقدار پر سیٹ کی جاتی ہیں، تو ہر SPI فلیش صارف کو صرف اپنے علاقے تک مکمل رسائی (پڑھنے/لکھنے) کی اجازت ہوتی ہے۔ اور باقی یا تو صرف پڑھنے یا ناقابل رسائی ہیں۔ ایک معروف حقیقت: بہت سے سسٹمز پر، CPU کو UEFI BIOS اور GbE تک مکمل رسائی حاصل ہے، صرف فلیش ڈسکرپٹرز تک پڑھنے کی رسائی ہے، اور Intel ME خطے تک بالکل بھی رسائی نہیں ہے۔ بہت سے پر کیوں، اور سب پر نہیں؟ جو سفارش کی جاتی ہے اس کی ضرورت نہیں ہے۔ ہم آپ کو مضمون میں بعد میں تفصیل سے بتائیں گے۔

کمپیوٹر پلیٹ فارم فرم ویئر کو ترمیم سے بچانے کا طریقہ کار

ظاہر ہے، کمپیوٹر پلیٹ فارم کے فرم ویئر کو ممکنہ سمجھوتے سے محفوظ رکھا جانا چاہیے، جو ممکنہ حملہ آور کو اس میں قدم جمانے کی اجازت دے گا (OS اپ ڈیٹس/ری انسٹالیشنز سے بچ جائے گا)، اپنے کوڈ کو انتہائی مراعات یافتہ طریقوں سے چلا سکے گا، وغیرہ۔ اور SPI فلیش میموری والے علاقوں تک رسائی کو محدود کرنا یقیناً کافی نہیں ہے۔ لہذا، فرم ویئر کو ترمیم سے بچانے کے لیے، ہر آپریٹنگ ماحول کے لیے مخصوص مختلف میکانزم استعمال کیے جاتے ہیں۔

اس طرح، Intel ME فرم ویئر پر سالمیت اور صداقت کو کنٹرول کرنے کے لیے دستخط کیے گئے ہیں، اور جب بھی ME UMA میموری میں لوڈ کیا جاتا ہے تو ME کنٹرولر کے ذریعے اسے چیک کیا جاتا ہے۔ اس توثیق کے عمل پر پہلے ہی ہم نے ان میں سے ایک میں بات کی ہے۔ مضامین, Intel ME سب سسٹم کے لیے وقف ہے۔

اور ACPI EC فرم ویئر، ایک اصول کے طور پر، صرف سالمیت کے لیے چیک کیا جاتا ہے۔ تاہم، اس حقیقت کی وجہ سے کہ یہ بائنری UEFI BIOS میں شامل ہے، یہ تقریباً ہمیشہ اسی تحفظ کے طریقہ کار کے تابع ہوتا ہے جو UEFI BIOS استعمال کرتا ہے۔ آئیے ان کے بارے میں بات کرتے ہیں۔

ان میکانزم کو دو قسموں میں تقسیم کیا جا سکتا ہے۔

UEFI BIOS خطے میں تحفظ لکھیں۔

  1. رائٹ پروٹیکٹ جمپر کے ساتھ SPI فلیش میموری کے مواد کا جسمانی تحفظ؛
  2. PRx چپ سیٹ رجسٹر کا استعمال کرتے ہوئے CPU ایڈریس اسپیس میں UEFI BIOS ریجن کے پروجیکشن کی حفاظت کرنا؛
  3. چپ سیٹ کے رجسٹروں میں BIOS_WE/BLE اور SMM_BWP بٹس کو ترتیب دے کر متعلقہ SMI انٹرپٹ کو تخلیق اور پروسیس کر کے UEFI BIOS خطے میں لکھنے کی کوششوں کو روکنا؛
  4. اس تحفظ کا ایک زیادہ جدید ورژن Intel BIOS گارڈ (PFAT) ہے۔

ان میکانزم کے علاوہ، دکاندار اپنے حفاظتی اقدامات کو تیار اور لاگو کر سکتے ہیں (مثال کے طور پر، UEFI BIOS اپ ڈیٹس کے ساتھ کیپسول پر دستخط کرنا)۔

یہ نوٹ کرنا ضروری ہے کہ کسی مخصوص نظام پر (فروش پر منحصر ہے)، اوپر دیے گئے تمام تحفظاتی میکانزم لاگو نہیں ہوسکتے ہیں، ان کا اطلاق بالکل بھی نہیں ہوسکتا ہے، یا انہیں کمزور طریقے سے لاگو کیا جاسکتا ہے۔ آپ ان میکانزم اور ان کے نفاذ کے ساتھ صورتحال کے بارے میں مزید پڑھ سکتے ہیں۔ یہ مضمون. دلچسپی رکھنے والوں کے لیے، ہم تجویز کرتے ہیں کہ آپ UEFI BIOS سیکیورٹی سے متعلق مضامین کی پوری سیریز پڑھیں کوڈ رش.

UEFI BIOS کی توثیق

جب ہم قابل اعتماد بوٹ ٹیکنالوجیز کے بارے میں بات کرتے ہیں تو سب سے پہلی چیز جو ذہن میں آتی ہے وہ ہے سیکیور بوٹ۔ تاہم، تعمیراتی طور پر اسے UEFI BIOS (ڈرائیور، بوٹ لوڈرز، وغیرہ) کے بیرونی اجزاء کی صداقت کی تصدیق کرنے کے لیے ڈیزائن کیا گیا ہے، نہ کہ خود فرم ویئر۔

لہذا، Intel، Bay Trail microarchitecture (2012) کے ساتھ SoCs میں، ایک ہارڈ ویئر نان ڈس ایبلڈ سیکیور بوٹ (ویریفائیڈ بوٹ) کو لاگو کیا، جس میں مذکورہ سیکیور بوٹ ٹیکنالوجی کے ساتھ کچھ بھی مشترک نہیں ہے۔ بعد میں (2013)، اس میکانزم کو بہتر کیا گیا اور Haswell مائیکرو آرکیٹیکچر والے ڈیسک ٹاپس کے لیے Intel Boot Guard کے نام سے جاری کیا گیا۔

انٹیل بوٹ گارڈ کی وضاحت کرنے سے پہلے، آئیے انٹیل 64 فن تعمیر میں عمل درآمد کے ماحول کو دیکھتے ہیں، جو کہ اس قابل اعتماد بوٹ ٹیکنالوجی کے لیے اعتماد کی جڑیں ہیں۔

انٹیل سی پی یو

کیپ سے پتہ چلتا ہے کہ پروسیسر انٹیل 64 فن تعمیر میں عمل درآمد کا بنیادی ماحول ہے۔ یہ اعتماد کی جڑ کیوں ہے؟ یہ پتہ چلتا ہے کہ جو چیز اسے ایسا بناتی ہے وہ مندرجہ ذیل عناصر کا قبضہ ہے:

  • مائیکرو کوڈ ROM مائیکرو کوڈ کو ذخیرہ کرنے کے لیے ایک غیر مستحکم، ناقابل تحریری میموری ہے۔ یہ خیال کیا جاتا ہے کہ مائیکرو کوڈ آسان ترین ہدایات کا استعمال کرتے ہوئے پروسیسر کمانڈ سسٹم کا نفاذ ہے۔ مائکرو کوڈ میں بھی ہوتا ہے۔ کیڑے. لہذا BIOS میں آپ مائکرو کوڈ اپ ڈیٹس کے ساتھ بائنریز تلاش کرسکتے ہیں (بوٹ کے دوران اوورلیڈ، کیونکہ ROM کو اوور رائٹ نہیں کیا جاسکتا)۔ ان بائنریز کے مواد کو خفیہ کیا گیا ہے، جو تجزیہ کو بہت پیچیدہ بناتا ہے (لہذا، مائکرو کوڈ کا مخصوص مواد صرف ان لوگوں کو معلوم ہوتا ہے جو اسے تیار کرتے ہیں)، اور سالمیت اور صداقت کو کنٹرول کرنے کے لیے دستخط کیے جاتے ہیں؛
  • مائیکرو کوڈ اپ ڈیٹس کے مواد کو ڈکرپٹ کرنے کے لیے AES کلید؛
  • مائیکرو کوڈ اپ ڈیٹس کے دستخط کی تصدیق کے لیے استعمال ہونے والی RSA پبلک کلید کا ہیش؛
  • RSA پبلک کلید ہیش، جو Intel-developed ACM (Authenticated Code Module) کوڈ ماڈیولز کے دستخط کی تصدیق کرتا ہے، جسے CPU BIOS پر عمل درآمد (ہیلو مائیکرو کوڈ) سے پہلے یا اپنے آپریشن کے دوران، کچھ واقعات پیش آنے پر شروع کر سکتا ہے۔

انٹیل ایم ای

ہمارا بلاگ اس سب سسٹم کے لیے وقف تھا۔ دو مضامین. آئیے یاد رکھیں کہ یہ قابل عمل ماحول چپ سیٹ میں بنائے گئے مائیکرو کنٹرولر پر مبنی ہے اور سسٹم میں سب سے زیادہ پوشیدہ اور مراعات یافتہ ہے۔

اس کی رازداری کے باوجود، Intel ME بھی اعتماد کی جڑ ہے کیونکہ اس میں ہے:

  • ME ROM - غیر متزلزل، دوبارہ لکھنے کے قابل میموری (کوئی اپ ڈیٹ کا طریقہ فراہم نہیں کیا گیا ہے) جس میں اسٹارٹ کوڈ، ساتھ ہی RSA پبلک کلید کا SHA256 ہیش، جو Intel ME فرم ویئر کے دستخط کی تصدیق کرتا ہے۔
  • خفیہ معلومات کو ذخیرہ کرنے کے لیے AES کلید؛
  • کچھ معلومات کے مستقل ذخیرہ کے لیے چپ سیٹ میں ضم شدہ فیوز (FPFs، فیلڈ پروگرام ایبل فیوز) تک رسائی، بشمول کمپیوٹر سسٹم وینڈر کے ذریعہ مخصوص کردہ۔

انٹیل بوٹ گارڈ 1.x

ایک چھوٹا سا دستبرداری۔ انٹیل بوٹ گارڈ ٹیکنالوجی ورژن نمبرز جو ہم اس مضمون میں استعمال کرتے ہیں من مانی ہیں اور ہو سکتا ہے کہ انٹیل کے اندرونی دستاویزات میں استعمال ہونے والی نمبرنگ سے کوئی تعلق نہ ہو۔ اس کے علاوہ، اس ٹکنالوجی کے نفاذ کے بارے میں یہاں فراہم کردہ معلومات ریورس انجینئرنگ کے دوران حاصل کی گئی تھیں، اور انٹیل بوٹ گارڈ کی تصریح کے مقابلے میں غلطیاں ہوسکتی ہیں، جس کے شائع ہونے کا امکان نہیں ہے۔

لہذا، Intel Boot Guard (BG) ایک ہارڈ ویئر سے تعاون یافتہ UEFI BIOS توثیق کی توثیق ٹیکنالوجی ہے۔ کتاب میں اس کی مختصر تفصیل کو دیکھتے ہوئے [پلیٹ فارم ایمبیڈڈ سیکیورٹی ٹیکنالوجی نے انکشاف کیا، باب بوٹ ود انٹیگریٹی، یا بوٹ نہیں]، یہ ایک قابل اعتماد بوٹ چین کے طور پر کام کرتا ہے۔ اور اس میں پہلا لنک CPU کے اندر موجود بوٹ کوڈ (مائیکرو کوڈ) ہے، جو RESET ایونٹ سے شروع ہوتا ہے (BIOS میں RESET ویکٹر کے ساتھ الجھن میں نہ پڑیں!) CPU SPI فلیش میموری پر Intel (Intel BG startup ACM) کے تیار کردہ اور دستخط شدہ کوڈ ماڈیول کو تلاش کرتا ہے، اسے اپنے کیشے میں لوڈ کرتا ہے، تصدیق کرتا ہے (یہ پہلے ہی اوپر ذکر کیا جا چکا ہے کہ CPU میں عوامی کلید کا ایک ہیش ہے جو ACM کی تصدیق کرتا ہے۔ دستخط) اور شروع ہوتا ہے۔

شروڈنگر کا قابل اعتماد ڈاؤن لوڈ۔ انٹیل بوٹ گارڈ

یہ کوڈ ماڈیول UEFI BIOS - ابتدائی بوٹ بلاک (IBB) کے ایک چھوٹے سے ابتدائی حصے کی تصدیق کے لیے ذمہ دار ہے، جو بدلے میں، UEFI BIOS کے مرکزی حصے کی تصدیق کے لیے فعالیت پر مشتمل ہے۔ اس طرح، Intel BG آپ کو OS لوڈ کرنے سے پہلے BIOS کی صداقت کی تصدیق کرنے کی اجازت دیتا ہے (جسے Secure Boot ٹیکنالوجی کی نگرانی میں انجام دیا جا سکتا ہے)۔

Intel BG ٹیکنالوجی دو آپریٹنگ موڈ فراہم کرتی ہے (اور ایک دوسرے کے ساتھ مداخلت نہیں کرتا، یعنی دونوں موڈز کو سسٹم پر فعال کیا جا سکتا ہے، یا دونوں کو غیر فعال کیا جا سکتا ہے)۔

ناپے ہوئے بوٹ

میسرڈ بوٹ (ایم بی) موڈ میں، ہر بوٹ جزو (سی پی یو بوٹ روم سے شروع ہوتا ہے) ٹی پی ایم (ٹرسٹڈ پلیٹ فارم ماڈیول) کی صلاحیتوں کا استعمال کرتے ہوئے اگلے کو "پیمانہ" کرتا ہے۔ جو نہیں جانتے ان کے لیے میں وضاحت کرتا ہوں۔

TPM میں PCRs (پلیٹ فارم کنفیگریشن رجسٹر) ہیں، جس میں فارمولے کے مطابق ہیشنگ آپریشن کا نتیجہ لکھا جاتا ہے:

شروڈنگر کا قابل اعتماد ڈاؤن لوڈ۔ انٹیل بوٹ گارڈ

وہ. موجودہ پی سی آر ویلیو پچھلے ایک پر منحصر ہے، اور یہ رجسٹر صرف اس وقت ری سیٹ ہوتے ہیں جب سسٹم ری سیٹ ہوتا ہے۔

اس طرح، ایم بی موڈ میں، کسی وقت، پی سی آرز اس کوڈ یا ڈیٹا کے ایک منفرد (ہیشنگ آپریشن کی صلاحیتوں کے اندر) شناخت کنندہ کی عکاسی کرتے ہیں جس کی پیمائش کی گئی تھی۔ پی سی آر اقدار کو کچھ ڈیٹا انکرپشن (TPM_Seal) آپریشن میں استعمال کیا جا سکتا ہے۔ اس کے بعد، ان کا ڈکرپشن (TPM_Unseal) صرف اسی صورت میں ممکن ہو گا جب لوڈنگ کے نتیجے میں PCR ویلیوز تبدیل نہ ہوں (یعنی ایک بھی "ماپا ہوا" جزو تبدیل نہ کیا گیا ہو)۔

تصدیق شدہ بوٹ

جو لوگ UEFI BIOS میں ترمیم کرنا پسند کرتے ہیں ان کے لیے سب سے بری چیز تصدیق شدہ بوٹ (VB) موڈ ہے، جس میں ہر بوٹ جزو خفیہ طور پر اگلے ایک کی سالمیت اور صداقت کی تصدیق کرتا ہے۔ اور تصدیقی غلطی کی صورت میں، (ان میں سے ایک) ہوتا ہے:

  • 1 منٹ سے 30 منٹ تک ٹائم آؤٹ کے ذریعے شٹ ڈاؤن (تاکہ صارف کو یہ سمجھنے کا وقت ملے کہ اس کا کمپیوٹر کیوں بوٹ نہیں ہوتا ہے، اور اگر ممکن ہو تو، BIOS کو بحال کرنے کی کوشش کرتا ہے)؛
  • فوری طور پر شٹ ڈاؤن (تاکہ صارف کے پاس سمجھنے کا وقت نہ ہو، بہت کم، کچھ بھی)؛
  • پرسکون اظہار کے ساتھ کام جاری رکھنا (اس صورت میں جب حفاظت کے لیے وقت نہ ہو، کیونکہ کرنے کے لیے مزید اہم چیزیں ہیں)۔

عمل کا انتخاب مخصوص Intel BG کنفیگریشن (یعنی نام نہاد نفاذ کی پالیسی پر) پر منحصر ہے، جو کمپیوٹر پلیٹ فارم وینڈر کے ذریعہ ایک خاص طور پر ڈیزائن کردہ اسٹوریج - چپ سیٹ فیوز (FPFs) میں مستقل طور پر ریکارڈ کیا جاتا ہے۔ اس نکتے پر ہم بعد میں مزید تفصیل سے بات کریں گے۔

کنفیگریشن کے علاوہ، وینڈر دو RSA 2048 کلیدیں تیار کرتا ہے اور ڈیٹا کے دو ڈھانچے بناتا ہے (تصویر میں دکھایا گیا ہے):

  1. وینڈر کا روٹ کلید مینی فیسٹ (KEYM، OEM روٹ کی مینی فیسٹ)، جس میں اس منشور کا SVN (سیکیورٹی ورژن نمبر)، اگلے منشور کی عوامی کلید کا SHA256 ہیش، RSA عوامی کلید (یعنی اس منشور کا عوامی حصہ) وینڈر کی جڑ کلید) اس منشور کے دستخط اور خود دستخط کی تصدیق کرنے کے لیے؛
  2. IBB منشور (IBBM، ابتدائی بوٹ بلاک مینی فیسٹ)، جس میں اس منشور کا SVN، IBB کا SHA256 ہیش، اس منشور کے دستخط اور خود دستخط کی تصدیق کے لیے عوامی کلید شامل ہے۔

OEM روٹ کی عوامی کلید کا SHA256 ہیش مستقل طور پر انٹیل BG کنفیگریشن کی طرح چپ سیٹ فیوز (FPFs) میں ریکارڈ کیا جاتا ہے۔ اگر Intel BG کنفیگریشن اس ٹیکنالوجی کو شامل کرنے کے لیے فراہم کرتی ہے، تو اب سے صرف OEM Root Key کے پرائیویٹ حصے کا مالک ہی اس سسٹم پر BIOS کو اپ ڈیٹ کر سکتا ہے (یعنی ان مینی فیسٹس کو دوبارہ گننے کے قابل ہو سکتا ہے)، یعنی فروش

شروڈنگر کا قابل اعتماد ڈاؤن لوڈ۔ انٹیل بوٹ گارڈ

تصویر کو دیکھتے وقت، اتنی لمبی تصدیقی سلسلہ کی ضرورت کے بارے میں فوری طور پر شکوک پیدا ہوتے ہیں - وہ ایک مینی فیسٹ استعمال کر سکتے تھے۔ چیزوں کو پیچیدہ کیوں؟

درحقیقت، Intel اس طرح وینڈر کو اپنی مصنوعات کی مختلف لائنوں کے لیے مختلف IBB کیز استعمال کرنے کا موقع فراہم کرتا ہے اور ایک کو روٹ کلید کے طور پر۔ اگر IBB کلید کا پرائیویٹ حصہ (جس کے ساتھ دوسرا مینی فیسٹ دستخط کیا گیا ہے) لیک ہو جاتا ہے، تو یہ واقعہ صرف ایک پروڈکٹ لائن کو متاثر کرے گا اور صرف اس وقت تک جب تک کہ وینڈر ایک نیا جوڑا تیار نہ کرے اور اگلی BIOS اپ ڈیٹ میں دوبارہ گنتی شدہ مینی فیسٹ کو شامل کرے۔

لیکن اگر روٹ کلید (جس کے ساتھ پہلے مینی فیسٹ پر دستخط کیے گئے ہیں) سے سمجھوتہ کیا گیا ہے، تو اسے تبدیل کرنا ممکن نہیں ہوگا؛ منسوخی کا کوئی طریقہ فراہم نہیں کیا گیا ہے۔ اس کلید کے عوامی حصے کی ہیش کو FPF میں ایک بار اور ہمیشہ کے لیے پروگرام کیا جاتا ہے۔

انٹیل بوٹ گارڈ کنفیگریشن

اب آئیے انٹیل بی جی کنفیگریشن اور اسے بنانے کے عمل کو قریب سے دیکھتے ہیں۔ اگر آپ انٹیل سسٹم ٹول کٹ (STK) سے فلیش امیج ٹول یوٹیلیٹی کے GUI میں متعلقہ ٹیب کو دیکھیں گے تو آپ دیکھیں گے کہ Intel BG کنفیگریشن میں وینڈر کی روٹ کلید کے عوامی حصے کا ایک ہیش شامل ہے، غیر واضح اقدار، وغیرہ انٹیل بی جی پروفائل۔

شروڈنگر کا قابل اعتماد ڈاؤن لوڈ۔ انٹیل بوٹ گارڈ

اس پروفائل کی ساخت:

typedef struct BG_PROFILE
{
	unsigned long Force_Boot_Guard_ACM : 1;
	unsigned long Verified_Boot : 1;
	unsigned long Measured_Boot : 1;
	unsigned long Protect_BIOS_Environment : 1;
	unsigned long Enforcement_Policy : 2; // 00b – do nothing
                                              // 01b – shutdown with timeout
                                              // 11b – immediate shutdown
	unsigned long : 26;
};

عام طور پر، Intel BG کنفیگریشن ایک بہت ہی لچکدار ادارہ ہے۔ مثال کے طور پر، Force_Boot_Guard_ACM پرچم پر غور کریں۔ جب اسے ہٹا دیا جاتا ہے، اگر SPI فلیش پر BG اسٹارٹ اپ ACM ماڈیول نہیں ملا، تو کوئی قابل اعتماد بوٹ نہیں آئے گا۔ وہ ناقابل اعتماد ہو جائے گا.

ہم پہلے ہی اوپر لکھ چکے ہیں کہ VB وضع کے لیے نفاذ کی پالیسی کو کنفیگر کیا جا سکتا ہے تاکہ اگر کوئی توثیقی خرابی ہو تو ایک ناقابل اعتماد ڈاؤن لوڈ ہو جائے گا۔

ایسی چیزوں کو دکانداروں کی صوابدید پر چھوڑ دیں...

GUI یوٹیلیٹی درج ذیل "ریڈی میڈ" پروفائلز فراہم کرتی ہے:

کمرہ
وضع۔
تفصیل

0
No_FVME
Intel BG ٹیکنالوجی غیر فعال

1
VE
VB موڈ فعال ہے، ٹائم آؤٹ کے ذریعے بند

2
VME
دونوں موڈز فعال ہیں (VB اور MB)، ٹائم آؤٹ کے ذریعے بند

3
VM
سسٹم کو آف کیے بغیر دونوں موڈز فعال ہیں۔

4
ایف وی ای
VB موڈ فعال، فوری طور پر بند

5
ایف وی ایم ای
دونوں موڈز فعال، فوری طور پر بند

جیسا کہ پہلے ہی ذکر کیا جا چکا ہے، Intel BG کنفیگریشن کو ایک بار اور سب کے لیے سسٹم وینڈر کے ذریعے چپ سیٹ فیوز (FPFs) میں لکھا جانا چاہیے - ایک چھوٹا (غیر تصدیق شدہ معلومات کے مطابق، صرف 256 بائٹس) ہارڈ ویئر کی معلومات کا ذخیرہ چپ سیٹ کے اندر، جسے پروگرام کیا جا سکتا ہے۔ انٹیل کی پیداواری سہولیات سے باہر (اسی لیے بالکل فیلڈ قابل پروگرام فیوز)۔

یہ ترتیب کو ذخیرہ کرنے کے لیے بہت اچھا ہے کیونکہ:

  • ڈیٹا کو ذخیرہ کرنے کے لیے ایک وقتی قابل پروگرام ایریا ہے (بالکل وہیں جہاں Intel BG کنفیگریشن لکھا ہے)؛
  • صرف Intel ME اسے پڑھ اور پروگرام کر سکتا ہے۔

لہذا، ایک مخصوص سسٹم پر Intel BG ٹیکنالوجی کے لیے کنفیگریشن سیٹ کرنے کے لیے، وینڈر پیداوار کے دوران مندرجہ ذیل کام کرتا ہے:

  1. فلیش امیج ٹول یوٹیلیٹی (انٹیل STK سے) کا استعمال کرتے ہوئے، یہ انٹیل ME ریجن (FPFs کے لیے نام نہاد عارضی آئینہ) کے اندر متغیر کی شکل میں دی گئی Intel BG کنفیگریشن کے ساتھ ایک فرم ویئر امیج بناتا ہے۔
  2. فلیش پروگرامنگ ٹول یوٹیلیٹی (Intel STK سے) کا استعمال کرتے ہوئے، یہ اس تصویر کو سسٹم کی SPI فلیش میموری پر لکھتا ہے اور نام نہاد کو بند کر دیتا ہے۔ مینوفیکچرنگ موڈ (اس معاملے میں، متعلقہ کمانڈ Intel ME کو بھیجا جاتا ہے)۔

ان کارروائیوں کے نتیجے میں، Intel ME ME خطے میں FPFs کے لیے آئینے سے FPFs کے لیے مخصوص اقدار کا ارتکاب کرے گا، SPI فلیش ڈسکرپٹرز میں ریزولوشنز کو انٹیل کی تجویز کردہ قدروں پر سیٹ کرے گا (اس کے آغاز میں بیان کیا گیا ہے۔ آرٹیکل) اور سسٹم ری سیٹ انجام دیں۔

انٹیل بوٹ گارڈ کے نفاذ کا تجزیہ

ایک مخصوص مثال کا استعمال کرتے ہوئے اس ٹیکنالوجی کے نفاذ کا تجزیہ کرنے کے لیے، ہم نے Intel BG ٹیکنالوجی کے نشانات کے لیے درج ذیل سسٹمز کو چیک کیا:

نظام
نوٹ

گیگا بائٹ GA-H170-D3H
Skylake، حمایت ہے

گیگا بائٹ GA-Q170-D3H
Skylake، حمایت ہے

گیگا بائٹ GA-B150-HD3
Skylake، حمایت ہے

MSI H170A گیمنگ پرو
Skylake، کوئی حمایت نہیں

لینووو تھنک پیڈ 460۔
Skylake، تعاون یافتہ، ٹیکنالوجی فعال

لینووو یوگا 2 پرو
Haswell، کوئی حمایت نہیں

Lenovo U330p
Haswell، کوئی حمایت نہیں

"سپورٹ" سے ہمارا مطلب ہے Intel BG اسٹارٹ اپ ACM ماڈیول کی موجودگی، اوپر بیان کردہ مینی فیسٹ اور BIOS میں متعلقہ کوڈ، یعنی تجزیہ کے لئے عمل درآمد.

مثال کے طور پر، آئیے دفتر سے ڈاؤن لوڈ کردہ کو لیں۔ گیگا بائٹ GA-H170-D3H (ورژن F4) کے لیے SPI فلیش میموری کی وینڈر ویب سائٹ کی تصویر۔

انٹیل سی پی یو بوٹ روم

سب سے پہلے، آئیے پروسیسر کے اعمال کے بارے میں بات کرتے ہیں اگر Intel BG ٹیکنالوجی فعال ہے۔

ڈیکرپٹ شدہ مائیکرو کوڈ کے نمونے تلاش کرنا ممکن نہیں تھا، لہذا ذیل میں بیان کردہ اعمال کو کیسے لاگو کیا جاتا ہے (مائیکرو کوڈ یا ہارڈ ویئر میں) ایک کھلا سوال ہے۔ تاہم، یہ ایک حقیقت ہے کہ جدید انٹیل پروسیسرز ان اعمال کو انجام دے سکتے ہیں۔

ری سیٹ حالت سے باہر نکلنے کے بعد، پروسیسر (فلیش میموری کے مواد کو ایڈریس اسپیس میں پہلے ہی میپ کیا جا چکا ہے) FIT (فرم ویئر انٹرفیس ٹیبل) ٹیبل تلاش کرتا ہے۔ اسے تلاش کرنا آسان ہے؛ اس کی طرف اشارہ کرنے والا ایڈریس FFFF FFC0h پر لکھا ہوا ہے۔

شروڈنگر کا قابل اعتماد ڈاؤن لوڈ۔ انٹیل بوٹ گارڈ
زیر غور مثال میں، قیمت FFD6 9500h اس پتے پر واقع ہے۔ اس ایڈریس تک رسائی حاصل کرکے، پروسیسر FIT ٹیبل دیکھتا ہے، جس کے مواد کو ریکارڈ میں تقسیم کیا جاتا ہے۔ پہلی اندراج درج ذیل ڈھانچے کا ہیڈر ہے:

typedef struct FIT_HEADER
{
	char           Tag[8];     // ‘_FIT_   ’
	unsigned long  NumEntries; // including FIT header entry
	unsigned short Version;    // 1.0
	unsigned char  EntryType;  // 0
	unsigned char  Checksum;
};

شروڈنگر کا قابل اعتماد ڈاؤن لوڈ۔ انٹیل بوٹ گارڈ
کسی نامعلوم وجہ سے، ان جدولوں میں ہمیشہ چیکسم کا حساب نہیں لگایا جاتا ہے (فیلڈ صفر رہ گیا ہے)۔

بقیہ اندراجات مختلف بائنریز کی طرف اشارہ کرتی ہیں جنہیں BIOS پر عمل درآمد سے پہلے پارس/عمل درآمد کرنے کی ضرورت ہے، یعنی لیگیسی RESET ویکٹر (FFFF FFF0h) پر سوئچ کرنے سے پہلے۔ اس طرح کے ہر اندراج کی ساخت اس طرح ہے:

typedef struct FIT_ENTRY
{
	unsigned long  BaseAddress;
	unsigned long  : 32;
	unsigned long  Size;
	unsigned short Version;     // 1.0
	unsigned char  EntryType;
	unsigned char  Checksum;
};

شروڈنگر کا قابل اعتماد ڈاؤن لوڈ۔ انٹیل بوٹ گارڈ
EntryType فیلڈ آپ کو بلاک کی قسم بتاتا ہے جس کی طرف یہ اندراج اشارہ کرتا ہے۔ ہم کئی اقسام کو جانتے ہیں:

enum FIT_ENTRY_TYPES
{
	FIT_HEADER = 0,
	MICROCODE_UPDATE,
	BG_ACM,
	BIOS_INIT = 7,
	TPM_POLICY,
	BIOS_POLICY,
	TXT_POLICY,
	BG_KEYM,
	BG_IBBM
};

اب یہ واضح ہے کہ اندراجات میں سے ایک Intel BG اسٹارٹ اپ ACM بائنری کے مقام کی طرف اشارہ کرتا ہے۔ اس بائنری کا ہیڈر ڈھانچہ انٹیل (ACMs، مائکرو کوڈ اپ ڈیٹس، Intel ME کوڈ سیکشنز، ...) کے تیار کردہ کوڈ ماڈیولز کے لیے مخصوص ہے۔

typedef struct BG_ACM_HEADER
{
	unsigned short ModuleType;     // 2
	unsigned short ModuleSubType;  // 3
	unsigned long  HeaderLength;   // in dwords
	unsigned long  : 32;
	unsigned long  : 32;
	unsigned long  ModuleVendor;   // 8086h
	unsigned long  Date;           // in BCD format
	unsigned long  TotalSize;      // in dwords
	unsigned long  unknown1[6];
	unsigned long  EntryPoint;
	unsigned long  unknown2[16];
	unsigned long  RsaKeySize;     // in dwords
	unsigned long  ScratchSize;    // in dwords
	unsigned char  RsaPubMod[256];
	unsigned long  RsaPubExp;
	unsigned char  RsaSig[256];
};

شروڈنگر کا قابل اعتماد ڈاؤن لوڈ۔ انٹیل بوٹ گارڈ
پروسیسر اس بائنری کو اپنے کیشے میں لوڈ کرتا ہے، اس کی تصدیق کرتا ہے اور اسے چلاتا ہے۔

انٹیل بی جی اسٹارٹ اپ ACM

اس ACM کے کام کا تجزیہ کرنے کے نتیجے میں، یہ واضح ہو گیا کہ یہ مندرجہ ذیل کام کرتا ہے:

  • Intel ME سے Intel BG کنفیگریشن حاصل کرتا ہے، جو چپ سیٹ فیوز (FPFs) میں لکھا جاتا ہے؛
  • KEYM اور IBBM ظاہر کرتا ہے اور ان کی تصدیق کرتا ہے۔

ان مینی فیسٹس کو تلاش کرنے کے لیے، ACM FIT ٹیبل کا بھی استعمال کرتا ہے، جس میں ڈھانچے کے ڈیٹا کی نشاندہی کرنے کے لیے داخلے کی دو اقسام ہیں (اوپر FIT_ENTRY_TYPES دیکھیں)۔

آئیے منشور پر گہری نظر ڈالیں۔ پہلے مینی فیسٹ کے ڈھانچے میں، ہمیں کئی غیر واضح مستقل نظر آتے ہیں، دوسرے مینی فیسٹ سے عوامی کلید کا ایک ہیش، اور عوامی OEM روٹ کی کو نیسٹڈ ڈھانچے کے طور پر دستخط کیا گیا ہے:

typedef struct KEY_MANIFEST
{
	char           Tag[8];          // ‘__KEYM__’
	unsigned char  : 8;             // 10h
	unsigned char  : 8;             // 10h
	unsigned char  : 8;             // 0
	unsigned char  : 8;             // 1
	unsigned short : 16;            // 0Bh
	unsigned short : 16;            // 20h == hash size?
	unsigned char  IbbmKeyHash[32]; // SHA256 of an IBBM public key
	BG_RSA_ENTRY   OemRootKey;
};

typedef struct BG_RSA_ENTRY
{
	unsigned char  : 8;             // 10h
	unsigned short : 16;            // 1
	unsigned char  : 8;             // 10h
	unsigned short RsaPubKeySize;   // 800h
	unsigned long  RsaPubExp;
	unsigned char  RsaPubKey[256];
	unsigned short : 16;            // 14
	unsigned char  : 8;             // 10h
	unsigned short RsaSigSize;      // 800h
	unsigned short : 16;            // 0Bh
	unsigned char  RsaSig[256];
};

شروڈنگر کا قابل اعتماد ڈاؤن لوڈ۔ انٹیل بوٹ گارڈ
OEM روٹ کی عوامی کلید کی تصدیق کرنے کے لیے، ہم یاد کرتے ہیں کہ ہم فیوز کے SHA256 ہیش کا استعمال کرتے ہیں، جو اس وقت پہلے ہی Intel ME سے موصول ہو چکا ہے۔

آئیے دوسرے منشور کی طرف چلتے ہیں۔ یہ تین ڈھانچے پر مشتمل ہے:

typedef struct IBB_MANIFEST
{
	ACBP Acbp;         // Boot policies
	IBBS Ibbs;         // IBB description
	IBB_DESCRIPTORS[];
	PMSG Pmsg;         // IBBM signature
};

پہلے میں کچھ مستقلات شامل ہیں:

typedef struct ACBP
{
	char           Tag[8];          // ‘__ACBP__’
	unsigned char  : 8;             // 10h
	unsigned char  : 8;             // 1
	unsigned char  : 8;             // 10h
	unsigned char  : 8;             // 0
	unsigned short : 16;            // x & F0h = 0
	unsigned short : 16;            // 0 < x <= 400h
};

دوسرے میں IBB کی SHA256 ہیش اور IBB کے مواد کو بیان کرنے والے وضاحت کنندگان کی تعداد شامل ہے (یعنی ہیش کا حساب کس سے کیا جاتا ہے):

typedef struct IBBS
{
	char           Tag[8];            // ‘__IBBS__’
	unsigned char  : 8;               // 10h
	unsigned char  : 8;               // 0
	unsigned char  : 8;               // 0
	unsigned char  : 8;               // x <= 0Fh
	unsigned long  : 32;              // x & FFFFFFF8h = 0
	unsigned long  Unknown[20];
	unsigned short : 16;              // 0Bh
	unsigned short : 16;              // 20h == hash size ?
	unsigned char  IbbHash[32];       // SHA256 of an IBB
	unsigned char  NumIbbDescriptors;
};

آئی بی بی کے بیان کنندگان ایک کے بعد ایک اس ڈھانچے کی پیروی کرتے ہیں۔ ان کے مواد کی مندرجہ ذیل شکل ہے:

typedef struct IBB_DESCRIPTOR
{
	unsigned long  : 32;
	unsigned long  BaseAddress;
	unsigned long  Size;
};

یہ آسان ہے: ہر ڈسکرپٹر میں IBB حصہ کا پتہ/سائز ہوتا ہے۔ اس طرح، ان ڈسکرپٹرز (خود بیان کنندگان کی ترتیب میں) کی طرف اشارہ کردہ بلاکس کا مجموعہ IBB ہے۔ اور، ایک اصول کے طور پر، IBB SEC اور PEI مراحل کے تمام ماڈیولز کا مجموعہ ہے۔

دوسرا مینی فیسٹ IBB عوامی کلید (پہلے مینی فیسٹ سے SHA256 ہیش سے تصدیق شدہ) اور اس مینی فیسٹ کے دستخط پر مشتمل ڈھانچے سے مکمل ہوتا ہے:

typedef struct PMSG
{
	char           Tag[8];            // ‘__PMSG__’
	unsigned char  : 8;               // 10h
	BG_RSA_ENTRY   IbbKey;
};

شروڈنگر کا قابل اعتماد ڈاؤن لوڈ۔ انٹیل بوٹ گارڈ
لہٰذا، UEFI BIOS کے ایگزیکیوٹنگ شروع ہونے سے پہلے ہی، پروسیسر ACM لانچ کرے گا، جو SEC اور PEI فیز کوڈ کے ساتھ سیکشنز کے مواد کی صداقت کی تصدیق کرے گا۔ اگلا، پروسیسر ACM سے باہر نکلتا ہے، RESET ویکٹر کی پیروی کرتا ہے اور BIOS پر عمل درآمد شروع کرتا ہے۔

تصدیق شدہ PEI پارٹیشن میں ایک ماڈیول ہونا چاہیے جو بقیہ BIOS (DXE کوڈ) کو چیک کرے گا۔ یہ ماڈیول پہلے سے ہی IBV (آزاد BIOS وینڈر) یا خود سسٹم وینڈر تیار کر رہا ہے۔ کیونکہ صرف Lenovo اور Gigabyte سسٹم ہمارے اختیار میں تھے اور ان میں Intel BG سپورٹ تھا؛ آئیے ان سسٹمز سے نکالے گئے کوڈ کو دیکھتے ہیں۔

UEFI BIOS ماڈیول LenovoVerifiedBootPei

Lenovo کے معاملے میں، یہ LenovoVerifiedBootPei ماڈیول {B9F2AC77-54C7-4075-B42E-C36325A9468D} نکلا، جسے Lenovo نے تیار کیا ہے۔

اس کا کام DXE کے لیے (GUID کے ذریعے) ہیش ٹیبل کو تلاش کرنا اور DXE کی تصدیق کرنا ہے۔

if (EFI_PEI_SERVICES->GetBootMode() != BOOT_ON_S3_RESUME)
{
	if (!FindHashTable())
		return EFI_NOT_FOUND;
	if (!VerifyDxe())
		return EFI_SECURITY_VIOLATION;
}

Хеш таблица {389CC6F2-1EA8-467B-AB8A-78E769AE2A15} имеет следующий формат:

typedef struct HASH_TABLE
{
	char          Tag[8];            // ‘$HASHTBL’
	unsigned long NumDxeDescriptors;
	DXE_DESCRIPTORS[];
};

typedef struct DXE_DESCRIPTOR
{
	unsigned char BlockHash[32];     // SHA256
	unsigned long Offset;
	unsigned long Size;
};

UEFI BIOS ماڈیول BootGuardPei

Gigabyte کے معاملے میں، یہ BootGuardPei ماڈیول {B41956E1-7CA2-42DB-9562-168389F0F066} نکلا، جسے AMI نے تیار کیا، لہذا، Intel BG سپورٹ کے ساتھ کسی بھی AMI BIOS میں موجود ہے۔

اس کا آپریٹنگ الگورتھم کچھ مختلف ہے، تاہم، یہ ایک ہی چیز پر ابلتا ہے:

int bootMode = EFI_PEI_SERVICES->GetBootMode();

if (bootMode != BOOT_ON_S3_RESUME &&
    bootMode != BOOT_ON_FLASH_UPDATE &&
    bootMode != BOOT_IN_RECOVERY_MODE)
{
	HOB* h = CreateHob();
	if (!FindHashTable())
		return EFI_NOT_FOUND;
	WriteHob(&h, VerifyDxe());
	return h;
}

ہیش ٹیبل {389CC6F2-1EA8-467B-AB8A-78E769AE2A15} جس کی اسے تلاش ہے اس کا فارمیٹ درج ذیل ہے:

typedef HASH_TABLE DXE_DESCRIPTORS[];

typedef struct DXE_DESCRIPTOR
{
	unsigned char BlockHash[32];     // SHA256
	unsigned long BaseAddress;
	unsigned long Size;
};

انٹیل بوٹ گارڈ 2.x

آئیے انٹیل بوٹ گارڈ کے ایک اور نفاذ کے بارے میں مختصراً بات کرتے ہیں، جو اپالو لیک مائیکرو آرکیٹیکچر - ASRock J4205-IT کے ساتھ Intel SoC پر مبنی ایک نئے سسٹم میں پایا گیا تھا۔

اگرچہ یہ ورژن صرف SoCs میں استعمال کیا جائے گا (کابی لیک پروسیسر مائکرو آرکیٹیکچر کے ساتھ نئے سسٹمز Intel Boot Guard 1.x کا استعمال جاری رکھے ہوئے ہیں)، یہ Intel SoC پلیٹ فارمز کے لیے نئے آرکیٹیکچر آپشن کا مطالعہ کرنے میں بہت دلچسپی رکھتا ہے، جس میں اہم تبدیلیاں دیکھی گئی ہیں، مثال کے طور پر:

  • BIOS اور Intel ME علاقے (یا بلکہ Intel TXE، Intel SoC کی اصطلاحات کے مطابق) اب ایک IFWI خطہ ہیں۔
  • اگرچہ پلیٹ فارم پر Intel BG کو فعال کیا گیا تھا، FIT، KEYM، IBBM جیسے ڈھانچے فلیش میموری میں نہیں ملے تھے۔
  • TXE اور ISH cores (x86) کے علاوہ، ایک تیسرا کور چپ سیٹ میں شامل کیا گیا تھا (ARC پھر سے، ویسے) - PMC (پاور مینجمنٹ کنٹرولر)، جو پاور سب سسٹم کی آپریٹیبلٹی کو یقینی بنانے اور کارکردگی کی نگرانی سے وابستہ ہے۔

شروڈنگر کا قابل اعتماد ڈاؤن لوڈ۔ انٹیل بوٹ گارڈ
نئے IFWI ریجن کا مواد درج ذیل ماڈیولز کا ایک سیٹ ہے:

تعصب
نام
تفصیل

0000 2000 ھ
ایس ایم آئی پی
پلیٹ فارم کی ایک خاص ترتیب، جس پر وینڈر کے دستخط ہوتے ہیں۔

0000 6000 ھ
آر بی ای پی
Intel TXE فرم ویئر کوڈ سیکشن، x86، دستخط شدہ Intel

0001 0000 ھ
پی ایم سی پی
Intel PMC فرم ویئر کوڈ سیکشن، ARC، نے Intel پر دستخط کیے۔

0002 0000 ھ
ایف ٹی پی آر
Intel TXE فرم ویئر کوڈ سیکشن، x86، دستخط شدہ Intel

0007 B000h
یو سی او ڈی
CPU کے لیے مائیکرو کوڈ اپ ڈیٹس، انٹیل کے ذریعے دستخط شدہ

0008 0000 ھ
IBBP
UEFI BIOS، SEC/PEI مراحل، x86، وینڈر کے دستخط شدہ

0021 8000 ھ
آئی ایس ایچ سی
Intel ISH فرم ویئر کوڈ سیکشن، x86، جس پر وینڈر کے دستخط ہیں۔

0025 8000 ھ
این ایف ٹی پی
Intel TXE فرم ویئر کوڈ سیکشن، x86، دستخط شدہ Intel

0036 1000 ھ
IUNP
نامعلوم ہے

0038 1000 ھ
او بی بی پی
UEFI BIOS، DXE مرحلہ، x86، غیر دستخط شدہ

TXE فرم ویئر کے تجزیہ کے دوران، یہ واضح ہو گیا کہ RESET کے بعد، TXE پروسیسر کو اس حالت میں رکھتا ہے جب تک کہ وہ CPU (FIT، ACM، RESET ویکٹر...) کے لیے ایڈریس اسپیس کے بنیادی مواد کو تیار نہ کر لے۔ مزید یہ کہ، TXE اس ڈیٹا کو اپنے SRAM میں رکھتا ہے، جس کے بعد یہ عارضی طور پر وہاں پروسیسر کو رسائی دیتا ہے اور اسے RESET سے "ریلیز" کرتا ہے۔

روٹ کٹس کے خلاف حفاظت پر

ٹھیک ہے، اب چلتے ہیں "گرم" چیزوں کی طرف۔ ہم نے ایک بار دریافت کیا کہ بہت سے سسٹمز پر، SPI فلیش ڈسکرپٹرز میں SPI فلیش میموری کے علاقوں تک رسائی کی اجازت ہوتی ہے تاکہ اس میموری کے تمام صارفین کسی بھی علاقے کو لکھ اور پڑھ سکیں۔ وہ. ہرگز نہیں.

MEinfo یوٹیلیٹی (Intel STK سے) کے ساتھ چیک کرنے کے بعد، ہم نے دیکھا کہ ان سسٹمز پر مینوفیکچرنگ موڈ بند نہیں ہے، اس لیے چپ سیٹ فیوز (FPFs) غیر متعینہ حالت میں رہ گئے ہیں۔ ہاں، Intel BG ایسے معاملات میں نہ تو آن ہوتا ہے اور نہ ہی آف ہوتا ہے۔

ہم مندرجہ ذیل سسٹمز کے بارے میں بات کر رہے ہیں (انٹیل بی جی کے حوالے سے اور جو مضمون میں بعد میں بیان کیا جائے گا، ہم ہاسویل پروسیسر مائیکرو آرکیٹیکچر اور اس سے اوپر والے سسٹمز کے بارے میں بات کریں گے):

  • تمام گیگا بائٹ مصنوعات؛
  • تمام MSI مصنوعات؛
  • Lenovo لیپ ٹاپ کے 21 ماڈل اور Lenovo سرورز کے 4 ماڈل۔

یقیناً، ہم نے دریافت کی اطلاع ان دکانداروں کے ساتھ ساتھ انٹیل کو بھی دی۔

ایک مناسب ردعمل صرف کی طرف سے آیا Lenovoجس نے مسئلہ کو پہچانا اور ایک پیچ جاری کیا.

گیگا بائٹ ایسا لگتا تھا کہ وہ خطرے کے بارے میں معلومات کو قبول کرتے ہیں، لیکن کسی بھی طرح سے تبصرہ نہیں کیا.

کے ساتھ مواصلت MSI آپ کی عوامی PGP کلید بھیجنے کی ہماری درخواست پر مکمل طور پر رک گیا (ان کو خفیہ کردہ شکل میں سیکیورٹی ایڈوائزری بھیجنے کے لیے)۔ انہوں نے کہا کہ وہ "ایک ہارڈویئر مینوفیکچرر ہیں اور PGP کیز تیار نہیں کرتے ہیں۔"

لیکن آئیے بات کی طرف آتے ہیں۔ چونکہ فیوز ایک غیر متعینہ حالت میں رہ گئے ہیں، اس لیے صارف (یا حملہ آور) انہیں آزادانہ طور پر پروگرام کر سکتا ہے (سب سے مشکل چیز Intel STK تلاش کریں۔)۔ ایسا کرنے کے لیے، آپ کو درج ذیل مراحل کو مکمل کرنے کی ضرورت ہے۔

1. ونڈوز OS میں بوٹ کریں (عام طور پر، ذیل میں بیان کردہ اعمال لینکس کے تحت بھی کیے جا سکتے ہیں، اگر آپ مطلوبہ OS کے لیے Intel STK کا اینالاگ تیار کرتے ہیں)۔ MEinfo یوٹیلیٹی کا استعمال کرتے ہوئے، یقینی بنائیں کہ فیوز اس سسٹم پر پروگرام نہیں کیے گئے ہیں۔

شروڈنگر کا قابل اعتماد ڈاؤن لوڈ۔ انٹیل بوٹ گارڈ
2. فلیش پروگرامنگ ٹول کا استعمال کرتے ہوئے فلیش میموری کے مواد کو پڑھیں۔

شروڈنگر کا قابل اعتماد ڈاؤن لوڈ۔ انٹیل بوٹ گارڈ
3. کسی بھی UEFI BIOS ایڈیٹنگ ٹول کا استعمال کرتے ہوئے پڑھنے والی تصویر کو کھولیں، ضروری تبدیلیاں کریں (مثال کے طور پر ایک روٹ کٹ متعارف کروائیں)، ME خطے میں موجودہ KEYM اور IBBM ڈھانچے بنائیں/ترمیم کریں۔

شروڈنگر کا قابل اعتماد ڈاؤن لوڈ۔ انٹیل بوٹ گارڈ
شروڈنگر کا قابل اعتماد ڈاؤن لوڈ۔ انٹیل بوٹ گارڈ
تصویر RSA کلید کے عوامی حصے کو نمایاں کرتی ہے، جس کا ہیش باقی Intel BG کنفیگریشن کے ساتھ چپ سیٹ فیوز میں پروگرام کیا جائے گا۔

4. فلیش امیج ٹول کا استعمال کرتے ہوئے، ایک نئی فرم ویئر امیج بنائیں (انٹیل بی جی کنفیگریشن سیٹ کرکے)۔

شروڈنگر کا قابل اعتماد ڈاؤن لوڈ۔ انٹیل بوٹ گارڈ
5. فلیش پروگرامنگ ٹول کا استعمال کرتے ہوئے میموری کو فلیش کرنے کے لیے ایک نئی تصویر لکھیں، اور MEinfo کا استعمال کرتے ہوئے تصدیق کریں کہ ME ریجن میں اب Intel BG کنفیگریشن موجود ہے۔

شروڈنگر کا قابل اعتماد ڈاؤن لوڈ۔ انٹیل بوٹ گارڈ
6. مینوفیکچرنگ موڈ کو بند کرنے کے لیے فلیش پروگرامنگ ٹول کا استعمال کریں۔

شروڈنگر کا قابل اعتماد ڈاؤن لوڈ۔ انٹیل بوٹ گارڈ
7. سسٹم ریبوٹ ہو جائے گا، جس کے بعد آپ MEinfo کا استعمال کر کے تصدیق کر سکتے ہیں کہ FPF اب پروگرام شدہ ہیں۔

شروڈنگر کا قابل اعتماد ڈاؤن لوڈ۔ انٹیل بوٹ گارڈ
یہ اعمال ہمیشہ کے لئے اس سسٹم پر Intel BG کو فعال کریں۔ کارروائی کو کالعدم نہیں کیا جا سکتا، جس کا مطلب ہے:

  • صرف روٹ کلید کے نجی حصے کا مالک (یعنی جس نے Intel BG کو فعال کیا ہے) اس سسٹم پر UEFI BIOS کو اپ ڈیٹ کرنے کے قابل ہو گا۔
  • اگر آپ اصل فرم ویئر کو اس سسٹم میں واپس کرتے ہیں، مثال کے طور پر، پروگرامر کا استعمال کرتے ہوئے، یہ آن بھی نہیں ہوگا (تصدیق کی غلطی کی صورت میں نفاذ کی پالیسی کا نتیجہ)؛
  • ایسے UEFI BIOS سے چھٹکارا حاصل کرنے کے لیے، آپ کو پروگرام شدہ FPFs کے ساتھ چپ سیٹ کو "صاف" کے ساتھ تبدیل کرنے کی ضرورت ہے (یعنی، اگر آپ کے پاس کار کی قیمت کے مطابق انفراریڈ سولڈرنگ اسٹیشن تک رسائی ہے تو چپ سیٹ کو دوبارہ فروخت کریں، یا صرف مدر بورڈ کو تبدیل کریں۔ )۔

یہ سمجھنے کے لیے کہ اس طرح کی روٹ کٹ کیا کر سکتی ہے، آپ کو اس بات کا جائزہ لینے کی ضرورت ہے کہ UEFI BIOS ماحول میں آپ کے کوڈ پر عمل درآمد کیا ممکن بناتا ہے۔ چلو کہتے ہیں، سب سے زیادہ مراعات یافتہ پروسیسر موڈ میں - SMM. اس طرح کی روٹ کٹ میں درج ذیل خصوصیات ہوسکتی ہیں۔

  • OS کے ساتھ متوازی طور پر عمل میں لایا گیا (آپ SMI مداخلت پیدا کرنے کے لیے پروسیسنگ کو ترتیب دے سکتے ہیں، جسے ٹائمر کے ذریعے متحرک کیا جائے گا)؛
  • SMM موڈ میں رہنے کے تمام فوائد ہیں (RAM اور ہارڈویئر وسائل کے مواد تک مکمل رسائی، OS سے رازداری)؛
  • ایس ایم ایم موڈ میں لانچ ہونے پر روٹ کٹ کے پروگرام کوڈ کو انکرپٹ اور ڈکرپٹ کیا جا سکتا ہے۔ صرف SMM موڈ میں دستیاب کوئی بھی ڈیٹا ایک خفیہ کاری کلید کے طور پر استعمال کیا جا سکتا ہے۔ مثال کے طور پر، SMRAM میں پتوں کے سیٹ سے ایک ہیش۔ اس کلید کو حاصل کرنے کے لیے، آپ کو SMM میں داخل ہونے کی ضرورت ہوگی۔ اور یہ دو طریقوں سے کیا جا سکتا ہے۔ SMM کوڈ میں RCE تلاش کریں اور اس کا فائدہ اٹھائیں، یا BIOS میں اپنا SMM ماڈیول شامل کریں، جو کہ ناممکن ہے کیونکہ ہم نے بوٹ گارڈ کو فعال کیا ہے۔

اس طرح، یہ کمزوری حملہ آور کو اجازت دیتی ہے:

  • سسٹم میں نامعلوم مقصد کی ایک پوشیدہ، ناقابل حذف روٹ کٹ بنائیں؛
  • اپنے کوڈ کو Intel SoC کے اندر موجود چپ سیٹ کور میں سے کسی ایک پر، یعنی Intel ISH پر لگائیں (تصویر پر غور سے دیکھیں)۔

شروڈنگر کا قابل اعتماد ڈاؤن لوڈ۔ انٹیل بوٹ گارڈ
شروڈنگر کا قابل اعتماد ڈاؤن لوڈ۔ انٹیل بوٹ گارڈ
اگرچہ Intel ISH سب سسٹم کی صلاحیتوں کو ابھی تک دریافت نہیں کیا گیا ہے، لیکن یہ Intel ME کے لیے ایک دلچسپ حملہ کرنے والا ویکٹر معلوم ہوتا ہے۔

نتائج

  1. مطالعہ نے انٹیل بوٹ گارڈ ٹیکنالوجی کے آپریشن کی تکنیکی تفصیل حاصل کرنا ممکن بنایا۔ غیر واضح ماڈل کے ذریعہ انٹیل کی سیکیورٹی میں کچھ رازوں کو مائنس کریں۔
  2. ایک حملے کا منظر نامہ پیش کیا گیا ہے جو آپ کو سسٹم میں ایک ان انسٹال روٹ کٹ بنانے کی اجازت دیتا ہے۔
  3. ہم نے دیکھا کہ جدید انٹیل پروسیسرز BIOS کے چلنے سے پہلے ہی بہت سارے ملکیتی کوڈ کو انجام دینے کی صلاحیت رکھتے ہیں۔
  4. Intel 64 فن تعمیر والے پلیٹ فارم مفت سافٹ ویئر چلانے کے لیے کم سے کم موزوں ہوتے جا رہے ہیں: ہارڈ ویئر کی تصدیق، ملکیتی ٹیکنالوجیز اور سب سسٹمز کی بڑھتی ہوئی تعداد (SOC chipset میں تین کور: x86 ME، x86 ISH اور ARC PMC)۔

تخفیف

وہ دکاندار جو جان بوجھ کر مینوفیکچرنگ موڈ کو کھلا چھوڑ دیتے ہیں انہیں اسے بند کرنا یقینی بنانا چاہیے۔ ابھی تک، صرف ان کی آنکھیں بند ہیں، اور کبی جھیل کے نئے نظام یہ ظاہر کرتے ہیں۔

صارفین -closemnf پیرامیٹر کے ساتھ فلیش پروگرامنگ ٹول چلا کر اپنے سسٹمز پر Intel BG کو غیر فعال کر سکتے ہیں (جو بیان کردہ خطرے کے لیے حساس ہیں)۔ سب سے پہلے، آپ کو یہ یقینی بنانا چاہیے (MEinfo کا استعمال کرتے ہوئے) کہ ME خطے میں Intel BG کنفیگریشن FPFs میں پروگرامنگ کے بعد اس ٹیکنالوجی کو آف کرنے کے لیے فراہم کرتی ہے۔

ماخذ: www.habr.com

نیا تبصرہ شامل کریں