لینکس کرنل کوڑا کرکٹ جمع کرنے والے میں ریس کی حالت جو استحقاق میں اضافے کا باعث بن سکتی ہے

گوگل پروجیکٹ زیرو ٹیم کے جان ہارن، جس نے ایک بار سپیکٹر اور میلٹ ڈاؤن کے خطرات کی نشاندہی کی تھی، لینکس کرنل کوڑے کو جمع کرنے والے میں کمزوری (CVE-2021-4083) کے استحصال کے لیے ایک تکنیک شائع کی۔ خطرہ ریس کی حالت کی وجہ سے ہے جب یونکس ساکٹ پر فائل ڈسکرپٹرز کو صاف کرتے ہیں اور ممکنہ طور پر مقامی غیر مراعات یافتہ صارف کو کرنل کی سطح پر اپنے کوڈ پر عمل درآمد کرنے کی اجازت دیتا ہے۔

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

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

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

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

کمزوری سے فائدہ اٹھانے کی تکنیک کا انکشاف 90 دن کی عدم انکشاف کی مدت کے بعد کیا گیا۔ یہ مسئلہ کرنل 2.6.32 کے بعد سے ظاہر ہوتا ہے اور دسمبر کے اوائل میں طے کیا گیا تھا۔ فکس کو کرنل 5.16 میں شامل کیا گیا تھا اور اسے کرنل کی LTS برانچز اور ڈسٹری بیوشنز میں فراہم کردہ کرنل پیکجز میں بھی منتقل کیا گیا تھا۔ یہ قابل ذکر ہے کہ اسی طرح کے مسئلے CVE-2021-0920 کے تجزیہ کے دوران کمزوری کی نشاندہی کی گئی تھی، جو MSG_PEEK پرچم پر کارروائی کرتے وقت کوڑا اٹھانے والے میں خود کو ظاہر کرتا ہے۔

ماخذ: opennet.ru

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