شبح سرگردان، لینوکس را ترساند- رخنه‌ی GHOST

سلام

آسیب پذیری «شبح» یا «GHOST» نام رخنه ی جدیدی است که توسط  کوالایز و در ۷ بهمن ۱۳۹۳ (۲۷ ژانویه) کشف شد و به این ترتیب به لیست نام‌های HeartBleed و Shellshock و POODLE این اسم رو هم باید اضافه کنیم. کلا این چند وقته لینوکس روی شانس نبوده...

این مطلب از دو مقاله‌ی کوالایز و ترندمیکروـه که کار ترجمه‌ی اون توسط یکی از حرفه‌ای‌ترین آدم‌های کشورمون به اسم «تمدن» انجام شده. لطفا احترام بگذارید wink

آسیب پذیری «شبح» یک ضعف جدی در لینوکسه که به خاطر وجود کتابخانه ی glibc به وجود میاد. این رخنه به هکر اجازه میده که از راه دور، کنترل کامل سیستم قربانی رو بدون داشتن هیچ دانش قبلی در خصوص سیستم و اعتبارسنجی‌های اون به دست بگیره. این رخنه با نام CVE-2015-0235 شناخته میشه. (این اولین CVE-2015 جدی و باحاله!!)

ghost vuln in linux

کتابخانه ی glibc چیست؟

کتابخانه‌ی گنو/سی یا همون glibc، بخشی از کتابخانه های استاندارد زبان برنامه نویسی C رو پیاده سازی کرده و به عنوان بخشی از هسته ی لینوکس شناخته می شه. بدون این کتابخانه سیستم های لینوکسی از کارآیی ساقط میشن sad

دلیل وجود این آسیب پذیری چیست؟

این رخنه به دلیل سرریز بافر در تابع ()nss_hostname_digits_dots__ از کتابخانه ی glibc به وجود میاد و امکان استفاده از اون در زمان فراخوانی تمام توابع ()*gethostbyname به صورت محلی یا از راه دور وجود دارد. سایر برنامه‌ها، از طریق مجموعه توابع ()*gethostbyname به DNS resolver دسترسی پیدا می کنند.

میزان خطر در چه حدی است؟

امکان اجرای دستور و کد وجود دارد. هکری که بتونه این آسیب پذیری رو اکسپلوییت کنه می تونه کنترل کامل سیستم رو در دست بگیره.

آیا خطر آن جدی است؟

در طی آزمایش‌هایی که داشتیم توانستیم به وسیله ی ارسال یک ایمیل به میل-سرور، روی ماشین لینوکسی دسترسی شل از راه دور بگیریم. این مورد روی تمام حالت های محافظتی مثل ASL،PIE و NX و روی سیستم های ۳۲ و ۶۴ بیتی با موفقیت انجام شد.

برای جلوگیری از این خطر چه کنیم؟

بهترین راه اینه که از وصله‌هایی که خود لینوکس ارائه می ده استفاده کنید. وصله‌های بعد از ۲۷ ژانویه ۲۰۱۵ معتبرند.

دلیل نام‌گذاری این آسیب پذیری چیست؟

اسم این آسیب پذیری رو GHOST گذاشتیم چون به خاطر تابع GetHOST این رخنه به وجود اومده.

آیا این آسیب پذیری، یک رخنه‌ در زمان طراحی است؟

نه. پیاده سازی تابع مشکل داشته است.

چه سیستم های عاملی در معرض خطرند؟

اولین نسخه‌ی آسیب پذیر مربوط به glibc-2.2 می‌شود که در ۱۰ نوامبر سال ۲۰۰۰ منتشر شده! البته طی تحقیقات به این نتیجه رسیدیم که این مشکل در ۲۱ ماه مه ۲۰۱۳، برطرف شده. اما متاسفانه هیچ وقت به عنوان یک خطر امنیتی معرفی نشده بود (و خدا می دونه که تا الان چه سوء استفاده هایی ازش شده!). بیشتر توزیع های لینوکس از این رخنه رنج می برند. مثل دبین-۷ (ویزی)، ردهت ۶ و ۷، CentOS  در نسخه های ۶ و ۷، اوبونتو ۱۲.۰۴ و...

از کجا می تونم اکسپلوییت این رخنه رو دانلود کنم؟

ما قصد داریم به همه زمان کافی را برای وصله کردن سیستم عامل‌شان بدهیم. برنامه ی ما برای آینده این است که هر وقت حداقل نیمی از سیستم عامل ها وصله شوند، اکسپلوییت آن را به صورت عمومی منتشر کنیم.
برای بررسی و اسکن سیستم‌تون می تونید از Qualys Vulnerability Management استفاده کنید.

چقدر بترسیم؟

اصولا انسان فقط باید از خدا بترسه اما ترندمیکرو گفته که خیلی هم نمی خواد بترسید چون:

  1. این موضوع در اکثر توزیع‌های بعد از سال ۲۰۱۳ وصله شده.
  2. اکسپلوییت این آسیب پذیری خیلی سخته و حتی هکرهای حرفه‌ای که موفق به این کار میشن در هربار فقط می تونند کدهایی با سایز کوچک و در حد ۴ یا ۸ بایت رو اجرا کنند. (بستگی به ۳۲ یا ۶۴ بیتی بودن سیستم عامل داره.)
  3. کد باید به آدرسی نوشته بشه که ارجاع به اون آدرس با اشاره‌گری باشه که هکر قراره دست‌کاریش کنه. (می دونم پیچیده شد اما دقیقا همینه دیگه!)
  4. در این تابع نمی تونیم از نام دامنه استفاده کنیم و باید آدرس به صورت دقیق داده شه. برنامه های جدیدتر از  ()getaddrinfo استفاده می کنند که IPv6 رو هم پشتیبانی می کنه.(راست میگه! خود من هم وقتی می خوام سوکت بنویسم از تابع ()getaddrinfo استفاده می کنم.)

و در پایان به هر کسی که تا پایان این مطلب رو خونده خسته نباشید و خدا قوت می گم laugh

ترجمه توسط: تمدن
تاریخ ساخت: January 27, 2015 یا ۷ بهمن ۱۳۹۳
تاریخ انتشار: January 28, 2015 یا ۸ بهمن ۱۳۹۳