کدنویسی امن

دانشنامه عمومی

برنامه نویسی امن، تمرین توسعه نرم افزارهای کامپیوتری است تا از ایجاد آسیب پذیری های امنیتی به طور تصادفی جلوگیری شود. نقص ها، اشکالات و خطاهای منطقی به طور مداوم علت اصلی آسیب پذیری های نرم افزاری است. از طریق تجزیه و تحلیل هزاران آسیب پذیری گزارش شده، متخصصان امنیتی کشف کرده اند که بیشتر آسیب پذیری ها به دلیل خطاهای برنامه نویسی رایج هستند. با شناسایی شیوه های نادرست برنامه نویسی که منجر به خطا می شوند و آموزش توسعه دهندگان، سازمان ها می توانند اقدامات پیشگیرانه ای را جهت کاهش یا حذف آسیب پذیری های نرم افزاری قبل از استقرار در محیط های عملیاتی آن ها را از بین ببرند.
سرریز بافر، یک آسیب پذیری امنیتی نرم افزاری رایج می باشد، زمانی اتفاق می افتد که یک فرایند تلاش می کند داده های بیشتری نسبت به ظرفیت بافر ذخیره کند. برای مثال، در صورتی که ( ۸ بخش ) فضا برای ذخیره سازی داشته باشیم، اگر تلاش کنیم یک فضای بیشتر ( یعنی ۹ بخش ) را مورد استفاده قرار دهیم خطا وجود خواهد داشت. در حافظه کامپیوتر داده های سرریز شده ممکن است داده ها را در مکان بعدی بازنویسی کنند که می تواند یک آسیب پذیری امنیتی ( انفجار پشته ) یا خاتمه برنامه ( segmentation fault ) رخ دهد.
نمونه یک برنامه نوشته شده به زبان C که مستعد سرریز بافر است
int vulnerable_function ( char * large_user_input ) { char dst; strcpy ( dst, large_user_input ) ; } اگر ورودی کاربر بزرگتر از بافر مقصد باشد، سرریز بافر رخ خواهد داد. برای رفع خطای این برنامه ناامن از سرریز بافر احتمالی از strncpy استفاده کنید.
int secure_function ( char * user_input ) { char dst; //copy a maximum of BUF_SIZE bytes strncpy ( dst, user_input, BUF_SIZE ) ; } یک جایگزین امن دیگر این است که به صورت پویا حافظه را با استفاده از malloc بگذارید .
char * secure_copy ( char * src ) { size_t len = strlen ( src ) ; char * dst = ( char * ) malloc ( len + 1 ) ; if ( dst != NULL ) { strncpy ( dst, src, len ) ; //append null terminator dst = ' \0' ; } return dst; } در قطعه کد بالا، برنامه تلاش می کند تا محتویات src را به dst کپی کند ، در حالی که همچنین مقدار بازگشتی malloc را بررسی می کند تا اطمینان حاصل شود که حافظه کافی برای مقصد buffer اختصاص داده می شود.
حمله رشته فرمت زمانی رخ می دهد که مهاجم ورودی های خاصی را فراهم می کند که در نهایت به عنوان یک استدلال برای یک تابع که قالب بندی را انجام می دهد، مانند printf ( ) وارد می شود. این حمله شامل خواندن دشمن یا نوشتن آن به پشته می شود.
عکس کدنویسی امن
این نوشته برگرفته از سایت ویکی پدیا می باشد، اگر نادرست یا توهین آمیز است، لطفا گزارش دهید: گزارش تخلف

پیشنهاد کاربران