در بهروزرسانی اخیر هسته لینوکس (Linux kernel)، یک آسیبپذیری امنیتی در بخش sched/cache شناسایی و برطرف شده است که میتواند منجر به بروز وضعیت Use-After-Free (UAF) شود.
جزئیات فنی مشکل
این نقص امنیتی به دلیل وابستگی متقابل sched_cache_group و ساختار مدیریت حافظه mm ایجاد شده بود. در طراحی قبلی، آمار زمانبندی (scheduling statistics) در ساختار mm ذخیره میشد و در نتیجه، چرخه حیات این آمار به طور کامل به چرخه حیات mm گره خورده بود.
در تابع account_mm_sched()، دسترسی به آمار زمانبندی از طریق مسیر task->mm->sc_stat صورت میگرفت. مشکل زمانی رخ میداد که یک CPU در حال تغییر mm باشد و همزمان CPU دیگری تابع account_mm_sched() را اجرا کرده و سعی در دسترسی به حافظهای داشته باشد که احتمالاً دیگر معتبر نیست، که این امر منجر به خطای UAF میشد.
راهکار اصلاحی
برای رفع این مشکل، توسعهدهندگان لینوکس اقدام به جداسازی (Decouple) ساختار sched_cache_group از mm کردهاند. با این تغییر، مدیریت حافظه و آمار زمانبندی از یکدیگر مستقل شده و احتمال وقوع Race Condition و در نتیجه خطای UAF از بین رفته است.