فورک یک فراخوانی سیستمی است که در سیستمهای یونیکس و لینوکس استفاده میشود که یک فرآیند موجود (Parent process) را میگیرد و آن را تکرار میکند و یک فرآیند جدید (Child process) را تشکیل میدهد و به هر دو فرآیند اجازه میدهد تا وظایف منحصر به فرد را به طور همزمان انجام دهند.
بمب فورک (ویروس خرگوش) یک حمله انکار سرویس (DoS) است که در آن فراخوانی سیستم فورک به صورت بازگشتی استفاده میشود تا زمانی که همه منابع سیستم یک دستور را اجرا کنند. سیستم در نهایت overload میشود و قادر به پاسخگویی به هیچ ورودی نیست.
برخلاف بیشتر حملات DoS، که اغلب با flooding منابع شبکه یا کامپیوتر به صورت خارجی اتفاق میافتند، فورک بمب از دستورات درون سیستمی استفاده میکند که سعی در از بین بردن آن دارد. حتی گاهی اوقات ممکن است به خود تحمیل شود (self-inflicted).
حمله فورک بمب چگونه کار میکند؟
در حمله فورک بمب، فرآیندهای فرزند self-replicating منابع سیستم را مصرف میکنند و مانع از اجرای برنامههای قانونی میشوند و از ایجاد فرآیندهای جدید جلوگیری میکنند. در طول یک حمله، ورودیهای صفحه کلید (مانند تلاشهای logout ) نادیده گرفته میشوند و سیستم را قفل میکنند.
از آنجایی که یک حلقه فورک CPU و حافظه را مصرف می کند، منابع سیستم معمولا مدت ها قبل از اینکه سیستم عامل به حداکثر فرآیندهای مجاز برسد، تخلیه میشود. این منجر به kernel panic میشود، یعنی سیستم عامل اصلی (کرنل) نمیتواند مقابله کند و از کار میافتد.
برای اکثر سیستمها، انجماد تا زمانی که دستگاه ریستارت شود، ادامه مییابد و اغلب برای به دست آوردن کنترل مجدد به ریبوت سخت نیاز است. از دست دادن دادهها (Data loss) بسیار محتمل است. برخی از کرنلها ممکن است محدودیتهای از پیش تعیین شدهای داشته باشند که در نهایت به یک مدیر اجازه دسترسی به سیستم را میدهد.
سیستم عاملهای آسیب پذیر
همه سیستم عاملهای یونیکس، لینوکس یا Unix-like به طور بالقوه در برابر حمله فورک بمب آسیب پذیر هستند، از جمله اوبونتو، دبیان، رد هت یا AIX.
سیستمعاملهای ویندوز در برابر حملات فورک بمب سنتی آسیبپذیر نیستند، زیرا نمیتوانند فرآیندهای دیگر را فورک کنند. برای ایجاد حملهای شبیه به فورک بمب در ویندوز، باید مجموعهای از فرآیندهای جدید به سرعت ایجاد شود. این به برنامه ریزی پیچیده تری نسبت به fork bomb سنتی نیاز دارد.
نمونههای بمب فورک (fork bomb)
کاراکترهای زیر شامل یک اسکریپت اصلی شل لینوکس است که برای راه اندازی بمب فورک استفاده میشود:
- :() – تابعی را در تابع لینوکس تعریف میکند به نام:
- { } – دستوراتی را که یک تابع اجرا میکند در بر میگیرد
- :|: – دستور را به صورت بازگشتی اجرا میکند، به این معنی که خروجی به نسخه دیگری از دستور که در یک subshell اجرا میشود piped میشود.
- & – دستور قبلی را در بکگراند اجرا میکند
- ; – دستور تعریف تابع را در سمت چپ از دستور بعدی جدا میکند
- : – دستور را اجرا میکند که تابع جدید ایجاد شده است – :
اجرای دستور یک فرآیند فرزند ایجاد که سپس در یک حلقه بی نهایت تکرار میشود. نتیجه سیستمی است که نمیتواند پاسخ دهد، زیرا تمام منابع آن برای ایجاد این فرآیندهای خالی استفاده میشود.
خرید سرور مجازی در پنج موقعیت جغرافیایی ایران، ترکیه، هلند، آلمان و آمریکا با قابلیت تحویل آنی در پارسدو فراهم است.
نمونه های کد برای حملات فورک بمب در زبان های برنامه نویسی رایج عبارتند از:
مثال – بمب فورک پایتون
مثال – بمب فورک جاوا
مثال - بمب فورک روبی
مثال - بمب فورک C
روشهای کاهش
جلوگیری از fork bomb با محدود کردن حداکثر تعداد فرآیندهایی که کاربر میتواند داشته باشد انجام میشود. این امر توسط:
- استفاده از پارامتر ulimit Unix/Linux برای محدود کردن تعداد فرآیندهایی که کاربر می تواند ایجاد کند. به عنوان مثال، ulimit=30 یک کاربر را به داشتن 30 پردازش محدود میکند. با این حال، این دستور مختص session است - محدودیت پس از پایان جلسه ریست میشود.
- تنظیم محدودیتهای فرآیند در سراسر یک سیستم با استفاده از فایل /etc/security/limits.conf که روش ترجیحی است زیرا این تنظیم را میتوان در تمام پروفایلها اعمال کرد، بنابراین خطر ویرایش تنظیمات پروفایل هر کاربر را کاهش میدهد.
لازم به ذکر است که حتی اگر تنظیمات limits.conf صحیح باشد، یک superuser و هر فرآیندی که دارای امتیازات مدیریتی باشد همچنان میتواند حمله فورک بمب را آغاز کند.
حتی با سیستم عاملهای مدرن، هیچ راه عالی برای جلوگیری از Fork Bomb وجود ندارد. با این حال، اجرای بهترین شیوههای امنیتی عمومی و جلوگیری از اجرای نرمافزارهای نامعتبر در root میتواند اکثریت قریب به اتفاق سناریوهای حمله بمب فورک را مسدود کند.
نظرتون برامون مهمه شما اولین نظر رو بنویسید