دسته بندی
Remote Code Execution (RCE)
باگ Remote Code Execution (RCE) یکی از خطرناکترین باگهای امنیتی است که به حملهکننده اجازه میدهد کد مخرب یا دستورات خود را بر روی سرور یا برنامهای اجرا کند. این باگ میتواند به دسترسی نامحدود به سیستم یا دسترسی به اطلاعات حساس منجر شود.مثال:
فرض کنید یک وبسایت با یک فرم جستجو دارید که کاربران میتوانند در آن عبارت مورد نظر خود را وارد کنند. این عبارات سپس بهعنوان پارامترها به یک برنامهی سمت سرور ارسال میشوند. اگر تأمین اطلاعات ورودی کافی نباشد و بدون اعتبارسنجی و فیلترینگ، ورودیها به عنوان کد اجرایی در نظر گرفته شوند، حملهکننده میتواند کد مخرب خود را در ورودی وارد کند و با اجرای آن، کنترل کامل بر سرور را به دست آورد.
$query = $_GET['query'];حالت بدیهی این است که اگر حملهکننده ورودیهایی مخرب مانند
$result = exec("grep " . $query . " data.txt");
echo "نتایج جستجو: " . $result;
"data.txt; rm -rf /" وارد کند، دستورات خطرناک مانند حذف همهی فایلها روی سرور اجرا خواهند شد.روشهای جلوگیری:
1- هرگز ورودیها را بهصورت مستقیم به عنوان کد اجرایی در نظر نگیرید. اطمینان حاصل کنید که ورودیها مورد اعتبارسنجی و فیلترینگ قرار گیرند.
2- از توابع و روشهای امن در اجرای دستورات استفاده کنید. به عنوان مثال، اگر از
PHP استفاده میکنید، از توابع مانند escapeshellcmd() یا escapeshellarg() برای اجرای دستورات استفاده کنید.2- بخشهای مختلف کد خود را از یکدیگر تفکیک کنید و اجازه ندهید ورودیهای کاربری به عنوان بخشهای اجرایی تلقی شوند.
3- از مکانیزمهای اجرایی امن و محدود بهره ببرید. بهعنوان مثال، به جای استفاده از
exec() در PHP، از توابع دیگری مانند shell_exec() استفاده کنید.————-
از دیگر باگ های امنیتی این دسته بندی میتوان به Code Injection اشاره کرد که قبلا توضیح داده شده. (مشاهده)
.