سیستم عامل اوپن بی اس دی به خاطر تمرکزش بر روی امنیت و همینطور به خاطر ابداع و پیاده سازی کردن تعدادی تکنولوژی و قابلیت امنیتی شناخته می شود. این مقاله به بررسی این قابلیت ها می پردازد.
باگ ها و مشکلات نرم افزاری عمدتاً به خاطر اشتباهاتی که برنامه نویس در حین نوشتن برنامه مرتکب می شود، به وجود می آیند. یک اشتباه رایج، استفاده از توابع strcpy و strcat در زبان برنامه نویسی سی است. این توابع حدود آرایه را بررسی نمی کنند و باعث می شوند آرایه ای که رشته در آن ها ذخیره شده، سرریز شود. برای حل کردن این مشکل، دو تابع به نام های strncpy و strncat به عنوان جایگزینی برای آن دو تابع معرفی شده اند. با این حال، فهمیدن و درک کردن این دو تابع جایگزین، مشکل است و احتمال اینکه به صورت نادرست مورد استفاده قرار گیرند، بسیار بالاست. به همین دلیل، دو تن از توسعه دهندگان اوپن بی اس دی به نام های تاد سی. میلر و تئو درات توابع strlcpy و strlcat را به عنوان جایگزینی برای این توابع طراحی کردند. این دو تابع به صورت منطقی بوده و استفاده از آن ها آسان است و احتمال اینکه یک برنامه نویس اشتباهاً بافری را به صورت unterminated رها کند ( یعنی کاراکتر null را در انتهای آن قرار ندهد ) و باعث سرریز شدن بافر شود را کاهش می دهد. این دو تابع، توسط سیستم عامل های فری بی اس دی و نت بی اس دی هم مورد پذیرش قرار گرفته و در آن ها هم گنجانده شده است، با این حال، این دو تابع در کتابخانه سی گنو مورد پذیرش قرار نگرفت، چرا که اولریش دریپر، نگهدارنده این کتابخانه، با ادغام این توابع در کتابخانه سی گنو به شدت مخالفت کرد و اظهار داشت که هرچند ممکن است استفاده از این دو تابع توسط برنامه نویسان، احتمال به وجود امدن مشکلاتی که این دو تابع به خاطر حل آن به وجود آمده اند را کم کند، اما باز هم این احتمال وجود دارد که این دو تابع خود به گونه ای دیگر باعث پیش آمدن مشکل شوند.
در اوپن بی اس دی، برنامه linker طوری تغییر یافته که در صورت پیدا شدن توابع نامطمئنی همچون strcpy, strcat یا sprintf هشداری را نمایش دهد. تمام این توابع در درخت کد منبع اوپن بی اس دی جایگزین شده اند. به علاوه، یک static bounds checker هم در اوپن بی اس دی گنجانده شده تا اشتباهات رایج در برنامه نویسی را در حین کامپایل شدن برنامه ها تشخیص دهد. از دیگر رابط های برنامه نویسی نرم افزاری که توسط اوپن بی اس دی طراحی شده اند، می توان به issetugid و arc4random اشاره کرد.
این نوشته برگرفته از سایت ویکی پدیا می باشد، اگر نادرست یا توهین آمیز است، لطفا گزارش دهید: گزارش تخلفباگ ها و مشکلات نرم افزاری عمدتاً به خاطر اشتباهاتی که برنامه نویس در حین نوشتن برنامه مرتکب می شود، به وجود می آیند. یک اشتباه رایج، استفاده از توابع strcpy و strcat در زبان برنامه نویسی سی است. این توابع حدود آرایه را بررسی نمی کنند و باعث می شوند آرایه ای که رشته در آن ها ذخیره شده، سرریز شود. برای حل کردن این مشکل، دو تابع به نام های strncpy و strncat به عنوان جایگزینی برای آن دو تابع معرفی شده اند. با این حال، فهمیدن و درک کردن این دو تابع جایگزین، مشکل است و احتمال اینکه به صورت نادرست مورد استفاده قرار گیرند، بسیار بالاست. به همین دلیل، دو تن از توسعه دهندگان اوپن بی اس دی به نام های تاد سی. میلر و تئو درات توابع strlcpy و strlcat را به عنوان جایگزینی برای این توابع طراحی کردند. این دو تابع به صورت منطقی بوده و استفاده از آن ها آسان است و احتمال اینکه یک برنامه نویس اشتباهاً بافری را به صورت unterminated رها کند ( یعنی کاراکتر null را در انتهای آن قرار ندهد ) و باعث سرریز شدن بافر شود را کاهش می دهد. این دو تابع، توسط سیستم عامل های فری بی اس دی و نت بی اس دی هم مورد پذیرش قرار گرفته و در آن ها هم گنجانده شده است، با این حال، این دو تابع در کتابخانه سی گنو مورد پذیرش قرار نگرفت، چرا که اولریش دریپر، نگهدارنده این کتابخانه، با ادغام این توابع در کتابخانه سی گنو به شدت مخالفت کرد و اظهار داشت که هرچند ممکن است استفاده از این دو تابع توسط برنامه نویسان، احتمال به وجود امدن مشکلاتی که این دو تابع به خاطر حل آن به وجود آمده اند را کم کند، اما باز هم این احتمال وجود دارد که این دو تابع خود به گونه ای دیگر باعث پیش آمدن مشکل شوند.
در اوپن بی اس دی، برنامه linker طوری تغییر یافته که در صورت پیدا شدن توابع نامطمئنی همچون strcpy, strcat یا sprintf هشداری را نمایش دهد. تمام این توابع در درخت کد منبع اوپن بی اس دی جایگزین شده اند. به علاوه، یک static bounds checker هم در اوپن بی اس دی گنجانده شده تا اشتباهات رایج در برنامه نویسی را در حین کامپایل شدن برنامه ها تشخیص دهد. از دیگر رابط های برنامه نویسی نرم افزاری که توسط اوپن بی اس دی طراحی شده اند، می توان به issetugid و arc4random اشاره کرد.