معرفی و روش حل آسیب‌پذیری گاو کثیف Dirty COW در لینوکس

چند روزی هست که اخباری درباره آسیب‌پذیری جدید لینوکس در خبر ها پخش شده است که گروه هسته‌ی لینوکس اشکال امنیتی که در حملات علیه کارگزارهای عملیاتی استفاده می‌شد را برطرف کرد، این آسیب‌پذیری معروف است به گاو کثیف Dirty COW که در ادامه به معرفی و راه حل Fix آن می پردازیم.

گروه هسته‌ی لینوکس یک اشکال امنیتی که در حملات علیه کارگزارهای عملیاتی استفاده می‌شد را برطرف کرد. شناسه‌ی این آسیب‌پذیری روز-صفرم CVE-2016-5195 است اما از آن با نام «گاو کثیف» نیز یاد می‌شود. براساس وصله‌ی رسمی که دیروز منتشر شد، این آسیب‌پذیری در هسته‌ی لینوکس قبل از نسخه‌ی 3.9 که سال 2007 منتشر شده بود، وجود داشت. شواهدی مبنی بر این وجود ندارد که این آسیب‌پذیری از سال 2007 مورد بهره‌برداری قرار گرفته باشد اما محقق امنیتی فیل اوستر (Phil Oester) به Red Hat از حوادث اخیر خبر داد که یک مهاجم از کد این آسیب‌پذیری بهره‌برداری کرده است.

CVE-2016-5195 یا همان Dirty COW مشکل در شرایط رقابتی در هسته‌ی لینوکس است

به گزارش Red Hat، آسیب‌پذیری CVE-2016-5195 شرایط رقابتی در روشی است که زیرسامانه‌ی حافظه‌ی هسته‌ی لینوکس، شکستن (copy-on-write (COW در نگاشت حافظه‌ی فقط-خواندنی خصوصی را مدیریت می‌کند. شرایط رقابتی در اصطلاح علوم کامپیوتر حالتی را بیان می‌کند که وظایف با ترتیب اشتباهی اجرا می‌شوند که باعث درهم شکستن برنامه‌ها شده یا دری را برای اجرای کدها در آینده باز می‌کند.

نتیجه‌ی آسیب‌پذیری CVE-2016-5195 برای یک مهاجم بالا بردن امتیازات در سامانه‌ی قربانی حتی تا سطح دسترسی ریشه (root) است.

آسیب‌پذیری گاو کثیف (Dirty COW) از قصد، بیش از حد تبلیغ شده است

در کنار این واقعیت که این آسیب‌پذیری در حملات زنده مورد استفاده قرار گرفته، آسیب‌پذیری گاو کثیف به عنوان یک خطر برای سامانه‌ی لینوکس مورد بررسی قرار نگرفته است اما این بدین معنی نیست که کاربران وصله‌ کردن آن را به تأخیر بیندازند. محققان امنیتی که این آسیب‌پذیری را کشف کردند برای سرگرمی شرکت‌های امنیتی، این نمونه را بیش از حد تبلیغ کردند. آن‌ها یک آرم برای گاو کثیف، صفحه‌ی وب، حساب کاربری توییتر و فروشگاه برخط که از طریق آن کیف‌های لپ‌تاپ به قیمت 17100 دلار به فروش می‌رسد را ایجاد کردند.

با این وجود، این خطر جدی است. در مصاحبه‌ای با 73، اوستر اعلام کرد یکی از وب‌گاه‌هایی که مدیریت می‌کند پس از بارگذاری بهره‌برداری CVE-2016-5195 بر روی آن، آلوده شده است. اوستر به نشریه‌ها گفت: «همان‌طور که لینوس اعلام کرد این یک اشکال قدیمی است و از سال‌ها پیش هسته‌ی لینوکس را تحت تأثیر قرار داده است. تمامی کاربران لینوکس باید این اشکال را جدی گرفته و سامانه‌ی ASAP خود را وصله کنند.»

معرفی کامل و دقیقآسیب‌پذیری CVE-2016-5195 یا Dirty COW:

 


 


 


لیست از توزیعهای لینوکس که Dirty COW تحت تاثیر قرار می دهد (از جمله ماشین های مجازی که از همان هسته استفاده می کنند)

  1. Red Hat Enterprise Linux 7.x
  2. Red Hat Enterprise Linux 6.x
  3. Red Hat Enterprise Linux 5.x
  4. CentOS Linux 7.x
  5. CentOS Linux 6.x
  6. CentOS Linux 5.x
  7. Debian Linux wheezy
  8. Debian Linux jessie
  9. Debian Linux stretch
  10. Debian Linux sid
  11. Ubuntu Linux precise (LTS 12.04)
  12. Ubuntu Linux trusty
  13. Ubuntu Linux xenial (LTS 16.04)
  14. Ubuntu Linux yakkety
  15. Ubuntu Linux vivid/ubuntu-core
  16. SUSE Linux Enterprise 11 and 12.

چطور آسیب‌پذیری CVE-2016-5195 یا Dirty COW را در لینوکس وصله کنیم؟

روش پیدا کردن ورژن کرنل: 

$ uname -a
$ uname -mrs

خروجی چیزی شبیه به این باید باشد:

Linux 3.13.0-95-generic x86_64

نکته 1: بعد از انجام مراحل لینوکس حتما نیاز به reboot دارد.

نکته 2: بهتر است همیشه قبل از انجام یک تغییر در سرور بک آپ از شرایط موجود داشته باشیم.

نکته 3: این آموزش بر اساس وصله ای که در تاریخ 21/Oct/2016 در cyberciti نوشته شده است تهییه شده است.

بروزرسانی برای Debian یا Ubuntu:

$ sudo apt-get update && sudo apt-get upgrade && sudo apt-get dist-upgrade

Reboot سرور:

$ sudo reboot

بروزرسانی برای RHEL / CentOS Linux 5.x/6.x/7.x:

$ sudo yum update
$ sudo reboot

بروزرسانی برای RHEL / CentOS Linux 4.x:

$ sudo up2date -u
$ sudo reboot

بروزرسانی برای CloudLinux 6:

yum clean all; yum install kernel-2.6.32-673.26.1.lve1.4.18.el6 kmod-lve-1.4-18.el6 --enablerepo=cloudlinux-updates-testing

بروزرسانی برای Suse Enterprise Linux با Opensuse Linux:

# zypper patch
# reboot

تایید:

شما با دستورات زیر می توانید اطلاع پیدا کنید که بروزرسانی به درستی انجام شده است یا خیر

$ uname -a
$ uname -r
$ uname -mrs

اگر سیستم شما آسب پذیر است:

script برای RHEL/CentOS:

$ wget https://access.redhat.com/sites/default/files/rh-cve-2016-5195_1.sh
$ bash rh-cve-2016-5195_1.sh

برای دیگر نسخه های PoC یا proof of concept exploit code:

$ wget https://raw.githubusercontent.com/dirtycow/dirtycow.github.io/master/dirtyc0w.c

اجرا را با دسترسی روت :

$ sudo -s
# echo this is not a test > foo

اجرا با دسترسی کاربر عادی:

$ gcc -lpthread dirtyc0w.c -o dirtyc0w
$ ./dirtyc0w foo m00000000000000000
mmap 56123000
madvise 0
procselfmem 1800000000
$ cat foo
m00000000000000000
CVE-2016-5195Dirty COWFix آسیب‌پذیری گاو کثیف Dirty COWFix کردن آیسب پذیری CVE-2016-5195Linux Kernelzero-dayآسیب‌پذیری روز-صفرمآسیب‌پذیری گاو کثیفگاو کثیفهسته‌ی لینوکس