۱۱ ارديبهشت ۱۴۰۴
به روز شده در: ۱۱ ارديبهشت ۱۴۰۴ - ۱۷:۲۹
فیلم بیشتر »»
کد خبر ۳۵۷۶۰۳
تاریخ انتشار: ۰۹:۵۴ - ۰۵-۰۷-۱۳۹۳
کد ۳۵۷۶۰۳
انتشار: ۰۹:۵۴ - ۰۵-۰۷-۱۳۹۳

آنچه باید درباره آسیب پذیری "شل شاک" بدانید!

Bash چیست؟

Bash یک Shell برای سیستم‌ عامل های مبتنی بر Unix هست، به عبارت دیگر Bash یک مفسر است که دستورات کاربر را مدیریت می‌کند. همچنین Bash می‌تواند به عنوان یک مفسر برای CGI Script ها در وب سرور به کار گرفته شود. Shell‌های دیگری غیر از Bash برای سیستم‌ عامل‌های مبتنی بر Unix معرفی شده‌اند اما از اواخر دهه‌ی ۸۰ میلادی، Bash یکی از پرطرفدار ترین‌ها بوده و به صورت پیش‌فرض همراه هر سیستم‌عامل مبتنی بر Linux و البته سیستم‌عامل OS X ارایه می‌شود. بنابراین حتی ممکن است قدمت این آسیب‌پذیری به همان دهه هشتاد برگردد!

چه سرویس‌هایی می‌تواند آسیب‌پذیر باشد؟

طبق بررسی اولیه، هر سیستم‌عامل مبتنی بر Unix دارای Bash به روز نشده، دستگاه‌های توکار دارای Bash مانند روتر‌ها، دوربین‌های آنلاین و … می‌توانند آسیب‌پذیر باشند.


آیا میزان ریسک این آسیب‌پذیری از آسیب‌پذیری HeartBleed بیشتر است؟

تا روشن شدن همه زوایای این آسیب پذیری باید منتظر ماند ولی جواب ما در حال حاضر به این سوال خیر است. اما nist.gov برای شدت آسیب‌پذیری ShellShock شدت ۱۰ از ۱۰ در نظر گرفته است. این آسیب‌پذیری برای بهره‌برداری نیاز به دسترسی اولیه ندارد و در شرایطی از راه دور با ارسال یک درخواست می‌توان دستوراتی را سیستم قربانی اجرا کرد. در آسیب‌پذیری HeartBleed نیز بدون نیاز به دسترسی اولیه امکان بهر‌ه‌برداری وجود داشت ولی امکان اجرای دستور بروی سیستم قربانی به صورت مستقیم وجود نداشت.

با این حال بررسی های اولیه نشان می‌دهد که گستردگی این آسیب‌پذیری (ShellShock) برای بهره‌برداری از راه دور، حداقل در بین وب‌ سایت‌های ایرانی بسیار کمتر از HeartBleed می‌باشد. اما باید توجه داشت که به طور کلی گستردگی ShellShock بیشتر از HeartBleed می‌باشد زیرا بسیاری از نرم‌افزار‌ها از Bash استفاده می‌کنند که در نتیجه آن‌ها نیز آسیب‌پذیر هستند. به عبارت دیگر بر خلاف HeartBleed که نسخه‌های خاصی را مورد تهدید قرار داده بود این آسیب‌پذیری ممکن است در بسیاری از نرم‌افزارهای قدیمی که مثلاً در دوربین‌های آنلاین، روتر‌ها و … استفاده شده است نیز وجود داشته باشد.


ریشه‌ی این آسیب‌پذیری چیست؟

Bash به کاربر این قابلیت را می‌دهد که متغیر و یا توابعی (Environment Variable) را تعریف کند که در بین چند Instance از Bash به اشتراک گذاشته شود. ریشه‌ی این باگ در زمان تجزیه (Parse) تعریف تابع می‌باشد. هنگامی که یک تابع به صورت زیر تعریف شود:

VAR='() { :; }; /bin/pwd' bash -c ""

مفسر Bash در تشخیص اتمام تعریف تابع دچار خطا می‌شود. در زمان اجرا شدن Bash این متغیر بارگزاری می‌شود و رشته‌ی بعد از کارکتر ; را اجرا می‌کند. در مثال بالا اجرای /bin/pwd مسیر جاری نمایش داده می‌شود.

بهره‌برداری از این آسیب‌پذیری چگونه امکان‌پذیر است؟

در اینجا منظور از بهره‌برداری، بهره برداری از راه دور می‌باشد؛ یعنی حالتی که نفوذگر دسترسی به سیستم قربانی نداشته باشد. در این حالت باید از طریقی نفوذگر بتواند یک Environment Variable (متغیر محیطی) دستکاری شده را در سیستم قربانی تنظیم کند. با این شرایط بیشترین احتمال برای بهره‌برداری از این آسیب‌پذیری از راه دور از طریق یک CGI Script آسیب‌پذیر خواهد بود. در این شرایط نفوذگر با ارسال یک درخواست دستکاری شده که حاوی دستوراتی خطرناک است می‌تواند کنترل کامل سیستم قربانی را در دست بگیرد. برای مثال بدون دسترسی به سیستم‌ قربانی، از راه دور با ارسال یک درخواست می‌توان هر دستوری را در سیستم قربانی اجرا کرد. مثلاً در یک CGI Script آسیب‌پذیر مانند مثال زیر:

#!/bin/bash
echo "Content-type: text/html"

echo ""
echo '<html>'
echo '<head>'
echo '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">'
echo '<title>Test</title>'
echo '</head>'
echo '<body>'
/usr/bin/env
echo '</body>'
echo '</html>'
exit 0


با ارسال یک درخواست که مقدار User-Agent در آن تغییر یافته است می‌توان محتوای فایل /etc/passwd را خواند.

curl -A "() { foo;};echo;/bin/cat /etc/passwd" http://example/vulnerable.cgi


آیا من آسیب‌پذیر هستم؟

اگر سیستم‌عامل شما از خانواده Linux و یا OS X است دستور زیر را در خط فرمان وارد کنید. اگر متن You are vulnerable!! را مشاهده کردید یعنی نسخه‌ی آسیب‌پذیر Bash بروی سیستم‌عامل شما نصب شده است.

VAR='() { :; }; echo "You are vulnerable!!"' bash -c ""


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

env X='() { (a)=>\' sh -c "echo date";


چگونه باید آسیب‌پذیری را رفع کنم؟

برای رفع آسیب‌پذیری باید نرم‌افزار Bash را آپدیت کنید. با توجه به نرم‌افزار مدیریت بسته‌ها (Package Manager) نصب شده روی سیستم‌تان باید این کار را انجام دهید. مثلاً در Ubuntu:

apt-get update; apt-get upgrade;

اگر آپدیت توسط نرم‌افزار مدیریت بسته‌ها شناسایی نشد از دستور زیر استفاده کنیدwget http://ftp.gnu.org/gnu/bash/bash-4.3.tar.gz

tar zxvf bash-4.3.tar.gz
cd bash-4.3
./configure
make
make install


در سیستم‌عامل OS X :

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew update
brew install bash
sudo sh -c 'echo "/usr/local/bin/bash" >> /etc/shells'
chsh -s /usr/local/bin/bash



آیا شرکت بیان ابزاری برای بررسی این آسیب‌پذیری به صورت عمومی منتشر خواهد کرد؟

با توجه به عدم عمومیت و گستردگی بهره‌برداری آسیب‌پذیری از راه دور، خیر.

آیا این آسیب‌پذیری توسط خرابکاران در حال بهره‌برداری است؟

متاسفانه بله، با توجه به شواهد این آسیب‌پذیری توسط نفوذگران در حال بهره‌برداری است.

همچنین یک بدافزار اختصاصا در حال بهره‌برداری از این آسیب‌پذیری است. برای مثال اگر در پوشه‌ی temp فایلی با نام besh و کد کنترلی md5:5924bcc045bb7039f55c6ce29234e29a مشاهده کردید، متاسفانه شما نیز مورد هدف قرار گرفته اید.

منبع: بیان
ارسال به دوستان
ناسا اولین ژنراتور فضایی انرژی هسته‌ای جهان را آزمایش می‌کند آقای آملی لاریجانی! بعد از 2300 روز، تازه می گویید نه تعجیل می کنیم نه تعلل؟! 5 آموزۀ استراتژیک در مذاکرۀ ایران و آمریکا به روایت اندیشکدۀ کارنگی حوزه علمیه قم چگونه در سال ۱۳۰۱ بازتأسیس شد؟ مشاور امنیت ملی کاخ سفید: ترامپ آماده صلح با ایران است/ ویتکاف منتظر است تا تهران به میز مذاکرات بازگردد نتانیاهو: ۱۸ نفر به اتهام دست داشتن در آتش‌ سوزی‌ ها بازداشت شدند شلیک گلوله در نارمک تهران برای دستگیری ۲ سارق/ پلیس: سارقان می خواستند با ماموران درگیر شوند تصاویری از چهره علی شمخانی در جلسه بررسی پیوستن به پالرمو؛ جلیلی و لاریجانی هم بودند/ تیپ جدید احمدی نژاد در جلسه مجمع (عکس) فلاحت‌ پیشه: ارسال پیامک حجاب هیچگاه مبنای قانونی ندارد آیت الله نورمفیدی: فقها و مجتهدان باید به گونه ای مطالب را بیان کنند که سبب «نفرت» نشود واکنش ظریف به عزاداری بوشهری ها در فستیوال کوچه/ مردم نشان دادند که زمان شناس هستند/ به اروپایی‌ها گفتم روی‌تان را زیاد نکنید! ادعای خبرنگار ایتالیایی: ماتزاری سرمربی استقلال شد/ باشگاه استقلال: هنوز قراردادی با ماتزاری امضا نشده مبنای نامگذاری «روز خلیج فارس» چه بود؟ فیلم‌های آخر هفته در تلویزیون روابط‌عمومی تاریک و چراغ روشن باج‌گیران اینترنتی
نظرسنجی
به نظر شما هدف ستاد امر به معروف از ارسال پیامک های حجاب به موبایل های مردم چیست؟