یک آسیب‌پذیری افزایش سطح دسترسی در هسته لینوکس کشف شده است که به سال ۲۰۰۵ برمی‌گردد و بر روی توزیع‌های اصلی سیستم‌عامل لینوکس شامل Redhat ،Debian،OpenSUSE و Ubuntu تأثیرگذار است.

لینوکس

یک نقص ده ساله هسته لینوکس[۱] به نام CVE-2017-6074 توسط محقق امنیتی Andrey Konovalov در پیاده‌سازی(۱)DCCP با استفاده از ابزار Syzkaller که نوعی ابزار fuzzing هسته است که توسط گوگل ارائه شده است[۲]، کشف شد.

این آسیب‌پذیری نوعی نقص use-after-free در روشی است که هسته لینوکس با نام پیاده‌سازی پروتکل DCCP منابع SKB(2) را برای بسته DCCP_PKT_REQUEST آزاد می‌کند و این در هنگامی است که گزینه IPV6_RECVPKTINFO بر روی سوکت مربوطه تنظیم شده باشد.

آسیب‌پذیری DCCP double-free می‌تواند به یک کاربر محلی غیرمجاز اجازه دهد تا حافظه هسته لینوکس را تغییر دهد و سیستم مورد نظر را برای رخ دادن حمله DoS که منجر به crash شدن سیستم می‌شود، آماده می‌کند. همچنین این آسیب‌پذیری می‌تواند منجر به افزایش سطح دسترسی کاربر غیرمجاز شده و به این کاربر اجازه دسترسی کامل و در سطح مدیریتی را به سیستم مورد نظر می‌دهد.

در ارتباط با افشای کامل این آسیب‌پذیری آمده است[۳]: “مهاجم می‌تواند موضوع را کنترل کند که چه چیزی باشد و محتویات آن را توسط داده‌های دلخواه توسط استفاده از روش‌هایkernel heap spraying  مجدداً بنویسد. اگر موضوعِ مجدداً نوشته شده دارای شاخص‌های تابع مورد هدف باشد، مهاجم می‌تواند از آن استفاده کرده تا کد دلخواه خود را در داخل هسته اجرا کند.”

DCCP در حقیقت یک پروتکل لایه انتقال بر پایه پیام است که اندازه بالاسریِ سرآیندِ بسته(۳) مورد نظر و یا فرآیند end-node را تا جای ممکن به حداقل می‌رساند و پیاده‌سازی، نگهداری و تخریب یک جریان بسته غیرقابل‌اعتماد و همچنین کنترل تراکم جریان بسته را بر عهده دارد.

این آسیب‌پذیری در مرحله اول و برای مهاجم خارجی هیچ راهی را برای ورود به سیستم شما باز نمی‌کند، چرا که این نوع آسیب‌پذیری یک آسیب‌پذیری اجرای کد از راه دور(۴) نیست و مهاجم برای بهره‌برداری از این نقص، نیاز به داشتن دسترسی به حساب کاربری محلی بر روی سیستم مورد نظر دارد.

تقریباً ۲ ماه پیش یک آسیب‌پذیری افزایش سطح دسترسی مشابه به نام CVE-2016-8655 نیز بر روی هسته لینوکس کشف شد که به سال ۲۰۱۱ باز می‌گشت و به یک کاربر محلی غیرمجاز اجازه می‌داد تا با بهره‌برداری کردن از شرایط مسابقه‌ای در پیاده‌سازی af_packet در هسته لینوکس دسترسی سطح ریشه پیدا کند[۴].

این آسیب‌پذیری هم‌اکنون در هسته mainline برطرف شده است[۵]. بنابراین، اگر شما یک کاربر حرفه‌ای لینوکس هستید این وصله را اعمال کرده و هسته را مجدداً تولید کنید، یا اینکه شما می‌توانید تا منتشر شدن به‌روزرسانی هسته جدید از طرف تولید کننده نسخه لینوکس مورد استفاده خود صبر کنید و به‌محض منتشر شدن آن را اعمال کنید.

 

منابع

[۱] https://www.suse.com/support/kb/doc?id=7018645

[۲] https://github.com/google/syzkaller

[۳] http://seclists.org/oss-sec/2017/q1/471

[۴] https://apa.aut.ac.ir/?p=1889

[۵]https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=5edabca9d4cff7f1f2b68f0bac55ef99d9798ba4

[۶] http://thehackernews.com/2017/02/linux-kernel-local-root.html


(۱) Datagram Congestion Control Protocol
(۲) socket buffer
(۳) overhead of packet header size
(۴) remote code execution (RCE)