یک آسیبپذیری (CVE-2022-37706) در محیط کاربری Enlightenment شناسایی شده است که به کاربر محلی غیرمجاز اجازه میدهد تا کد با حقوق ریشه را اجرا کند. این آسیب پذیری هنوز برطرف نشده است (0 روز)، اما در حال حاضر یک سوء استفاده در دامنه عمومی موجود است که در اوبونتو 22.04 آزمایش شده است.
مشکل در فایل اجرایی enlightenment_sys است که با پرچم ریشه suid ارسال می شود و دستورات مجاز خاصی مانند نصب درایو با ابزار mount را از طریق فراخوانی به system() انجام می دهد. به دلیل عملکرد نادرست تابعی که رشته ارسال شده به فراخوانی system() را تولید میکند، نقل قولها از آرگومانهای فرمان در حال راهاندازی بریده میشوند که میتوان از آن برای اجرای کد خود استفاده کرد. به عنوان مثال، هنگام اجرای mkdir -p /tmp/net mkdir -p "/tmp/;/tmp/exploit" echo "/bin/sh" > /tmp/exploit chmod a+x /tmp/exploit enlightenment_sys /bin/mount - o noexec,nosuid,utf8,nodev,iocharset=utf8,utf8=0,utf8=1,uid=$(id -u)، "/dev/../tmp/;/tmp/exploit" /tmp// / خالص
به دلیل حذف دو گیومه، به جای دستور مشخص شده '/bin/mount ... "/dev/../tmp/;/tmp/exploit" /tmp///net' یک رشته بدون گیومه دوتایی خواهد بود. به تابع system() ' /bin/mount … /dev/../tmp/;/tmp/exploit /tmp///net' منتقل می شود، که دستور '/tmp/exploit /tmp///net را ایجاد می کند. به جای پردازش به عنوان بخشی از مسیر دستگاه، به طور جداگانه اجرا شود. خطوط "/dev/../tmp/" و "/tmp///net" برای عبور از بررسی آرگومان برای دستور mount در enlightenment_sys انتخاب می شوند (دستگاه mount باید با /dev/ شروع شود و به یک فایل موجود اشاره کند، و سه کاراکتر "/" در نقطه نصب برای دستیابی به اندازه مسیر مورد نیاز مشخص شده است).
منبع: opennet.ru