SWAPGS - CPU قیاس آرائی پر عملدرآمد کے طریقہ کار میں ایک نیا خطرہ

Bitdefender کے محققین شناخت نئی کمزوری (CVE-2019-1125) جدید CPUs کے قیاس آرائی پر مبنی ہدایات پر عمل درآمد کے طریقہ کار میں، جسے SWAPGS کا نام دیا گیا ہے، جو مسئلہ پیدا کرنے والے پروسیسر انسٹرکشن کے نام سے مماثل ہے۔ کمزوری کی اجازت دیتا ہے ایک غیر مراعات یافتہ حملہ آور کو کرنل میموری والے علاقوں یا ورچوئل مشینوں کو چلانے کے مواد کا تعین کرنے کی اجازت دیں۔ مسئلہ تصدیق شدہ انٹیل پروسیسرز میں (x86_64) اور جزوی طور پر متاثر کرتا ہے AMD پروسیسرز جن کے لیے اہم حملہ ویکٹر ظاہر نہیں ہوتا ہے۔ اسپیکٹر اور میلٹ ڈاون کمزوریوں کا مقابلہ کرنے کے لیے پہلے لاگو کیے گئے طریقے انٹیل پروسیسرز کا استعمال کرتے وقت SWAPGS حملے سے حفاظت نہیں کرتے، لیکن لینکس، ChromeOS، Android اور Windows کے لیے پہلے سے ہی اصلاحات تجویز کی جا چکی ہیں۔

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

نئے حملے کی خاصیت ایک لیک کا استعمال ہے جو SWAPGS ہدایات کے قیاس آرائی پر عمل درآمد کے دوران ہوتا ہے، جو آپریٹنگ سسٹمز میں GS رجسٹر کی قدر کو تبدیل کرنے کے لیے استعمال ہوتا ہے جب کنٹرول صارف کی جگہ سے OS کرنل (GS) تک جاتا ہے۔ یوزر اسپیس میں استعمال ہونے والی ویلیو کو کرنل میں آپریشنز کے دوران استعمال ہونے والی ویلیو سے بدل دیا جاتا ہے)۔ لینکس کرنل میں، GS ایک per_cpu پوائنٹر کو اسٹور کرتا ہے جو کرنل ڈیٹا تک رسائی کے لیے استعمال ہوتا ہے، اور صارف کی جگہ پوائنٹرز کو TLS (تھریڈ لوکل اسٹوریج) پر اسٹور کرتی ہے۔

SWAPGS ہدایات کو دو بار کال کرنے سے بچنے کے لیے جب کرنل اسپیس سے دوبارہ کرنل تک رسائی حاصل کی جائے یا کوڈ پر عمل کرتے وقت جس میں GS رجسٹر میں تبدیلی کی ضرورت نہ ہو، ہدایات سے پہلے ایک چیک اور ایک مشروط برانچ کی جاتی ہے۔ قیاس آرائی کرنے والا انجن چیک کے نتیجے کا انتظار کیے بغیر SWAPGS ہدایات کے ساتھ کوڈ پر عمل درآمد کرنے کے لیے تیزی سے آگے بڑھتا ہے، اور اگر منتخب برانچ کی تصدیق نہیں ہوتی ہے، تو نتیجہ رد کر دیتا ہے۔ اس طرح، ایسی صورت حال پیدا ہو سکتی ہے جب ایک برانچ جس میں SWAPGS پر عمل درآمد شامل نہیں ہے کو قیاس آرائی کے ساتھ منتخب کیا جاتا ہے، لیکن قیاس آرائی کے دوران GS رجسٹر کی قدر کو SWAPGS ہدایات کے ذریعے تبدیل کر دیا جائے گا اور منحصر میموری آپریشنز میں استعمال کیا جائے گا جو CPU کیش میں ختم ہوتے ہیں۔

محققین نے دو حملے کے منظرنامے تجویز کیے ہیں جن کے لیے ایکسپلائٹ پروٹو ٹائپ تیار کیے گئے ہیں۔ پہلا منظر نامہ اس صورت حال پر مبنی ہے جہاں SWAPGS ہدایات کو قیاس آرائی کے ساتھ عمل میں نہیں لایا جاتا ہے، حالانکہ یہ اصل میں عمل درآمد میں استعمال ہوتا ہے، اور دوسرا اس کے برعکس ہے، جب SWAPGS ہدایات کو قیاس آرائی کے ساتھ عمل میں لایا جاتا ہے، حالانکہ اس پر عمل نہیں کیا جانا چاہیے۔ ہر منظر نامے کے لیے، استحصال کے لیے دو اختیارات ہیں: حملہ آور کرنل کے علاقے میں ایک مخصوص پتے پر قیمت کا تعین کر سکتا ہے، اور حملہ آور کرنل میں بے ترتیب پتوں پر ایک مخصوص قدر تلاش کر سکتا ہے۔ حملے کو انجام دینے میں کافی وقت لگتا ہے اور اس استحصال کو لیک ہونے میں کئی گھنٹے لگ سکتے ہیں۔

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

درست کرنے کے لیے میزبان سسٹم اور مہمان ماحول دونوں پر کرنل اپ ڈیٹ انسٹال کرنے کی ضرورت ہوتی ہے، اس کے بعد سسٹم ریبوٹ ہوتا ہے۔ لینکس پر تحفظ کو غیر فعال کرنے کے لیے، "nospectre_v1" آپشن استعمال کیا جا سکتا ہے، جو SWAPGS کے خطرے کو روکنے کے اقدامات کو بھی غیر فعال کر دیتا ہے۔ فکس کے طور پر دستیاب ہے۔ پیچ لینکس کرنل کے لیے، جو پہلے ہی ریلیز میں شامل ہے۔ 4.19.65, 5.2.7، 4.14.137، 4.9.188 اور 4.4.188۔ لینکس کی تقسیم کے لیے اپڈیٹس ابھی تک جاری نہیں کیے گئے ہیں (Debian, RHEL, Fedora, آرک لینکس, سوس/اوپن سوس, اوبنٹو)۔ ونڈوز پر، مسئلہ خاموشی سے حل ہو گیا تھا۔ جولائی کی تازہ کاری. گوگل کمپنی تیار کرنل 4.19 کے لیے درست کریں ChromeOS کے ساتھ بھیجے گئے اور اینڈرائڈ.

Bitdefender کے محققین کے مطابق، Intel کو پچھلے سال اگست میں اس مسئلے سے آگاہ کیا گیا تھا۔ اس مسئلے کو پروگرام کے لحاظ سے حل کرنے کا فیصلہ کیا گیا، جس کے لیے مائیکروسافٹ، گوگل اور لینکس کرنل کے ڈویلپرز ایک فکس کی مربوط ترقی میں شامل تھے۔ پرانے انٹیل پروسیسرز، پری آئیوی برج، استحصال میں استعمال ہونے والی WRGSBASE ہدایات کے لیے تعاون کی کمی کی وجہ سے حملہ کرنا زیادہ مشکل ہے۔ ARM، POWER، SPARC، MIPS، اور RISC-V سسٹمز اس مسئلے سے متاثر نہیں ہوتے ہیں کیونکہ وہ SWAPGS ہدایات کی حمایت نہیں کرتے ہیں۔

مسئلہ بنیادی طور پر انٹیل پروسیسرز کے مالکان کو متاثر کرتا ہے۔
AMD سسٹمز پر، صرف دوسرے حملے کا منظر نامہ دوبارہ پیش کیا جا سکا، جو کہ GS رجسٹر کی بنیادی قدر کی قیاس آرائی پر مبنی کارروائی تک محدود ہے، جسے بے ترتیب میموری والے علاقوں میں مخصوص اقدار کو تلاش کرنے کے لیے استعمال کیا جا سکتا ہے۔ اس حملے کے آپشن کو بلاک کرنے کے لیے کافی سپیکٹر v1 کے خلاف تحفظ کے موجودہ طریقے۔

ماخذ: opennet.ru

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