در ابزار e2fsck که همراه بسته ارائه شده است , () که امکان اجرای کد مخرب را هنگام بررسی سیستم فایل حاوی دایرکتوریهای دستکاریشدهی خاص فراهم میکند. این آسیبپذیری در نسخههای ۱.۴۳.۳ تا ۱.۴۵.۴ تأیید شده بود. این آسیبپذیری در بهروزرسانی برطرف شد. این مشکل در توزیعها همچنان حل نشده باقی مانده است (, , , , ).
این آسیبپذیری ناشی از خطایی در تابع mutate_name() از فایل rehash.c است که برای بازسازی جداول هش مربوط به دایرکتوری استفاده میشود و تمام فایلهای درون یک دایرکتوری را به آن نگاشت میکند. خرابی ساختار hash_entry مربوط به دایرکتوری میتواند منجر به نوشته شدن دادههای مهاجم در ناحیهای خارج از بافر اختصاص داده شده شود. اگر چندین فایل با نام یکسان در جدول هش شناسایی شوند، ابزار e2fsck با افزودن ~0، ~1 و غیره به نام، فایلهای تکراری را تغییر نام میدهد. یک بافر 256 بایتی در پشته اختصاص داده میشود تا نام جدید را به طور موقت در طول این تغییر نام ذخیره کند.
اندازه دادههای کپیشده با عبارت "entry->name_len & 0xff" تعیین میشود، اما مقدار entry->name_len به جای محاسبه بر اساس اندازه واقعی نام، از یک ساختار دیسک بارگذاری میشود. اگر اندازه صفر باشد، اندیس آرایه روی -1 تنظیم میشود و شرایطی را برای سرریز عدد صحیح و رونویسی سایر دادهها روی پشته با مقدار "~0" ایجاد میکند. برای سیستمهای ۶۴ بیتی، سوءاستفاده از این آسیبپذیری بعید به نظر میرسد و نیازی به محدودیت اندازه پشته ندارد (ulimit -s unlimited). برای سیستمهای ۳۲ بیتی، سوءاستفاده ممکن در نظر گرفته میشود، اما نتیجه به شدت به نحوه کامپایل شدن فایل اجرایی توسط کامپایلر بستگی دارد.
برای انجام حمله، مهاجم باید به نحوی دادههای روی یک پارتیشن با سیستم فایل ext2، ext3 یا ext4 را خراب کند. از آنجایی که این عملیات نیاز به امتیازات کاربر ارشد دارد، این آسیبپذیری هنگام اسکن درایوهای خارجی یا تصاویر سیستم فایل خارجی به دست آمده با ابزار e2fsck تهدیدی ایجاد میکند.
منبع: opennet.ru
