آسیب پذیری های امنیتی

آسیب پذیری Code Injection

Security-Vulnerabilities
شرح آسیب پذیری:

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

تفاوت 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) فیلتر کردن کاراکتر های زیر در ورودی کاربر برای سیستم عامل لینوکس

 { }  ( ) < > & * ‘ | = ? ; [ ]  $ – # ~ ! . ” %  / \ : + , ` 
author-avatar

درباره میلاد خوشدل

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

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

4 + 16 =