تحلیل بمب خوشه ای Bash در لینوکس ‎:‎(‎)‎{‎ ‎:‎|‎:‎&‎ ‎}‎;‎:‎

بمب خوشه ای لینوکس به صورت زیر است: اگر دستور زیر را در bash اجرا کنید (فرقی نمی کند لینوکس، یا ویندوز یا هر سیستم عاملی که bash داشته باشد) بعد از گذشت چند لحظه تمام منابع سیستم مصرف شده و به اصطلاح سیستم crash میکند و به هیچ وسیله نمی توانید بمب خوشه ای را متوقف کنید و می بایست سیستم را ریستارت کنید.

:(){ :|:& };:

اخطار: برای اجرای دستور فوق احتیاط کنید زیرا سیستم عامل هنگ کرده و محبور به ریستارت کردن سیستم توسط دکمه ی فیزیکی خواهید شد.

بمب خوشه ای فوق، یک نوع حمله ی Denial of Service (یا به اختصار DoS) می باشد. این بمب از دستور fork سیستم عامل برای تولید مثل خوشه ای استفاده میکند. (به همین دلیل به آن بمب bash fork گفته می شود)

دستور  ‎:‎(‎)‎{‎ ‎:‎|‎:‎&‎ ‎}‎;‎:‎ فقط یک تابع bash می باشد که قدری عجیب غریب نوشته شده! در ادامه آن را برای شما شرح می دهم که به طور کامل طرز کار آن را درک کنید.

تابع فوق، به صورت بازگشتی خودش را فراخوانی میکند. این تابع معمولا توسط مدیران سیستم برای بررسی محدودیت تعداد پروسه ها استفاده می شود. محدودیت تعداد پروسه ها در فایل limits.conf واقع در آدرس /etc/security/limits.conf و همچنین توسط PAM قابل تنظیم می باشد.

شرح بمب:

 ‎:‎(‎)‎ تعریف یک تابع به نام : می باشد که هیچ آرگومانی نمی گیرد. تعریف توابع در bash به صورت زیر است:

1foo(){
2  arg1=$1
3  arg2=$2
4  echo 'Bar..'
5  #other commands
6}

بمب خوشه ای به صورت زیر تعریف می شود:

1:(){
2  :|:&
3};
4:

بنا بر این تابعی به نام : تعریف شده است.

دستور :|: تابع : را به صورت بازگشتی فراخوانی میکند و خروجی اش را به یک فراخوانی دیگر از : پایپ میکند. بد ترین قسمت قضیه این است که هربار فراخوانی تابع، منجر به دو بار فراخوانی بازگشتی می شود. لذا شاخص رشد این تابع از مرتبه ی نمایی (2n) می باشد.

علامت & سبب می شود که اجرای بازگشتی تابع وارد background شود و به هیچ وجه قابل متوقف کردن نباشد و پروسه های خوشه ای به صورت نمایی تولید می شوند و منابع سیستم را هدر می دهند.

علامت ; به معنای پایان تعریف تابع می باشد.

علامت : در انتها، تابع : را فراخوانی میکند و بمب شروع به کار میکند.

اگر بخواهیم بمب خوشه ای را به یک شکل خوانا تر بنویسیم، به این صورت خواهد بود:

1bomb() {
2  bomb | bomb &
3}; bomb

سرور های لینوکس اگر به درستی پیکربندی شده باشند، بمب خوشه ای نمی تواند آن ها را از کار بیاندازد

شیوه ی مقابله با این بمب را در یک مطلب دیگر شرح خواهم داد.

مطالب مرتبط:

نظرات شما

قسمت نظرات با استفاده از سرویس دیسکاس پیاده سازی شده است. متاسفانه این سرویس از داخل ایران قابل دسترس نیست. لطفا از آی پی خارجی استفاده کنید.