لیستی از ۲۵ اشتباه خطرناک برنامه‌نویسی

* موسسه SANS یک گزارش کاملی منتشر کرده از ۲۵ تا از خطرناکترین اشتباهات برنامه نویسی. این گزارش که با همکاری و حمایت بیشتر از ۳۰ سازمان از جمله سازمان امنیت ملی آمریکا، وزارت امنیت داخلی و کارشناسان امنیتی کمپانیهایی چون Red Hat، مایکروسافت، Fortify، سیمانتک، اوراکل، CERT و بسیاری از کمپانیهای نرم افزاری معتبر اروپا و آمریکا منتشر شده، هدفش اینه که به برنامه‌نویسان کمک کنه تا برنامه‌هایی بنویسند که فاقد این ۲۵ خطای خطرناک باشند.
چرا اینها رو پرخطر قلمداد کرده؟! چون اغلب هم به راحتی پیدا میشن و هم براحتی قابل سوء استفاده (Exploit) هستند، به علاوه این خطاها منجر به حفره های امنیتی یا آسیب‌پذیری‌هایی میشن که اثرات جانبی شون بسیار مخرب هست، اغلب به مهاجمین کمک می کنن به نرم افزار دسترسی در حد مدیر سیستم پیدا کنند، داده ها رو به سرقت ببرند، و یا اینکه مانع فعالیت سرویس بشوند.
به گفته کارشناسانی که این سند رو تهیه کردند، بسیاری از این خطاها به خوبی توسط برنامه‌نویسان درک نشده‌اند و طبق اعلام موسسه SANS  که در مریلند‌ آمریکا قرار داره، تنها دو مورد از این خطاها منجر به مشکل امنیتی بیش از ۱٫۵ میلیون وب‌سایت در طول سال ۲۰۰۸ شدند!

* این گزارش شامل ۵ بخش هست:
۱- چه کسانی کمک کردند تا این ۲۵ خطا کشف و تعریف شود؟
۲- نحوه به کارگیری ۲۵ خطا چگونه خواهد بود؟
۳- درجه اهمیت ۲۵ خطا چیست؟
۴- کدام خطاها در لیست ۲۵ خطا موجودند؟
۵- چه منابعی به سازمانها کمک می کنند تا خطاها را مرتفع سازند؟

* برای هرکدام از بخشهای فوق مطالب جامع و کاملی در خود سایت SANS هست (به لینکهای هر کدوم مراجعه کنید). فقط میمونه لیست ۲۵ خطا که به خاطر اهمیتشون ترجمه کردم:
این خطاها در سه دسته اصلی تقسیم بندی شدند. برای اطلاعات بیشتر روی هر خطا کلیک کنید تا لینک CWE مربوط به خطا رو ببینین. (حتما میدونین که CWE مرجع جهانی برای شناسایی آسیب پذیری ها در دنیاست به عبارتی دیگر هر آسیب پذیری امنیتی که کشف میشه، در صورت تائید یک CWE میگیره و بعدا با همون شناسایی میشه به زبان خودمونی میشه یه نوع شماره شناسایی برای هر خطای امنیتی)

* دسته اول: تعامل ناامن بین مولفه ها:
خطای اول – اعتبارسنجی نامناسب ورودی، خطای دوم – کدگذاری نامناسب خروجی، خطای سوم – تزریق دستورات SQL، خطای چهارم – XSS یا Cross Site Scripting، خطای پنجم – تزریق دستوران سیستم عامل، خطای ششم – انتقال اطلاعات حساس به صورت متن ساده، خطای هفتم – جعل درخواست یا CSRF، خطای هشتم – شرایط مسابقه، خطای نهم – افشای اطلاعات از طریق پیامهای خطا

* دسته دوم: مدیریت مخاطره آمیز منابع :
خطای دهم – کنترل نامناسب محدوده عملیات روی کرانهای حافظه بافر، خطای یازدهم – کنترل خارجی داده های حیاتی، خطای دوازدهم – کنترل خارجی نام یا مسیر فایل، خطای سیزدهم – مسیر نامطمئن جستجو، خطای چهاردهم – تزریق کد، خطای پانزدهم – دانلود کدهای مخرب، خطای شانزدهم – آزادسازی و یا قطع نامناسب منابع، خطای هفدهم – مقداردهی اولیه نامناسب، خطای هجدهم – محاسبات ناصحیح

* دسته سوم: دفاع پرمنفذ:
خطای نوزدهم – کنترل دسترسی نامناسب، خطای بیستم – استفاده از الگوریتم شکسته شده یا منسوخ رمزنگاری، خطای بیست و یکم – رمزعبور حک شده، خطای بیست و دوم – اختصاص ناامن مجوزها به منابع حیاتی، خطای بیست و سوم – استفاده از مقادیر قابل حدس تصادفی، خطای بیست و چهارم – قابلیت اجرا بدون احراز اختیارات لازم، خطای بیست و پنجم – اجرای ملاحظات ایمنی لازم برای سرور در سمت کلاینت

* من واقعا دلم میخواست این ۲۵ خطا رو کامل ترجمه کنم ولی از اونجائیکه میدونم هیچکس یک پست طولانی رو نمیخونه، لینک دادم به متن انگلیسیشون.
اگه میخواین تعاریف مربوط به ۲۵ خطا رو یکجا ببینید، به این صفحه مراجعه کنید که در مورد هر خطا به تفصیل توضیح داده. خوبیش به اینه که برای هر خطا علاوه بر تعریفش بخش دیگه ای داره به نام پیشگیری و یا تخفیف که روشهای دفع اون خطا و یا حداقل کاهش خطراتش رو بیان کرده. واقعیتش اینه که هیچ وقت نمیشه گفت امنیت صد در صد فراهم کردیم گاهی اوقات فقط میتونیم خطری رو تخفیف بدیم.

* منبع

۱۳ نظر

  1. موسیو گلابی ۱۳۸۷-۱۰-۲۶، ۹:۰۴ ب.ظ

    آیکون گل و تشویق و سایر کارهای اسلامی در جهت قدردانی!

  2. بهروز ۱۳۸۷-۱۰-۲۶، ۹:۱۰ ب.ظ

    بسیار جالب بود
    ممنون واسه مطلب جالبتون
    البته من تعداد زیادی از اینها رو که نوشته بودید رو در زمان برنامه نویسی مورد توجه قرار میدادم
    بعضی هاشم که اصلا نشنیده بودم ;)

    به هر حال بسیار ممنون

  3. زندگی سگی - مت ۱۳۸۷-۱۰-۲۶، ۱۱:۴۲ ب.ظ

    مطلب جالبی بود … فکر کنم sql injection شایع ترین خطا بین برنامه نویسان ایرانی باشه که باعث هک شدن خیلی از سایت ها هم میشه ;(

    مطالب جالبی مینویسی بازم میام پیشت

  4. مهدی ۱۳۸۷-۱۰-۲۷، ۱۰:۲۶ ق.ظ

    سلام
    خوشحال میشم مارو با عنوان: “اولین انجمن مخصوص دختران گیمر ایرانی”
    و با لینک : http://forum.fanaei.com
    در لیست دوستانتون قرار بدید. [لبخند]

  5. سینا ۱۳۸۷-۱۰-۲۷، ۲:۰۴ ب.ظ

    متشکروممنون استفاده بردیم

  6. haleh ۱۳۸۷-۱۰-۲۷، ۲:۳۱ ب.ظ

    Salam zahraye aziz va mamnun babate zahmati ke baraye neveshtane in matlab keshidi harchand ke man hichi azash sar dar nayavordam va fek mikoNam kheiliaye diGEAM mese man bashan,toO Hamin zamine mikhastam ye entegHAdi bokoNam ,fek mikoNam aksare kasaee ke bloge zahra ro baraye moTALee entekhab mikoNan baraye khundane matalebe takhasosi inja nemian va ye juraee haleshun gereFTE mishe va az unjaee ke takhasose shoma ham ine nemishe behesh iradi vareD Kard pas chera mataLEbi ke ba zahmato zogHO SHOGhe ziad dar rastaye takhasoset minevisio toO YE FAzaye diGE update nemikoNi ke dagHighan kasani bekhunanesh ke 2nbaleshan, injuri mOTMaen bash matlaBi ke inhame vasash zahmat keshidi bishtar dide mishe va eddeye bishtari esteFade mikoNan masalan webloge takhasSOSie zahra-hb! doOSet daram,bye

    زهرا Reply:

    هاله جان حق با توئه
    راستش من هر وقت نمیتونم از خودم بنویسم یا هر وقت حالم بده میرم سراغ اینجور مطالب باور کن
    وگرنه اصلا دوست ندارم وبلاگم یه وبلاگ تخصصی بشه چون خودم با اینجور نوشتن (یعنی کلا آی تی نویسی به این شکل) مشکل دارم
    در هر صورت مرسی عزیزم:*

  7. جواد ۱۳۸۷-۱۰-۲۷، ۶:۲۶ ب.ظ

    مطلب مهمیه ولی باید از فاز تحلیل و طراحی امنیت را مورد نظر داشت
    به عبارت دیگه به یک متدولوژی امن تچرخه ولید نرم افزار نیاز داریم

    زهرا Reply:

    دقیقا همین طوره
    اتفاقا امنیت رو باید از همون مراحل آغازین طراحی یک نرم افزار در نظر داشت وگرنه بعدها هزینه آور میشه :)

  8. مهرداد ۱۳۸۷-۱۰-۲۷، ۱۰:۴۱ ب.ظ

    ترجمه مطلب به فارسی درخور تقدیر و سپاسگذاری است.
    در پناه حق، خوش و سلامت باشید.

  9. مرتضی ۱۳۸۷-۱۰-۳۰، ۱:۳۲ ق.ظ

    سلام
    واقعا ممنون
    عالی و کاربردی
    موفق باشید
    بای

  10. pligg.com ۱۳۸۷-۱۱-۲۲، ۹:۴۴ ق.ظ

    لیستی از ۲۵ اشتباه خطرناک برنامه‌نویسی…

    موسسه SANS یک گزارش کاملی منتشر کرده از ۲۵ تا از خطرناکترین اشتباهات برنامه نویسی. این گزارش که با همکاری و حمایت بیشتر از ۳۰ سازمان از جمله س…

  11. مهدی ۱۳۸۸-۰۴-۲۹، ۸:۴۵ ب.ظ

    خیلی عالی بود ممنون اگه ممکنه به وبلاگ من هم سر بزن و در صورت تمایل تبادل لینک کنیم