با سلام
امروز با نقد و بررسی باگ bash shellshock در خدمتتون هستم.
خوب ابتدا در مورد bash یه توضیح مختصر بدم ; Bash یه Shell برای سیستم عامل های مبتنی بر Unix هست، به عبارت دیگه Bash یه مفسره که دستورات کاربر را مدیریت میکنه. همچنین Bash میتونه به عنوان یه مفسر برای CGI Script ها در وب سرور به کار گرفته بشه . Shellهای دیگری غیر از Bash برای سیستم عاملهای مبتنی بر Unix معرفی شدهاند اما از اواخر دههی ۸۰ میلادی، Bash یکی از پرطرفدار ترینها بوده و به صورت پیشفرض همراه هر سیستم عامل مبتنی بر Linux و البته سیستم عامل OS X ارایه میشه. بنابراین حتی ممکنه قدمت این آسیبپذیری به همون دهه هشتاد برگرده
خوب حتما میپرسین چه سرویس هایی رو میتونه مختل کنه ، طبق بررسی اولیه، هر سیستمعامل مبتنی بر Unix دارای Bash به روز نشده ، دستگاههای توکار دارای Bash مانند روترها، دوربینهای آنلاین و … میتونن آسیبپذیر باشند.
ریشهی این آسیبپذیری چیست؟
Bash به کاربر این قابلیت را میدهد که متغیر و یا توابعی (Environment Variable) را تعریف کند که در بین چند Instance از Bash به اشتراک گذاشته شود. ریشهی این باگ در زمان تجزیه (Parse) تعریف تابع میباشد. هنگامی که یک تابع به صورت زیر تعریف شود:
x='() { :; }; /bin/pwd' bash -c ""
مفسر Bash در تشخیص اتمام تعریف تابع دچار خطا میشود. در زمان اجرا شدن Bash این متغیر بارگزاری میشود و رشتهی بعد از کارکتر ; را اجرا میکند. در مثال بالا اجرای /bin/pwd مسیر جاری نمایش داده میشود.
خوب بیش از این توضیح نمیدم فیلمو ببینین همه چیو متوجه خواهید شد .
پیروز باشید.