‫ برنامه‌نويسي امن با زبان C – قوانين و پيشنهادات تكميلي 4

IRCAR201110116

عنصر اصلي در برنامه‌نويسي امن با زبان‌هاي مختلف برنامه‌نويسي، مستندسازي خوب و استفاده از استانداردهاي قابل اجرا است. استانداردهاي كدنويسي، برنامه‌نويسان را ترغيب به پيروي از مجموعه‌اي متحدالشكل از قوانين و راهنمايي‌هايي مي‌كند كه بر اساس نيازمندي‌هاي پروژه و سازمان تعيين شده است، نه بر اساس سلايق و مهارت‌هاي مختلف برنامه‌نويسان. به محض تعيين استانداردهاي مذكور، ميتوان از آن به عنوان معياري براي ارزيابي كدهاي منبع، چه به صورت دستي و چه به صورت اتوماتيك استفاده كرد.

از استانداردهاي معروف در اين زمينه مي‌توان به استانداردCERT براي كدنويسي امن اشاره كرد كه يك سري از قوانين و پيشنهادات را براي كدنويسي امن با زبان‌هاي برنامه‌نويسي C، C++ و جاوا ارائه مي‌دهد. هدف از اين قوانين و پيشنهادات، حذف عادت‌هاي كدنويسي ناامن و رفتارهاي تعريف نشده است كه منجر به آسيب‌پذيري‌هاي قابل سوءاستفاده مي‌شود. به كارگيري استانداردهاي مذكور منجر به توليد سيستم‌هاي با كيفيت بالاتر مي‌شود كه در برابر حملات بالقوه، پايدارتر و مقاوم‌تر هستند.

در مقاله‌هاي قبلي، كليات استاندارد CERT در زمينه مزبور را توضيح داديم و در سري مقاله‌هاي برنامه‌نويسي امن به زبان C به صورت تخصصي‌تر شيوه برنامه‌نويسي امن با اين زبان را مورد بررسي قرار مي‌دهيم. قابل ذكر است كه در اين استاندارد 89 قانون و 134 پيشنهاد براي برنامه‌نويسي امن با زبان C ارائه شده است كه در اين سري مقالات، مهمترين آنها را كه در سطح يك قرار دارند، شرح خواهيم داد. براي كسب اطلاعات بيشتر در مورد سطح‌بندي قوانين و پيشنهادات به مقاله "آشنايي با استاندارد CERT براي برنامه نويسي امن" مراجعه فرماييد. سري مقالات حاضر با عنوان قوانين و پيشنهادات تكميلي (Miscellaneous) آخرين سري مقالات برنامه‌نويسي امن به زبان C است كه در آن قوانين و پيشنهاداتي توضيح داده مي‌شوند كه در دسته بندي‌هاي قبلي نگنجيده‌اند.

 
 

45.  MSC32-C – اطمينان حاصل كنيد كه تابع توليد كننده اعداد تصادفي به خوبي مقداردهي اوليه شده است.

 

يك شبه توليد كننده اعداد تصادفي (PRNG- Pseudo-random number generator) يك الگوريتم قطعي است كه توانايي توليد دنباله اي از اعداد را دارد كه تقريبي از اعداد تصادفي را فراهم مي سازد. هر دنباله اي به طور كامل توسط وضعيت اوليه PRNG و الگوريتم تغيير وضعيت مشخص مي شود. اغلب PRNG ها امكان تنظيم وضعيت اوليه به نام seed state را فراهم مي آورند كه به اين عمل seeding يا تعيين مقدار اوليه گفته مي شود.

در صورتي كه PRNG هر بار با وضعيت يكساني مقداردهي اوليه شود و يا به صورت ضمني مقداردهي اوليه شود، منجر به توليد ترتيبي يكسان از اعداد تصادفي در اجراهاي مختلف خواهد شد. در نتيجه، بعد از اولين اجراي PRNG، فرد مهاجم مي تواند ترتيب اعداد تصادفي را پيش بيني كرده به طوري كه باعث بروز بسياري از آسيب پذيري هاي مختلف و مخصوصاً آسيب پذيري هاي امنيتي خواهد شد.

به عنوان راه حل، شما بايد هميشه اطمينان حاصل كنيد كه تابع PRNG به خوبي مقداردهي اوليه شده است. در واقع، منظور اينست كه در هر فراخواني توالي متفاوتي از اعداد تصادفي توليد شود.

 

46. MSC32-C – از نسخه هاي قديمي يا تأييد نشده توابع استفاده نكنيد.

 

از توابع قديمي يا تأييد نشده تا زماني كه جايگزين هاي مطمئن تري وجود دارند، استفاده نكنيد. ليست توابع تأييد نشده در استاندارد C99 آمده است.

در جدول زير نيز ليست توابع قديمي كه بايد از آنها اجتناب كرد آورده شده است:

 
 




نظرات

بدون نظر
شما برای نظر دادن باید وارد شوید

نوشته

 
تاریخ ایجاد: 18 مرداد 1393

دسته‌ها

امتیاز

امتیاز شما
تعداد امتیازها:0