فا

‫ برنامه‌نويسي امن با زبان جاوا - اعتبارسنجي ورودي و پاكسازي داده‌ها

IRCAR201302165
 
 
تاريخ: 15/11/91
 
برنامه‌هاي نرم‌افزاري معمولاً داراي چندين جزء مختلف هستند كه با يكديگر تعامل كرده و هر كدام از آنها در يك يا چندين دامنه قابل اعتماد فعاليت مي‌كنند. براي مثال، يك جزء ممكن است به فايل‌هاي سيستمي دسترسي داشته باشد، اما به شبكه دسترسي نداشته باشد، در حالي كه جزئي ديگر به شبكه دسترسي دارد ولي به فايل‌هاي سيستمي دسترسي ندارد. "سوءظن در تجزيه" و "تفكيك حق دسترسي" نمونه‌هايي از الگوهاي طراحي امن هستند كه با استفاده از طراحي سيستمي كه داراي اجزاي دو به دو نامعتمد به يكديگر است، ميزان كدهايي كه با حق دسترسي‌هاي خاص اجرا مي‌شوند را كاهش مي‌دهد.
با وجود اينكه اجزاي نرم‌افزاري مي‌توانند از سياست‌هاي انتقال اطلاعات از طريق مرزهاي معتمد پيروي كنند، اما نمي‌تواند سطح اعتمادي را كه به هر جزء داده مي‌شود مشخص سازند. طراحان برنامه كاربردي بايد مرزهاي اعتماد را با استفاده از يك سياست امنيتي مشخص تعريف نمايند.
يك برنامه جاوا مي تواند حاوي زير برنامه‌هاي داخلي و يا زير برنامه‌هاي متفرقه باشد. در واقع جاوا به گونه‌اي طراحي شده است كه اجازه اجراي كدهاي نامطئن را صادر مي‌نمايد. در نتيجه كدهاي متفرقه مي‌توانند در دامنه مورد اعتماد خود اجرا شوند. API عمومي متعلق به كد متفرقه مذكور مي‌تواند به عنوان مرز معتمد شناخته شود. لازم است داده‌هايي كه از مرزهاي معتمد گذر مي‌كنند اعتبارسنجي شوند مگر اينكه برنامه‌اي كه داده را توليد كرده اعتبار داده ها را تضمين نمايد.
 
حملات تزريق SQL
 
داده‌هاي ورودي به يك قسمت از برنامه كه از منبعي خارج از مرزهاي معتمد دريافت شده است، مي‌تواند حاوي كدهاي خرابكار بوده و در نتيجه مطابق شكل زير منجر به حملات تزريق گردد.
برنامه‌هاي نرم‌افزاري لازم است داده‌هايي را كه وارد مرزهاي معتمد آنها مي‌شوند مورد بررسي قرار داده و از خرابكار نبودن آنها اطمينان حاصل كنند. اين امر مستلزم رعايت گام‌هاي زير است:
 
1- اعتبارسنجي
اعتبارسنجي به منظور حصول اطمينان از اينكه داده‌هاي ورودي در دامنه مورد انتظار و معتبر برنامه قرار دارند، انجام مي‌شود. اين امر مستلزم اينست كه ورودي‌ها، نيازمندي‌هاي نوع و دامنه عددي را رعايت كرده و همچنين مطابق با متغيرهاي كلاس يا زيرسيستم مربوطه باشند.
 
2- پاك‌سازي داده‌ها
در بسياري از موارد داده به صورت مستقيم به بخشي از برنامه فرستاده مي‌شود كه در دامنه معتمد متفاوتي قرار دارد. پاك‌سازي داده‌ها فرآيندي است كه از تطابق داده ارسالي با نيازمندي‌هاي زيرسيستم مقصد اطمينان حاصل مي‌كند. همچنين پاك‌سازي داده‌ها تضمين مي‌نمايد كه داده هاي خروجي از سيستم با سياست‌هاي امنيتي مربوط به نشت اطلاعات و يا افشاي داده‌هاي حساس همخواني دارد.
پاك‌سازي مي‌تواند شامل حذف كاراكترهاي ناخواسته از ورودي به وسيله حذف، جابجايي، كدگذاري يا ناديده گرفتن باشد. پاكسازي داده‌ها مي‌تواند بر روي ورودي و يا خروجي انجام شود. پاكسازي داده‌ها و اعتبارسنجي مي‌توانند به صورت همزمان وجود داشته و يكديگر را تكميل نمايند.
 
3- استانداردسازي و نرمال‌سازي
استانداردسازي پروسه‌ كاهش ورودي بدون از دست دادن جزئي از آن است به طوري كه معادل ورودي را با ساده‌ترين شكل ممكن خواهيم داشت. نرمال‌سازي پروسه تبديل ورودي به ساده‌ترين شكل با از دست دادن بخش‌هايي از ورودي است.  استانداردسازي و نرمال‌سازي بايد قبل از اعتبارسنجي ورودي انجام شود تا از سوءاستفاده مهاجمين از روتين اعتبارسنجي براي ارسال كاراكترهاي نامعتبر و در نتيجه ايجاد يك توالي نامعتبر كاراكترها جلوگيري به عمل آيد. نرمال‌سازي بايد تنها بر روي ورودي كامل انجام شود و هيچگاه نبايد ورودي نرمال‌سازي شده با ورودي نرمال نشده تركيب گردد.
زيرسيستم‌هاي پيچيده كه ورودي‌هاي رشته‌اي حاوي دستورات را قبول مي‌كنند، مورد توجه ويژه هستند.رشته‌هايي كه به اين اجزا ارسال مي‌شوند، ممكن است حاوي كاراكترهاي خاصي باشند كه دستورات و يا كنش‌هايي را فعال مي‌سازند و منجر به آسيب‌پذيري نرم‌افزار مي‌شوند.
در ادامه نمونه‌هايي از زير‌برنامه‌هايي آورده شده است كه مي‌توانند دستورات را تفسير نمايند:
·         مفسر دستور سيستم عامل
·         يك پايگاه داده با واسط كاربر SQL
·         تجزيه‌گر XML
·         ارزياب‌هاي XPath
·         سرويس دايركتوري LDAP
·         موتورهاي اسكريپت
·         كامپايلرهاي عبارات regular (regex)
 
زماني كه داده‌اي به بخش ديگري از برنامه با حدود معتمد متفاوتي ارسال مي‌شود، ارسال كننده بايد از مناسب بودن داده براي مرزهاي معتمد دريافت‌كننده اطمينان حاصل كند و بايد داده‌هايي كه بين دو مرز معتمد جابجا مي‌شوند رمزگذاري شوند. به اين ترتيب در صورتي كه براي مثال يك بخش از برنامه توسط كدهاي خرابكار مورد نفوذ قرار گيرد، بسياري از حملات به علت اينكه خروجي‌هاي سيستم به صورت مناسب رمزگذاري مي‌شوند، ناكام مي‌مانند.
 
مطالب مرتبط
 

نظرات

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

نوشته

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

دسته‌ها

امتیاز

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