متحرک لوڈر
مسئلہ کا جوہر: آپریشن کے دوران، ld.so پہلے ماحول سے LD_LIBRARY_PATH متغیر کی قدر نکالتا ہے اور _dl_split_path() فنکشن کا استعمال کرتے ہوئے اسے تاروں کی ایک صف میں بدل دیتا ہے - ڈائریکٹریز کے راستے۔ اگر بعد میں پتہ چلتا ہے کہ موجودہ عمل SUID/SGID ایپلیکیشن کے ذریعے شروع کیا گیا ہے، تو تخلیق شدہ صف اور درحقیقت LD_LIBRARY_PATH متغیر کو صاف کر دیا جاتا ہے۔ ایک ہی وقت میں، اگر _dl_split_path() میموری سے باہر ہو جائے (جو ماحولیاتی متغیر کے سائز پر واضح 256 kB کی حد کی وجہ سے مشکل ہے، لیکن نظریاتی طور پر ممکن ہے)، تو _dl_libpath متغیر کو NULL کی قدر ملے گی، اور اس کے بعد کی جانچ پڑتال اس متغیر کی قدر کال کو _dl_unsetenv("LD_LIBRARY_PATH") پر جانے پر مجبور کر دے گی۔
ماہرین کے ذریعہ پایا جانے والا خطرہ
اضافہ: مسئلہ کو ایک نمبر تفویض کیا گیا ہے۔
amd64 اور i386 (استحصال کو دوسرے فن تعمیر کے لئے ڈھال لیا جاسکتا ہے)۔
یہ مسئلہ ڈیفالٹ انسٹالیشن میں فائدہ مند ہے اور ایک غیر مراعات یافتہ مقامی صارف کو chpass یا passwd suid یوٹیلیٹیز کو چلاتے وقت لائبریری کے متبادل کے ذریعے کوڈ کو روٹ کے طور پر چلانے کی اجازت دیتا ہے۔ آپریشن کے لیے ضروری کم یادداشت کے حالات بنانے کے لیے، RLIMIT_DATA کی حد setrlimit کے ذریعے سیٹ کریں۔
ماخذ: opennet.ru