پرش به محتوا

فورک بمب

از ویکی‌پدیا، دانشنامهٔ آزاد
ایده اصلی پشت یک فورک بمب، پروسه‌ها دائماً از خودشان کپی تهیه می‌کنند که باعث ایجاد یک حمله محروم‌سازی از سرویس می‌شود.

فورک بمب (به انگلیسی: Fork bomb) (به معنای بمبی که با انشعاب مکرر فرایندها ایجاد می‌شود) یک نوع حمله محروم‌سازی از سرویس است که در آن یک فرایند به طور پیوسته اقدام به کپی‌برداری از خودش می‌کند و به این ترتیب منابع موجود در سیستم را کاهش می‌دهد، که در نهایت باعث گرسنگی منابع و آهسته شدن یا از کار افتادن سیستم می‌شود. نحوه کارکرد فورک بمب‌ها به این صورت است که هم زمان پردازنده را اشغال می‌کنند و هم جدول فرایندهای سیستم‌عامل را اشباع می‌کنند. می‌توان با ایجاد کردن یک فرایند جدید در یک حلقه بی‌نهایت به آسانی یک فورک بمب ساده ساخت. در سیستم‌عامل‌های مبتنی بر یونیکس، فورک بمب‌ها عموماً با استفاده از فراخوان سیستمی fork ساخته می‌شوند. از آنجایی که پروسه‌های فورک‌ شده خود یک کپی از فرایند اصلی محسوب می‌شوند، وقتی که اجرایشان از آدرس بعدی در اشاره‌گر فریم از سر گرفته می‌شود، آنها هم خودشان یک فرایند جدید که در واقع کپی خودشان است، ایجاد می‌کنند. به این ترتیب، رشد تعداد پروسه‌ها تابعی نمایی خواهد بود. از آنجایی که در سیستم‌عامل‌های مدرن یونیکس، در حین ایجاد فرایندهای جدید از روش copy-on-write استفاده می‌شود، یک فورک بمب عموماً حافظه چنین سیستمی را اشباع نمی‌کند.

در سیستم‌عامل‌های ویندوز قابلیتی مشابه فراخوان سیستمی fork()‎ در یونیکس وجود ندارد. در نتیجه برای ایجاد فورک بمب در یک چنین سیستمی، باید به جای کپی کردن فرایند فعلی، یک فرایند جدید ایجاد کرد.

مثال

[ویرایش]

یک فورک بمب ساده به زبان سی: هشدار: این کد ممکن است باعث از کار افتادن رایانه شود.

#include <unistd.h>

int main(void)
{
    while(1)
        fork();
}

متوقف کردن یک فورک بمب پس از آغاز شدن آن کار آسانی نیست. برای این کار باید کلیه کپی‌های موجود در حافظه از فرایند مورد نظر را بیکباره حذف کرد. یک مشکل این است که با رخ دادن یک فورک بمب و اشباع شدن جدول فرایندها، نمی‌توان فرایند جدیدی ایجاد کرد، این حرف به این معنیست که نمی‌توان برای مثال با اجرای دستور kill پروسه‌ها را از بین برد.

منابع

[ویرایش]

Wikipedia contributors. Fork bomb. Wikipedia, The Free Encyclopedia. January 20, 2015, 21:01 UTC. Available at: http://en.wikipedia.org/w/index.php?title=Fork_bomb&oldid=643423285. Accessed February 17, 2015.