0

ویژگی‌های آلپاین لینوکس بخش اول

ویژگی‌های اصلی آلپاین لینوکس

قابل‌توجه‌ترین ویژگی امنیتی این نسخه لینوکس رفع باگ‌های امنیتی کرنل لینوکس است. در این نسخه از سیستم‌عامل محبوب لینوکس گروه طراحی و توسعه سعی در برطرف نمودن باگ‌های هسته لینوکس داشته‌اند. گروه توسعه آلپاین موارد دیگری برای افزایش امنیت این نسخه از لینوکس ارائه نموده‌اند که در زیر به آن‌ها اشاره‌شده است.

آدرس‌دهی دینامیک مقادیر برنامه

کلیه اجراییه‌های آلپاین با عنوان PIE ساخته‌شده‌اند، که عملکرد صحیح آن‌ها بستگی به آدرس‌های حافظه مطلق ندارند، دقیقاً مانند کتابخانه‌های مشترک. چنین اجرایی در معرض ASLR قرار دارد، روشی که در آن هسته به‌طور دینامیکی برنامه‌ها را بین مکان‌های حافظه‌ی تصادفی جابجا می‌کند، که برای جلوگیری از انواع خاصی از حملات مفید است. مکانیزم ASLR یک تکنیک امنیتی است که در سیستم‌عامل‌ها استفاده می‌شود و اولین بار در سال ۲۰۰۱ پیاده‌سازی شد. نسخه‌های کنونی همه سیستم‌عامل‌های اصلی همچون iOS ،Android ،Windows ،macOS و Linux این ویژگی را دارا هستند، اما درعین‌حال به نظر می‌رسد ASLR آن‌قدرها هم که فکر می‌کنیم امن نیست (ASLR می‌تواند برای کسانی که دانشی درزمینه‌ی برنامه‌نویسی سطح پایین ندارند گیج‌کننده باشد. برای درک آن ابتدا باید مفهوم حافظه‌‌ی مجازی را درک نمود).حافظه مجازی یک تکنیک مدیریت حافظه با مزایای بسیار است که در ابتدا برای آسان‌تر کردن برنامه‌نویسی ایجاد شد. حافظه‌ی مجازی به برنامه‌ها این امکان را می‌دهد تا حافظه‌ی خود را آسان‌تر مدیریت کنند و همچنین آن‌ها را امن‌تر نیز می‌نماید. لزومی ندارد برنامه‌ها نگران این باشند که سایر برنامه‌ها داده‌های خود را کجا ذخیره می‌کنند و یا چقدر از حجم رم باقی‌مانده است، فقط باید در صورت نیاز از سیستم‌عامل درخواست حافظه‌ی بیشتر و یا بازگرداندن حافظه‌ی بلااستفاده را کنند. همه‌ی آن چیزی که یک برنامه می‌بیند یک‌تکه از آدرس‌های متوالی حافظه برای استفاده‌ی انحصاری است که آدرس مجازی نام دارند.
زمانی که یک برنامه نیاز به دسترسی به حافظه دارد، یک آدرس مجازی به سیستم‌عامل می‌دهد، سیستم‌عامل با واحد مدیریت حافظه‌ی CPU (یا به‌اختصار MMU) ارتباط برقرار می‌کند. MMU آدرس‌های مجازی را معادل‌های فیزیکی‌شان ترجمه می‌کند و این اطلاعات را به سیستم‌عامل بازمی‌گرداند، بنابراین از یک‌سو در هیچ زمانی برنامه مستقیماً با رم تعامل ندارد و از سوی دیگر یک برنامه اجازه‌ی دسترسی به حافظه‌ی برنامه‌ی دیگری را ندارد.
اصطلاح ASLR در ابتدا برای حفاظت در برابر آسیب‌پذیری سرریز بافر استفاده می‌شد. در این نوع حملات، مهاجمان به یک سیستم تا حدی که ظرفیت دارد داده‌های ناخواسته ارسال می‌کند سپس یک Payload مُخرب می‌فرستند که بر روی داده‌هایی که برنامه قصد دسترسی به آن‌ها را دارد، بازنویسی می‌شود. برای مثال، روش متداول JailbreakMe یکی از روش‌های Jailbreaking در iOS 4 از آسیب‌پذیری سرریز بافر استفاده می‌نمود که درنهایت شرکت اپل را وادار به افزودن ASLR به iOS 4.3 کرد.
در حملات سرریز بافر مهاجم باید محل ذخیره‌سازی هر قسمت از برنامه در حافظه را بداند که فهمیدن این موضوع معمولاً نیازمند یک فرآیند پیچیده‌ی آزمون‌وخطا است که پس از مشخص شدن، مهاجم باید یک Payload ایجاد کرده و محل مناسب برای تزریق آن را بیابد. به‌طورکلی، سوء‌استفاده از یک برنامه می‌تواند سخت و یا غیرممکن باشد اگر مهاجم محل ذخیره‌سازی کد هدف را نداند.
ASLR همراه با مدیریت حافظه‌ی مجازی برای تصادفی انتخاب کردن محل‌‌های ذخیره‌سازی قسمت‌های مختلف برنامه در حافظه عمل می‌نماید. هر زمان که برنامه در حال اجرا است، اجزاء آن (شامل استک، هیپ و برخی دیگر لایبرری‌ها) به یک آدرس متفاوت در حافظه‌ی مجازی مستقل مرتبط می‌شوند و در این صورت است که مهاجمان دیگر قادر به فهمیدن محل ذخیره‌سازی کد هدف از طریق آزمون‌وخطا نیستند زیرا آدرس آن هر بار متفاوت است. عموماً برنامه‌ها باید با پشتیبانی ASLR کامپایل شوند و این موضوع در حال تبدیل‌شدن به یک پیش‌فرض برای برنامه‌ها است.
لازم به ذکر است چندی پیش، محققان دانشگاه کالیفرنیا، مقاله‌ای تحت عنوان Jump Over ASLR: Attacking Branch Predictors to Bypass ASLR ارائه کردند. این مقاله شامل راهی برای حمله به Branch Target Buffer یا به‌اختصار BTB است که به‌عنوان بخشی از پردازشگر بوده و اگر دستورات پیش‌بینی نتیجه درست باشند، عملیات را تسریع می‌کند. با استفاده از روش گفته‌شده توسط نویسنده‌ی این مقاله، مشخص کردن محل‌ دستورات شناخته‌شده در یک برنامه‌ی در حال اجرا امکان‌پذیر است. این حمله بر روی یک سیستم لینوکسی با پردازشگر Intel Haswell (که نخستین بار در سال ۲۰۱۳ منتشر شد) اجرا شد اما احتمالاً می‌تواند بر روی هر سیستم‌عامل و پردازشگر مدرن دیگری قابل‌اجرا باشد. این مقاله چندین روش پیشنهاد داده است که می‌توان با استفاده از آن‌ها احتمال وقوع این حمله را کاهش داد. به‌تازگی، تکنیک‌های جدید و هوشمندانه‌ی ASLR تلاش بیشتری را از مهاجمان می‌طلبد و همچنین افزایش تعداد آنتروپی (تصادفی سازی) می‌تواند حمله‌ی Jump Over را غیرممکن سازد و به‌احتمال خیلی زیاد، سیستم‌عامل‌ها و پردازشگرهای جدیدتر در برابر این حمله ایمن خواهند بود. چنانچه مهاجمان از این روش سوء‌استفاده کنند، این نقص باعث افزایش آسیب احتمالی می‌شود که یک مهاجم می‌تواند برای دستگاه‌ها ایجاد کند. این سطح از دسترسی بی‌سابقه نیست، مایکروسافت و اپل، ASLR را در سیستم‌عامل‌‌هایی که در سال ۲۰۰۷ و بعد از چنین حملاتی به بازار عرضه نمودند پیاده‌سازی کردند.
روش دیگری که در برابر حمله سرریز بافر مهم است PointGuardمی‌باشد. این روش‌ برای محافظت از اشاره‌گرها استفاده می‌شود، PointGuard اشاره‌گرها را هنگام ذخیره‌سازی در حافظه رمزگذاری می‌نماید و تنها زمانی آن‌ها را رمزگشایی می‌کند که در ثبات‌ها بار می‌شوند. بنابراین این ابزار از اشاره‌گرها محافظت کرده و در مقابل بسیاری از حملات سرریزی بافر مقاوم است. همچنین PointGuard کمترین سربار کار آیی را به سیستم تحمیل می‌کند. این تکنیک وابسته به این است که اشاره‌گرها همیشه قبل از استفاده، درون ثبات بار شوند.
روش دیگری که می‌تواند در مقابل حملات سرریز بافر مفید باشد استفاده از قناری‌هاست. قناری یک مقدار معین است که بین بافر و داده‌های کنترلی روی پشته قرار می‌گیرد تا سرریزی بافر را تشخیص دهد. یکی از روش‌های استفاده از قناری، درج کردن آن قبل از آدرس بازگشت ذخیره‌شده روی پشته و سپس بررسی آن هنگام فراخوانی تابع می‌باشد. درصورتی‌که سرریزی بافر باعث تغییر آدرس بازگشت تابع شود، حتماً قبل از آن مقدار قناری خراب‌شده است. مسئله‌ی مهمی که در مورد قناری وجود دارد این است که مهاجم نتواند مقدار آن را حدس بزند و نیز نتواند آن را در رشته‌ی سرریزی تعبیه کرده و بازنویسی نماید. گروه توسعه آلپاین تمامی موارد بالا را در کد نویسی‌های خود رعایت نموده‌اند تا این نسخه از لینوکس امنیت لازم را دارا باشد.

ارسال دیدگاه