راهنمای ترمیم آسیبپذیری گاو کثیف
آسیب پذیری Dirty COW (گاو کثیف) چیست؟
یک ضعف امنیتی ۹ ساله در سیستم عامل Linux که در اکثر توزیعهای این سیستم عامل وجود دارد و بتازگی در برخی حملات مورد بهرهجویی نفوذگران قرار گرفته است. این آسیبپذیری، Dirty COW نامگذاری شده که در آن COW از کلمات Copy-on-Write برگرفته شده است.
Dirty COW با شناسه CVE-2016-5195، دسترسی نوشتن بر روی حافظه فقط خواندنی را برای مهاجم فراهم نموده و حق دسترسی او را تا درجه Root ترفیع میدهد.
خبر سوءاستفاه از Dirty COW توسط محقق کاشف آن که پیشتر یک سایت آگاهی رسانی در خصوص این آسیب پذیری و نمونه ای از بهره جوی آن را منتشر کرده بود اعلام شده است.
این آسیبپذیری از نسخه ۲٫۶٫۲۲ هسته Linux که در سال ۲۰۰۷ عرضه شد وجود داشته است.
هر چند که ترفیع امتیازی (Privilege Escalation) ضعف مهمی تلقی میشود اما عدم امکان بهرهجویی از Dirty COW بصورت از راه دور (Remote) حیاتی بودن آن را تا حدودی کاهش میدهد.
Copy-on-Write امکانی است که در برنامه نویسی بسترهایی که منابع را در حافظه مدیریت میکنند مورد استفاده قرار میگیرد.
آیا سرور من آسیب پذیر است؟
در توزیع های Ubuntu/Debian با اجرای دستور زیر میتوان متوجه وجود آسیبپذیری شد:
uname –rv
نتیجه دستور بالا عبارتی مشابه زیر است:
4.4.0-42- generic #62-Ubuntu SMP Fri Oct 7 23:11:45 UTC 2016
در صورتی که نسخه هسته قدیمیتر از نسخههای زیر باشد، سرور به ضعف امنیتی Dirty COW آسیبپذیر است.
4.8.0-26.28 for Ubuntu 16.10
4.4.0-45.66 for Ubuntu 16.04 LTS
3.13.0-100.147 for Ubuntu 14.04 LTS
3.2.0-113.155 for Ubuntu 12.04 LTS
3.16.36-1+deb8u2 for Debian 8
3.2.82-1 for Debian 7
4.7.8-1 for Debian unstable
همچنین برخی توزیعهای CentOS میتوانند از برنامهای که شرکت Red Hat ارائه کرده است استفاده کنند. بدین منظور پس از دریافت برنامه باید آن را از طریق Bash اجرا کرد:
wget https://access.redhat.com/sites/default/files/rh-cve-2016-5195_1.sh
bash rh-cve-2016-5195_1.sh
در صورت آسیبپذیر بودن هسته، پیامی مشابه متن زیر نمایش خواهد یافت:
Your kernel is 3.10.0-327.36.1.el7.x86_64 which IS vulnerable.
Red Hat recommends that you update your kernel. Alternatively, you can apply partial mitigation described at https://access.redhat.com/security/vulnerabilities/2706661
چطور این آسیبپذیری را برطرف کنم؟
برای ترمیم این آسیبپذیری میبایست هسته بهروز شده و دستگاه راه اندازی مجدد شود.
در توزیع Ubuntu/Debian با استفاده از دستور apt-get این کار صورت میگیرد.
sudo apt-get update && sudo apt-get dist-upgrade
در نسخههای 5، 6 و یا 7 توزیع CentOS میتوان از دستور زیر استفاده کرد.
sudo yum update
با اجرای دستور بالا کلیه بستههای نرم افزاری نیر بهروز می شوند. برای بهروزرسانی فقط هسته میتوان از دستور زیر استفاده کرد:
sudo yum update kernel
پس از اجرای دستورات فوق و راهاندازی مجدد دستگاه، در توزیع CentOS با اجرای دوباره دستور bash rh-cve-2016-5195_1.sh می توان از ترمیم آسیبپذیری اطمینان حاصل کرد:
Your kernel is 2.6.32-642.6.2.el6.x86_64 which is NOT vulnerable.
نسخه هسته نمایش داده شده با توجه به توزیعهای مختلف متفاوت خواهد بود.
راهاندازی مجدد دستگاه پس از انجام بهروزرسانی ضروری است؛ البته در صورت استفاده از KernelCare نیازی به راهاندازی مجدد نخواهد بود.