هشدار! کاربران غیرمجاز لینوکس با استفاده از UID> INT_MAX می‌توانند هر دستوری را اجرا کنند

شاید با شنیدن این خبر مغزتان سوت بکشد!!!

به لطف یک آسیب‌پذیری جدید در لینوکس، کاربری با سطح دسترسی خیلی پایین می‌تواند با استفاده از UID بزرگتر از INT_MAX هر دستور systemctl  را با موفقیت اجرا کند.

آسیب‌پذیری گزارش شده با شناسه CVE-2018-19788، مربوط به پالیسی کیت (PolicyKit) نسخه ۰.۱۱۵ می‌باشد که در اکثر توزیع‌های محبوب لینوکس مانند Red Hat، Debian، Ubuntu و CentOS به صورت پیش‌فرض نصب گردیده است. PolicyKit ‪(polkit)‬ در واقع یک ابزار کاربردی برای سیستم‌عامل‌های یونیکسی است که سیاست‌ها را تعریف می‌کند، حق دسترسی‌ها را مدیریت می‌کند و نیز شیوه‌ای را برای برقراری ارتباط فرآیندهای غیرمجاز با فرآیندهای مجاز ارائه می‌نماید، مانند "sudo" که اجازه دسترسی root را به کل فرآیند نمی‌دهد.

این آسیب‌پذیری به دلیل نامعتبر بودن درخواست مجوزهای کاربرانی که دارای حق دسترسی پایین با  UID بزرگتر از  INT_MAX می‌باشند، به وجود آمده است.
INT_MAX یک مقدار ثابت در برنامه‌نویسی است که حداکثر مقداری که یک متغیر صحیح (integer) می‌تواند ذخیره کند را تعریف می‌کند، این مقدار برابر ۲۱۴۷۴۸۳۶۴۷ (۰x7FFFFFFF در مبنای هگزادسیمال) می‌باشد.

این به این معنی است که اگر شما یک حساب کاربری در سیستم‌های لینوکسی با مقدار UID بزرگتر از مقدار INT_MAX ایجاد کنید، PolicyKit امکان اجرای موفقیت‌آمیز تمامی دستورات systemctl را برای شما فراهم می‌آورد.

کمپانی Red Hat به منظور کاهش خطرات ناشی از این مشکل به مدیران سیستم‌ها توصیه می‌کند که تا زمان انتشار وصله امنیتی به هیچ عنوان اجازه ایجاد UIDهای منفی یا بزرگتر از ۲۱۴۷۴۸۳۶۴۶ را ندهند.

 

منبع خبر: https://thehackernews.com/2018/12/linux-user-privilege-policykit.html