دسته بندی
Injection Attacks
باگ Code Injection یک نوع باگ امنیتی است که در برنامهها و نرمافزارها رخ میدهد و اجازه میدهد که حملهکننده کد مخرب یا دستورات اجرایی را به طور غیرمجاز در برنامه اجرا کند. این حمله معمولاً به وسیلهی متغیرهای تزریقشده و ورودیهای ناامن به برنامه انجام میشود. با استفاده از Code Injection، حملهکننده میتواند برنامه را کنترل کرده و اطلاعات محرمانه را فاش کند، دستورات اجرایی را اجرا کند یا عملیاتهای خرابکارانه دیگر انجام دهد.مثال :
فرض کنید یک برنامه وب با زبان
PHP نوشته شده است و قصد دارد یک فایل متنی را با استفاده از نام فایل که کاربر وارد میکند، نمایش دهد. کد PHP به صورت زیر است:$filename = $_GET['filename'];حملهکننده میتواند نام فایل خود را به صورت کد اجرایی وارد کند تا اجرای کد مخرب را فراهم آورد. به عنوان مثال:
$file_contents = file_get_contents('/path/to/files/' . $filename);
echo $file_contents;
my_file.txt'; echo "Hello, I am an attacker!"; exit; //پس از اجرای برنامه، کد
PHP به شکل زیر تبدیل میشود:$filename = 'my_file.txt'; echo "Hello, I am an attacker!"; exit; //';این باعث اجرای کد مخرب
$file_contents = file_get_contents('/path/to/files/' . $filename);
echo $file_contents;
"Hello, I am an attacker!" میشود و برنامه به پایان میرسد.روش های جلوگیری:
1- همانند
SQL Injection، استفاده از Prepared Statements میتواند از تزریقهای کد و جلوگیری از Code Injection جلوگیری کند.2- برنامهنویسان باید ورودیها را با دقت فیلتر سازی و تقویت کنند. این کار شامل حذف و یا اسکیپ کردن کاراکترهای غیرمجاز است.
3- باید از تابعها و دستوراتی که میتوانند کدها را اجرا کنند، بهعنوان ورودی در برنامه استفاده نکنید.
4- اطمینان حاصل کنید که برنامهها فقط به فایلهای مورد نیاز دسترسی دارند و به فایلهای حساس و اجرایی دسترسی ندارند.
5- مطمئن شوید که برنامهها و کاربران فقط به کمترین دسترسی لازم برای انجام کارهای خود دسترسی دارند.
6- اطلاعات خطا در برنامهها نباید جزئیاتی از ساختار دیتابیس یا کدهای خطرناک را فاش کند.
.