یک آسیبپذیری (CVE-2021-3560) در مؤلفه Polkit شناسایی شده است، که در توزیعها استفاده میشود تا به کاربران غیرمجاز اجازه دهد تا اقداماتی را انجام دهند که به حقوق دسترسی بالا نیاز دارد (به عنوان مثال، نصب درایو USB)، که به کاربر محلی اجازه میدهد تا به دست آوردن حقوق ریشه در سیستم. این آسیب پذیری در Polkit نسخه 0.119 رفع شده است.
این مشکل از زمان انتشار 0.113 وجود داشته است، اما بسیاری از توزیعها، از جمله RHEL، Ubuntu، Debian و SUSE، عملکرد آسیبدیده را در بستههای مبتنی بر نسخههای قدیمیتر Polkit پسپورت کردهاند (اصلاحات بسته در حال حاضر در توزیعها موجود است).
مشکل خود را در تابع polkit_system_bus_name_get_creds_sync() نشان میدهد که شناسههای (uid و pid) فرآیند درخواست افزایش امتیاز را به دست میآورد. یک فرآیند توسط Polkit با اختصاص یک نام منحصر به فرد در DBus شناسایی می شود که سپس برای تأیید امتیازات استفاده می شود. اگر درست قبل از شروع کنترلکننده polkit_system_bus_name_get_creds_sync، یک فرآیند از dbus-daemon قطع شود، کنترلکننده بهجای نام منحصربهفرد یک کد خطا دریافت میکند.
این آسیب پذیری ناشی از این واقعیت است که کد خطای برگشتی به درستی پردازش نشده است و تابع polkit_system_bus_name_get_creds_sync() TRUE را به جای FALSE برمی گرداند، با وجود اینکه نمی تواند فرآیند را با uid/pid مطابقت دهد و امتیازات درخواست شده برای فرآیند را تأیید کند. کدی که تابع polkit_system_bus_name_get_creds_sync() از آن فراخوانی شد، فرض میکند که بررسی موفقیتآمیز بوده و درخواست افزایش امتیازات از ریشه بوده است نه از یک کاربر غیرمجاز، که انجام اقدامات ممتاز را بدون احراز هویت اضافی و تأیید اعتبار ممکن میسازد.
منبع: opennet.ru