زنگ معیاری لائبریری میں کمزوری۔

std::fs::remove_dir_all() فنکشن میں ریس کی حالت کی وجہ سے رسٹ معیاری لائبریری میں ایک کمزوری (CVE-2022-21658) کی نشاندہی کی گئی ہے۔ اگر اس فنکشن کو کسی مراعات یافتہ ایپلی کیشن میں عارضی فائلوں کو حذف کرنے کے لیے استعمال کیا جاتا ہے، تو حملہ آور صوابدیدی نظام فائلوں اور ڈائریکٹریوں کو حذف کر سکتا ہے جنہیں عام طور پر حملہ آور کو حذف کرنے تک رسائی حاصل نہیں ہوتی۔

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

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

زنگ کے 1.0.0 سے 1.58.0 تک کے تمام ورژن متاثر ہوئے ہیں۔ مسئلہ ابھی پیچ کی شکل میں حل ہو گیا ہے (فکس کو 1.58.1 ریلیز میں شامل کیا جائے گا، جس کی توقع چند گھنٹوں میں ہے)۔ آپ ان صفحات پر تقسیم میں کمزوری کے خاتمے کی نگرانی کر سکتے ہیں: Debian، RHEL، SUSE، Fedora، Ubuntu، Arch، FreeBSD۔ بلند مراعات کے ساتھ چلنے والے رسٹ پروگراموں کے تمام صارفین اور remove_dir_all فنکشن استعمال کرنے والوں کو مشورہ دیا جاتا ہے کہ وہ فوری طور پر Rust کو ورژن 1.58.1 میں اپ ڈیٹ کریں۔ یہ دلچسپ بات ہے کہ جاری کردہ پیچ تمام سسٹمز پر مسئلہ حل نہیں کرتا؛ مثال کے طور پر، REDOX OS اور macOS کے 10.10 (Yosemite) سے پہلے کے ورژن میں، O_NOFOLLOW پرچم کی عدم موجودگی کی وجہ سے خطرے کو مسدود نہیں کیا گیا ہے، جو مندرجہ ذیل علامتی کو غیر فعال کر دیتا ہے۔ لنکس

ماخذ: opennet.ru

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