فا

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

IRCAR201401199
اولين موضوعي كه به طور كلي در برنامه نويسي امن (رجوع شود به مقاله اصول برنامه نويسي امن) و همچنين در برنامه نويسي امن با زبان جاوا مورد توجه قرار مي گيرد مربوط به اعتبار سنجي ورودي و پاكسازي داده ها است. در اين موضوع چهارده قانون معرفي مي گردد كه سطوح امنيتي مختلفي دارند (رجوع شود به مقاله برنامه‌نويسي امن با زبان جاوا – قوانين اعتبارسنجيورودي و پاكسازي داده‌ها - آشنايي). چهارمين قانون از اين موضوع داراي سطح امنيتي دو (L2) بوده و از اولويت (P8) برخوردار مي باشد.
قانون IDS03-J –  ورودي كاربر را كه پاكسازي نشده است، در فايل ثبت وقايع ذخيره ننماييد.
آسيب پذيري تزريق ثبت وقايع زماني رخ مي دهد كه ورودي هاي كاربر بدون پاكسازي شدن ثبت گردند. كاربر خرابكار مي تواند داده هاي جعلي براي ثبت وقايع ايجاد نمايد و مديران سيستم را فريب دهد به طوري كه آنها رفتار سيستم را طبيعي ببينند. براي مثال كاربر مي تواند يك ورودي معتبر ثبت وقايع را از طريق كاراكترهاي CRLF به دو قسمت تقسيم كند به صورتي كه هر كدام از آنها گمراه كننده به نظر مي رسند. حملات تزريق ثبت وقايع از طريق پاكسازي و اعتبارسنجي هر ورودي نامطمئن قابل پيشگيري هستند.
ثبت وقايع ورودي هاي پاكسازي نشده همچنين مي توانند منجر به نشت اطلاعات حساس در مرزهاي معتمد و يا ذخيره اطلاعات حساس به صورتي شود كه قوانين را نقض نمايد. براي مثال، اگر يك كاربر بتواند به طريقي اطلاعات كارت اعتباري را به صورت رمزگذاري نشده وارد فايلهاي ثبت وقايع نمايد يكي از قوانين دولتي نقض شده است.
يك نمونه ناسازگار با قانون
اين نمونه ناسازگار با قانون نام كاربر را زماني كه يك درخواست غير معتبر دريافت مي كند ذخيره مي سازد. هيچگونه پاكسازي داده انجام نمي گردد.
 if(loginSuccessful) {
  logger.severe("User login succeeded for: "+ username);
} else{
  logger.severe("User login failed for: "+ username);
}
بدون انجام پاكسازي داده ها يك حمله تزريق ثبت وقايع امكان پذير است. يك پيغام استاندارد زماني كه username كلمه david مي باشد به صورت زير است:
May 15, 20112:19:10PM java.util.logging.LogManager$RootLogger log
SEVERE: User login failed for: david
 
در صورتي كه پيغام ثبت وقايع به جاي david يك رشته چند خطي به صورت زير باشد:
david
May 15, 20112:25:52PM java.util.logging.LogManager$RootLogger log
SEVERE: User login succeeded for: administrator
 
در اين صورت فايل ثبت وقايع حاوي اطلاعات فريب دهنده به صورت زير خواهد بود:
May 15, 20112:19:10PM java.util.logging.LogManager$RootLogger log
SEVERE: User login failed for: david
May 15, 20112:25:52PM java.util.logging.LogManager log
SEVERE: User login succeeded for: administrator
راه حل سازگار با قانون
اين راه حل سازگار قبل از ثبت وقايع ورود كاربر، username را اعتبارسنجي مي نمايد و به اين ترتيب از حملات تزريق ثبت وقايع جلوگيري مي نمايد. براي اطلاعات بيشتر در مورد پاكسازي ورودي ها به قانون IDS00-J مراجعه نماييد.
if(!Pattern.matches("[A-Za-z0-9_]+", username)) {
  // Unsanitized username
  logger.severe("User login failed for unauthorized user");
} elseif(loginSuccessful) {
  logger.severe("User login succeeded for: "+ username);
} else{
  logger.severe("User login failed for: "+ username);
}
ارزيابي خطر
ثبت وقايع ورودي هاي كاربر به صورت پاكسازي نشده مي تواند منجر به ثبت ركوردهاي جعلي در فايل ثبت وقايع شده و منجر به نشت اطلاعات امنيتي شود. همچنين مي تواند منجر به نقض قوانين در ثبت داده هاي حساس شود.
 
تشخيص اتوماتيك
 
 مطالب مرتبط:
برنامه‌نويسي امن با زبان جاوا - آشنايي
برنامه‌نويسي امن با زبان جاوا - اعتبارسنجي ورودي و پاكسازي داده‌ها
برنامه‌نويسي امن با زبان جاوا – نشت اطلاعات حساس
برنامه‌نويسي امن با زبان جاوا – نشت قابليت ها
برنامه‌نويسي امن با زبان جاوا – انكار سرويس
برنامه‌نويسي امن با زبان جاوا – ارتقاي حقدسترسي
برنامه‌نويسي امن با زبان جاوا – قوانين اعتبارسنجيورودي و پاكسازي داده‌ها - آشنايي
برنامه‌نويسي امن با زبان جاوا – قوانين اعتبارسنجي ورودي و پاكسازي داده‌ها – قانون IDS00-J – قسمت دوم
برنامه‌نويسي امن با زبان جاوا – قوانين اعتبارسنجي ورودي و پاكسازي داده‌ها – قانون IDS00-J – قسمت اول
برنامه‌نويسي امن با زبان جاوا – قوانين اعتبارسنجي ورودي و پاكسازي داده‌ها – قانون IDS01-J
برنامه‌نويسي امن با زبان جاوا – قوانين اعتبارسنجي ورودي و پاكسازي داده‌ها – قانون IDS02-J
 

نظرات

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

نوشته

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

دسته‌ها

امتیاز

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