
لینوکس چند سالی است که در فضای کاربر (User Space) از پشتیبانی سایهپشته (Shadow Stack) برای اجرای کنترلشده جریان کنترل با پشتیبانی سختافزاری و دفاع در برابر حملات بازگشتمحور (Return Oriented Programming - ROP) بهره میبرد. پردازندههای Intel Tiger Lake و جدیدتر یا AMD Zen 3 و بالاتر سختافزار لازم برای سایهپشته را دارند. اکنون کار تازهای برای آوردن این قابلیت به فضای هسته (Kernel Space) لینوکس آغاز شده است.
ارائه مجموعه وصله RFC توسط مهندس اینتل
دیو هانسن (Dave Hansen)، مهندس اینتل، روز چهارشنبه مجموعه وصلهای را در قالب درخواست برای دریافت نظر (Request for Comments - RFC) منتشر کرد تا سایهپشته هسته x86 (x86 Kernel Shadow Stacks) را معرفی کند. این کدها برای بحث در فهرست پستی هسته لینوکس (LKML) قرار گرفتهاند. به گفته او، سایهپشته یک ویژگی امنیتی پردازنده است که یک پشته موازی، جداگانه و محافظتشده برای ذخیره عمدتاً آدرسهای بازگشت فراهم میکند.
چرا سایهپشته هسته اهمیت دارد؟
هانسن سایهپشته را سازوکاری بسیار قدرتمند برای محافظت از جریان کنترل میداند و آن را «احتمالاً مهمترین دفاع هسته در سطح سیلیکون که لینوکس از آن استفاده نمیکند» توصیف کرده است. هدف این مجموعه وصله، اثبات مفهوم اجرای هسته با سایهپشته است؛ بخشی از آن امیدوار است در شکل فعلی قابل ادغام باشد و بخشهای دیگری صرفاً کد خام اولیهاند و به بازنویسی کامل نیاز دارند.
نیاز به FRED و محدودیت پردازندهها
کد RFC فعلی، پشتیبانی از تحویل انعطافپذیر رویداد بازگشت (Flexible Return Event Delivery - FRED) را نیز به عنوان یک الزام مطرح میکند. همین موضوع دامنه پشتیبانی سایهپشته هسته را به پردازندههای Intel Panther Lake و جدیدتر یا AMD Zen 6 و بالاتر محدود میکند. آزمایشهای اولیه این پشتیبانی تاکنون روی Intel Panther Lake انجام شده است.
ناسازگاریهای فعلی با برخی قابلیتهای لینوکس
یکی از چالشهای اصلی، ناسازگاری شماری از قابلیتهای لینوکس با سایهپشته هسته است. در این مرحله، موارد زیر از جمله ناسازگاریهای شناختهشده هستند:
- برخی دفاعهای پردازنده (CPU Mitigations) مانند Retpolines
- ردیابی گراف تابع (Function Graph Tracing)
- ترامپولینهای BPF (BPF Trampolines)
- Kexec
- حالت ترکیبی EFI (EFI Mixed Mode)
- KVM
- Xen PV
این فهرست نشان میدهد که پشتیبانی از سایهپشته هسته در گام نخست با محدودیتهای جدی روبهروست و هنوز راه درازی تا ادغام کامل در هسته لینوکس دارد.