دسته بندی
Injection Attacks
باگ Command Injection یک نوع باگ امنیتی است که در برنامهها و نرمافزارها رخ میدهد و اجازه میدهد که حملهکننده دستورات سیستم عامل را به طور غیرمجاز در برنامه اجرا کند. این حمله معمولاً به وسیلهی متغیرهای تزریقشده و ورودیهای ناامن به برنامه انجام میشود. با استفاده از Command Injection، حملهکننده میتواند برنامه را کنترل کرده و اطلاعات محرمانه را فاش کند، دستورات سیستمی اجرا کند یا عملیاتهای خرابکارانه دیگر انجام دهد.مثال :
فرض کنید یک برنامه وب با زبان
PHP نوشته شده است که قصد دارد یک سیستم پشتیبانگیری را اجرا کند و فایلهای مورد نیاز را از یک مسیر خاص به مسیر دیگر کپی کند. کد PHP به صورت زیر است:$source_file = $_POST['source_file'];حملهکننده میتواند در فیلدهای ورودی، دستورات سیستم عامل را به صورت تزریقشده وارد کند. به عنوان مثال:
$destination_path = $_POST['destination_path'];
$command = "cp $source_file $destination_path";
$output = shell_exec($command);
echo "File copied successfully.";
source_file:
/etc/passwd
destination_path: /var/www/html/
پس از اجرای برنامه، دستورات سیستم عامل به شکل زیر تبدیل میشود:cp /etc/passwd /var/www/html/این دستور کپی فایل /
etc/passwd (که یک فایل حاوی اطلاعات حسابهای کاربری سیستم است) به مسیر /var/www/html/ اجرا میشود و حملهکننده ممکن است به اطلاعات حسابهای کاربری سیستم دسترسی پیدا کند.روش های جلوگیری:
1- همانند
SQL Injection و Code Injection، استفاده از Prepared Statements میتواند از تزریقهای دستور سیستم عامل جلوگیری کند.2- برنامهنویسان باید ورودیها را با دقت فیلتر سازی و تقویت کنند. این کار شامل حذف و یا اسکیپ کردن کاراکترهای غیرمجاز است.
3- از فراخوانیهای محدود یا محدودسازیشده که فقط اجازه فراخوانی دستورات سیستم مشخص را به برنامهها میدهد، استفاده کنید.
4- مطمئن شوید که برنامهها و کاربران فقط به کمترین دسترسی لازم برای انجام کارهای خود دسترسی دارند.
5- اطلاعات خطا در برنامهها نباید جزئیاتی از ساختار سیستم عامل یا کدهای خطرناک را فاش کند.
.