مشکل امنیتی لینوکس 0day linux dirty cow

نوشته شده توسط: محمد

یک مشکل امنیتی فوق العاده مهم که در کرنل لینوکس کشف شده باگ Zero Day از نوع Local Privilege Escalation (ارتقا سطح دسترسی) است. لازم به ذکر است که این باگ حدود ۱۱ سال پیش یعنی از سال ۲۰۰۵ وجود داشته
dirty-cow-linux
با استفاده از این باگ کاربران معمولی هاست که دسترسی با یوزر محدود به سیستم عامل لینوکس دارند. می توانند دسترسی 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 استفاده کنید. برای اینکار ابتدا باید آن را دریافت کنید :
[php]
#wget https://access.redhat.com/sites/default/files/rh-cve-2016-5195_1.sh
[/php]
و بعد از ان این دستورات را اجرا کنید
[php]
#chmod +x rh-cve-2016-5195_1.sh
#./rh-cve-2016-5195_1.sh
[/php]
در صورتی که سیستم عامل آسیب پذیر باشد این خطا مشاهده می شود:
Your kernel is ۲.۶.۳۲-۶۴۲.۳.۱.el6.x86_64 which IS vulnerable.
Red Hat recommends that you update your kernel. Alternatively, you can apply partial
تصویری از خطا
dirty-cow-vuln
جهت شناسایی این مشکل بر روی سایر توزیع های دیگر می توانید ابتدا فایل زیر را دریافت کنید
[php]
$ wget https://raw.githubusercontent.com/dirtycow/dirtycow.github.io/master/dirtyc0w.c
[/php]
حالا کافیست یک بار به کاربر root وارد شوید و یک رشته را درون یک فایل بنویسید :
[php]
$ sudo -s
# echo this is not a test foo
[/php]
اکنون کافیست تا با کاربر معمولی دستور را اجرا کنید
اکنون فایل ساخته شده را به صورت پایین اجرا کنید
[php]
$ gcc -lpthread dirtyc0w.c -o dirtyc0w
[/php]
[php]
$ ./dirtyc0w foo m00000000000000000
[/php]
[php]
$ cat foo
[/php]
پس از اینکار در صورت وجود مشکل بر روی سیستم، متن مشاهده شده در فایل foo با مقدار اولیه متفاوت خواهد بود.
عکس زیر را برای درک بهتر مشاهده کنید
dirty-cow-linux-other

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

[php]
#yum update
#reboot
[/php]
دستورات برای حل این مشکل در Debian و Ubuntu :

[php]
$sudo apt-get update && sudo apt-get upgrade && sudo apt-get dist-upgrade
$sudo reboot
[/php]
برای کسب اطلاعات بیشتر در مورد این مشکل امنیتی می توانید به لینک های ذیل مراجعه نمایید
https://access.redhat.com/security/vulnerabilities/2706661
http://dirtycow.ninja/

مطالب مرتبط

نظر شما