امنیت امنیت سرور ها

آسیب پذیری امنیتی خطرناک Bash، خطرناک تر از Heartbleed

آسیب پذیری امنیتی خطرناک Bash، خطرناک تر از Heartbleed
Written by LearnSpot Group

محقق امنیتی استفان چازیلاس، آسیب پذیری بحرانی را در نرم افزار Bash، کشف کرده است که پیرامون نحوه ی عمل کرد متغیرهای محیطی می باشد.
به گزارش پایگاه اخبار امنیتی فن آوری اطلاعات و ارتباطات، این آسیب پذیری با شناسه ی CVE-2014-6271 معرفی شده است و در تمام توزیع های لینوکس از جمله توزیع دبیان وجود دارد و به گفته ی کارشناسان امنیتی این آسیب پذیری به اندازه ی آسیب پذیری Heartbleed مهم و پرخطر است و می تواند تاثیر بسیار شگفتی در دنیای اینترنت داشته باشد.
bash مخفف عبارت Bourne again shell ابزاری شبیه به شِل در سامانه های یونیکسی است که احتمالاً محبوب ترین ابزار کاربران لینوکس نیز می باشد.
در سامانه عامل های لینوکسی، متغیر های محیطی راهی را برای تاثیر گذاری در رفتار یک نرم افزار ایجاد می کنند، این متغیر ها معمولاً دارای یک نام و یک مقدار منتسب به نام هستند. در سامانه عامل لینوکس، غالب نرم افزار ها در هنگام اجرا یک نسخه از بَش را در پشت صحنه اجرا می کنند و از آن برای ارتباط با یک کاربر راه دور استفاده می کنند.
آسیب پذیری موجود در بَش به این مسئله مربوط است که متغیر های محیطی می توانند با مقادیر اولیه ی مخربی قبل از صدا زدن نرم افزار بَش ایجاد شوند. این متغیر ها می توانند به جای مقادیر مجاز شامل کد باشند که به محض اجرای بَش این کد نیز اجرا می شود.
نام متغیر محیطی که حاوی کد است مهم نیست و تنها محتوا و یا مقدار این متغیر است که می تواند مخرب باشد و به همین دلیل این آسیب پذیری می تواند در بسیاری از نرم افزار ها تاثیرگذار باشد، در ادامه برخی نرم افزار های مهم بررسی شده است :
• ForceCommand: ابزاری برای پیکربندی sshd به منظور ایجاد قابلیت های اجرای محدودشده ی فرمان برای کاربران راه دور است. آسیب پذیری تازه کشف شده می تواند محدودیت اجرای فرمان را دور بزند و امکان اجرای هر فرمانی را فراهم کند. بسیاری از مخزن های نرم افزاری Git و Subversion از یک شِل با این پیکربندی استفاده می کنند. البته استفاده ی معمولی از OpenSSH امکان سوء استفاده از این آسیب پذیری را برای مهاجم باز نمی کند، چراکه در این حالت کاربر امکان اجرای همه ی فرمان ها را دارد.
• کارگزار های Apache: در صورتی که این کارگزارها با از mod_cgi و mod_cgid استفاده کنند در مقابل این آسیب پذیری مصون نیستند، اسکریپت های CGI معمولاً یا در بَش توسعه پیدا کرده اند و یا یک شِل جدید برای اجرا باز می کنند.
• اسکریپت های PHP: این اسکریپت ها با متغیر mpd_php حتی اگر برای اجرا یک شِل جدید باز کنند منجر به سوء استفاده از این آسیب پذیری نخواهند شد.
• سرویس گیرندگان DHCP: این سرویس گیرندگان برای پیکربندی سامانه باید یک اسکریپت شِل را اجرا کنند که متغیر های آن می تواند از یک کارگزار که به صورت بالقوه آلوده شده است گرفته شود. که در نهایت منجر به اجرای فرمان های مخرب در ماشین سرویس گیرنده می شود.

مانند همه ی زبان های برنامه نویسی، بَش نیز دارای توابع است، اگرچه در بسیاری از مواقع کارایی این توابع به اندازه ی زبان های برنامه نویسی سطح بالا نیست، ولی به هرحال این احتمال وجود دارد که یک تابع به عنوان مقدار متغیر محیطی درج شود.
تعریف یک تابع به عنوان متغیر محیطی زمانی امکان پذیر است که کد اضافی در انتهای تعریف تابع افزوده شود، مانند مثال زیر:

برای رفع چنین آسیب پذیری لازم است توسعه دهندگان در نرم افزار های خود این تضمین را ایجاد کنند که امکان افزودن کد اضافی در انتهای تابع وجود ندارد، بنابراین اگر کد مخرب بالا در یک بَش وصله شده اجرا شود، خروجی مانند مثال زیر خواهد بود:

کد تایید مفهوم این آسیب پذیری :

 

لازم به ذکر است که این آسیب پذیری در سامانه عامل های لینوکسی از جمله توزیع های RedHat، دبیان، CentOS و اوبونتو وجود دارد و این توسعه دهندگان در حال ارائه ی وصله می باشند که باید به سرعت وصله ها در کارگزار ها نصب شوند چرا که امکان سوء استفاده از این آسیب پذیری در مقیاس بسیار گسترده ای وجود دارد.

در صورت نیاز برای رفع این آسیب پذیری از دستور زیر استفاده کنید :

 

LearnSpot Group

About the author

LearnSpot Group

Leave a Comment