Polkit

یک آسیب‌پذیری تشدید امتیاز هفت‌ساله که در سرویس سیستم polkit کشف شده است می‌تواند توسط یک مهاجم محلی مخرب و غیرمجاز برای دور زدن مجوزها و افزایش سطح دسترسی به کاربر ریشه مورد بهره‌برداری قرار گیرد.

این اشکال که با عنوان CVE-2021-3560 (نمره CVSS: 7.8) نام‌گذاری شده است[۱] روی نسخه‌های polkit بین ۰٫۱۱۳ تا ۰٫۱۱۸ تأثیر می‌گذارد و توسط محقق امنیتی GitHub یعنی Kevin Backhouse کشف شد، وی گفت که این موضوع  در ابتدا در یک کد commit ساخته‌شده[۲] در ۹ نوامبر ۲۰۱۳ قرار داشته است. Red Hat’s Cedric Buissart اشاره کرد[۳] که توزیع‌های مستقر در Debian، مبتنی بر polkit 0.105 نیز آسیب‌پذیر هستند.

Polkit (née PolicyKit) مجموعه‌ای برای تعریف و مدیریت مجوزها در توزیع‌های لینوکس است و برای ارتباط پردازش‌های غیرمجاز با فرایندهای مجاز استفاده می‌شود[۴].

Red Hat دراین‌باره گفت[۵]: “هنگامی‌که یک فرآیند درخواست دقیقاً قبل از شروع تماس با polkit_system_bus_name_get_creds_sync از dbus-daemon قطع می‌شود، روند کار نمی‌تواند یک روند منحصربه‌فرد داشته باشد و نمی‌تواند امتیازات روند درخواست را تأیید کند. بالاترین تهدید این آسیب‌پذیری، محرمانه بودن و یکپارچگی داده‌ها و همچنین در دسترس بودن سیستم است.”

RHEL 8 ، Fedora 21 (یا بالاتر)، Debian Bullseye و اوبونتو ۲۰٫۰۴ برخی از توزیع‌های محبوب لینوکس هستند که تحت تأثیر آسیب‌پذیری polkit قرار دارند. این مسئله در نسخه ۰٫۱۱۹ که در ۳ ژوئن ۲۰۲۱ منتشر شد، برطرف شده است[۶].

Polkit

Backhouse در مقاله‌ای که در تاریخ ۱۰ ژوئن منتشر شد، در این مورد گفت: “این آسیب‌پذیری به طرز شگفت‌انگیزی قابل بهره‌برداری است. تمام آنچه لازم است فقط چند دستور در ترمینال است که فقط از ابزارهای استاندارد مانند bash ، kill و dbus-send استفاده می‌کند[۷-۹]. برای مثال ارسال یک دستور dbus-send (مثلاً برای ایجاد کاربر جدید) اما خاتمه دادن به فرآیند درحالی‌که polkit هنوز در اواسط پردازش درخواست است.”

“dbus-send” یک مکانیسم ارتباط بین پردازشی لینوکس (IPC) است که برای ارسال پیام به گذرگاه پیام D-Bus استفاده می‌شود[۱۰] و امکان برقراری ارتباط بین چندین فرآیند را به‌طور هم‌زمان روی یک ماشین فراهم می‌کند. Daemon سیاست مجوز Polkit به‌عنوان سرویس متصل به گذرگاه سیستم برای احراز هویت ایمن اعتبارنامه‌ها اجرا می‌شود[۱۱].

در کشتن یک دستور، این امر باعث دوز زدن احراز هویت می‌شود زیرا polkit پیام خاتمه یافته را اشتباه مدیریت می‌کند و با درخواست برخورد می‌کند گویا از روندی با امتیازات ریشه (UID 0) آمده است[۱۲]، درنتیجه بلافاصله درخواست را تأیید می‌کند.

Backhouse دراین‌باره گفت: “برای ایجاد مسیر کد آسیب‌پذیر، باید در لحظه مناسب اتصال خود را قطع کنید و ازآنجاکه چندین فرآیند درگیر است، زمان آن” لحظه مناسب” از یک اجرا به مرحله دیگر متفاوت است. به همین دلیل معمولاً چند تلاش طول می‌کشد تا بهره‌برداری موفقیت‌آمیز باشد. حدس می‌زنم دلیل اینکه این اشکال قبلاً کشف نشده باشد نیز همین است. “

به کاربران توصیه می‌شود هرچه سریع‌تر لینوکس خود را به‌روز کنند تا خطرات احتمالی ناشی از این نقص را برطرف کنند.

منابع

[۱] https://github.blog/2021-06-10-privilege-escalation-polkit-root-on-linux-with-bug

[۲] https://gitlab.freedesktop.org/polkit/polkit/-/commit/bfa5036bfb93582c5a87c44b847957479d911e38

[۳] https://seclists.org/oss-sec/2021/q2/180

[۴] https://en.wikipedia.org/wiki/Polkit

[۵] https://access.redhat.com/security/cve/CVE-2021-3560

[۶] https://www.freedesktop.org/software/polkit/releases

[۷] https://linux.die.net/man/1/bash

[۸] https://linux.die.net/man/2/kill

[۹] https://linux.die.net/man/1/dbus-send

[۱۰] https://en.wikipedia.org/wiki/D-Bus

[۱۱] https://www.freedesktop.org/software/polkit/docs/latest/polkit.8.html

[۱۲] https://en.wikipedia.org/wiki/User_identifier

[۱۳] https://thehackernews.com/2021/06/7-year-old-polkit-flaw-lets.html