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