موضوع مقاله: قابلیت‌های امنیتی اوپن‌بی‌اس‌دی | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # قابلیت‌های امنیتی اوپن‌بی‌اس‌دی | مقدمه: سیستم‌عامل اوپن‌بی‌اس‌دی به خاطر تمرکزش بر روی امنیت و همینطور به خاطر ابداع و پیاده‌سازی کردن تعدادی تکنولوژی و قابلیت امنیتی شناخته می‌شود. | ## بخش 1: قابلیت‌های امنیتی اوپن‌بی‌اس‌دی | باگ‌ها و مشکلات نرم‌افزاری عمدتاً به خاطر اشتباهاتی که برنامه‌نویس در حین نوشتن برنامه مرتکب می‌شود، به وجود می‌آیند. این توابع حدود آرایه را بررسی نمی‌کنند و باعث می‌شوند آرایه‌ای که رشته در آن‌ها ذخیره شده، سرریز شود. با این حال، فهمیدن و درک کردن این دو تابع جایگزین، مشکل است و احتمال اینکه به صورت نادرست مورد استفاده قرار گیرند، بسیار بالاست. این دو تابع به صورت منطقی بوده و استفاده از آن‌ها آسان است و احتمال اینکه یک برنامه‌نویس اشتباهاً بافری را به صورت unterminated رها کند (یعنی کاراکتر null را در انتهای آن قرار ندهد) و باعث سرریز شدن بافر شود را کاهش می‌دهد. این دو تابع، توسط سیستم‌عامل‌های فری‌بی‌اس‌دی و نت‌بی‌اس‌دی هم مورد پذیرش قرار گرفته و در آن‌ها هم گنجانده شده‌است، با این حال، این دو تابع در کتابخانه سی گنو مورد پذیرش قرار نگرفت، چرا که اولریش دریپر، نگهدارنده این کتابخانه، با ادغام این توابع در کتابخانه سی گنو به شدت مخالفت کرد و اظهار داشت که هرچند ممکن است استفاده از این دو تابع توسط برنامه‌نویسان، احتمال به وجود امدن مشکلاتی که این دو تابع به خاطر حل آن به وجود آمده‌اند را کم کند، اما باز هم این احتمال وجود دارد که این دو تابع خود به گونه‌ای دیگر باعث پیش آمدن مشکل شوند. حفاظت از حافظه انگشتی|چپ|نحوه کارکرد stackgap و جلوگیری از سرریز بافر با قرار دادن یک فضای خالی با اندازه تصادفی در بالای پشته برنامه. اوپن‌بی‌اس‌دی تعدادی تکنولوژی به همراه خود دارد تا از حملات سرریز بافر و سرریز عدد صحیح جلوگیری کند. در ترتیب قرارگیری متغیرهای محلی پشته تغییری ایجاد شده تا بافرها پس از اشاره‌گرها قرار گیرند تا اگر سرریز بافر رخ داد، آسیبی نبینند. اگر در فهرست آرگومان‌های تابع، آرگومانی از نوع اشاره‌گر وجود داشته باشد، این نوع آرگومان‌ها قبل از بافرهای محلی قرار می‌گیرند و همینطور یک مقدار canary هم پس از بافرهای محلی قرار می‌گیرد. وقتی که اجرای تابع به اتمام می‌رسد و تابع خارج می‌شود (برمی‌گردد) این مقدار canary بررسی می‌شود. | ## بخش 2: قابلیت‌های امنیتی اوپن‌بی‌اس‌دی | اگر تغییر نکرده بود، سرریز بافر رخ نداده است، اما اگر تغییر کرده بود، احتمال رخ دادن سرریز بافر وجود دارد. به همین دلیل، ProPolice با اسفاده از یک فناوری‌های هوشمند، تشخیص می‌دهد که یک بافر چقدر آسیب‌پذیر است و آیا نیاز به محافظت دارد یا نه. بدین ترتیب با بررسی نکردن بافرهای قابل اطمینان، سربار تحمیل شده بر روی سیستم هم کم می‌شود. این قابلیت در دسامبر ۲۰۰۲ در جی‌سی‌سی موجود در اوپن‌بی‌اس‌دی پیاده‌سازی شد و اولین بار در نسخه ۳٫۳ در دسترس قرار گرفت. در همه معماری‌هایی که اوپن‌بی‌اس‌دی از آن‌ها پشتیبانی می‌کند، می‌توان از این قابلیت استفاده کرد و به صورت پیشفرض هم فعال شده‌است. بنابراین، هر گونه کدی که به زبان سی نوشته شده، در صورتی که بر روی اوپن‌بی‌اس‌دی کامپایل شود، به شکل پیشفرض مورد حفاظت قرار خواهد گرفت، بدون اینکه نیاز به مداخله کاربر باشد. به موجب این قابلیت، هر صفحه در فضای آدرس یک فرایند یا خواندنی است یا نوشتنی، اما نمی‌تواند به‌طور هم‌زمان هر دو باشد. در حالی که پیاده‌سازی کردن این قابلیت در معماری‌هایی نظیر AMD64 به دلیل داشتن بیت ان‌اکس سخت‌افزاری آسان است، اوپن‌بی‌اس‌دی یکی از معدود سیستم‌عامل‌هایی است که از این قابلیت در معماری i386 هم پشتیبانی می‌کند که فاقد قابلیت کنترل کردن بیت اجرا به ازای هر صفحه است. در سیستم‌عامل‌های سنتی یونیکس، تابع malloc حافظه را با گسترش دادن سگمنت داده یونیکس، به برنامه‌ها اختصاص می‌دهد. این روش باعث می‌شود تا پیاده‌سازی کردن راهکارهای قدرمتند در برابر مشکلات امنیتی سخت‌تر شود. | ## بخش 3: قابلیت‌های امنیتی اوپن‌بی‌اس‌دی | malloc در اوپن‌بی‌اس‌دی طوری پیاده‌سازی شده‌است که از فراخوان سیستمی mmap استفاده کند و این فراخوان سیستمی هم به نوبه خود طوری پیاده‌سازی شده که همیشه یک آدرس تصادفی از حافظه را برگرداند تا این اطمینان حاصل شود که نواحی مختلف به صورت پشت سر هم به برنامه اختصاص داده نشوند. علاوه بر آن، اختصاص دادن بلاک‌های کوچک در نواحی مشترک حافظه به شکل تصادفی است و تابع free هم طوری تغییر یافته که به جای اینکه حافظه را به صورت map شده برای فرایند رها کند، آن را بلافاصله به هسته سیستم برگرداند. این قابلیت‌ها شناسایی کردن باگ‌های برنامه را آسان‌تر می‌کنند و سوءاستفاده از باگ‌های برنامه را دشوارتر می‌کنند. این قابلیت باعث آشکار شدن چند اشکال در نرم‌افزارهای اجرا شده در اوپن‌بی‌اس‌دی ۳٫۸ شده‌است، به خصوص برنامه‌هایی که اطلاعات را فراتر از بخش آغازین یا پایانی یک بافر می‌خوانند که اینگونه باگ‌ها در گذشته مستقیما شناسایی نمی‌شدند، اما اکنون می‌توانند باعث بوقوع پیوستن یک خطا شوند. پیاده‌سازی این قابلیت‌ها بیش از سه سال به طول انجامیده است و کارایی چشمگیری هم از دست نرفته‌است و مشابه اهدافی هستند که برای کتابخانه اشکالزدایی malloc نوشته شده توسط بروس پرنز، به نام الکتریک فنس هستند. اکس بر روی نسخه‌ای از سیستم پنجره اکس که در اوپن‌بی‌اس‌دی استفاده می‌شود و زینوکارا نام دارد، تعدادی تغییر و ویژگی امنیتی با خود دارد. بخش سرور و برخی از برنامه‌های پیشفرض مجهز به تکنیکی به نام جداسازی اختیارات و دیگر بهینه‌سازی‌ها هستند و علاوه بر آن اوپن‌بی‌اس‌دی یک درایور «aperture» فراهم کرده تا دسترسی سیستم X به حافظه را محدود کند. با این حال، پس از فعالیت‌های اخیر Loïc Duflot بر روی نواقص امنیتی، تئو درات اظهار داشت که درایور aperture «بهترین کاریست که ما می‌توانیم انجام دهیم» و همچنین اکس «تمامی مدل‌های امنیتی که شما در دانشگاه با آن‌ها آشنا شده‌اید را نقض می‌کند. او سپس از توسعه‌دهندگان اکس بابت خواست تا «برای برطرف کردن این حفره قدیمی بزرگتر از ۱۰ سال وقت صرف کنند» اخیرا، یک دایور هسته VESA توسعه داده شده‌است ک که X را کمی آهسته‌تر اجرا می‌کند، اما بدون استفاده از آن درایور aperture. بعدها مشکلات امنیتی X برطرف شد و هم‌اکنون X را می‌توان بدون داشتن هرگونه امتیازی بر روی اوپن‌بی‌اس‌دی اجرا کرد. | ## جمع‌بندی | دیگر قابلیت‌ها جداسازی اختیارات، بازپس‌گیری اختیارات، chroot کردن و بارگذاری کتابخانه‌ها به صورت تصادفی در حافظه اصلی نقش مهمی را در بالا بردن امنیت سیستم ایفا می‌کنند.