آسیب پذیری Code Injection


شرح آسیب پذیری:

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

تفاوت Code Injection و Command Injection در این است که در آسیب پذیری Code Injection مهاجم می تواند کد خودش را در نرم افزار تزریق کند و در نهایت نرم افزار این کد را اجرا خواهد کرد، ولی در Command Injection مهاجم عملکرد پیش فرض نرم افزار که اجرای دستورات است را گسترش داده و Command خود را برای اجرا در کنار دستورات پیش فرض برنامه قرار می دهد و در حالت کلی عملیات تزریق کد مورد نیاز نمی باشد.

به طور مثال فرض کنید تابع eval به صورت زیر به کار رفته است.

$myvar = "varname";
$x = $_GET['arg'];
eval("\$myvar = \$x;");

در صورت عدم وجود Validation مناسب مهاجم می تواند با استفاده از دستور زیر تنظیمات PHP را به صورت غیر مجاز مشاهده نماید.

/index.php?arg=1; phpinfo
()
چگونه این آسیب پذیری را رفع کنیم ؟

1) فیلتر کردن کاراکتر های زیر در ورودی کاربر در حالت کلی (بدون توجه به نوع سیستم عامل)

|  ; & $ > < ' \  ! >> # 

2) فیلتر کردن کاراکتر های زیر در ورودی کاربر برای سیستم عامل ویندوز

( ) < > & * ‘ | = ? ; [ ] ^ ~ ! . ” % @ / \ : + , `

3) فیلتر کردن کاراکتر های زیر در ورودی کاربر برای سیستم عامل لینوکس

 { }  ( ) < > & * ‘ | = ? ; [ ]  $ – # ~ ! . ” %  / \ : + , ` 
میلاد خوشدل

در حوزه‌ی امنیت وب و شبکه فعالیت می کند، عاشق پارکور است و مدیریت دیتاسنتر، امن سازی شبکه های مخابراتی و کابلی و برنامه نویسی وب و موبایل از تجارب کاری او می باشد. او در حال حاضر بنیانگذار ریجاکس است.

نظر خود را بنویسید

نشانی ایمیل شما منتشر نخواهد شد.

1 + 18 =


تگ های html مجاز به استفاده می باشند: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

ارسال یک پیام