یسنجا یک سوال دیگه پیش میاد
اصلا میتونه وارد سیستم بشه که از این اسیب پزیری استفاده کنه ؟
بالا گفتند، توی سیستمهای چند کاربره میتونه خیلی مشکل ساز بشه.
ممکن هم هست شما خودتون یه فایل اجرایی دانلود کنید که از این آسیبپذیری بهره میبره. مثلا ممکنه یه اسکریپت که توی اینترنت پیدا کردید رو بدون بررسی محتویاتش روی سیستم اجرا کنید و اون اسکریپت، یه فایل مخرب که قابلیت استفاده از این آسیبپذیری رو داره دریافت و اجرا کنه، بدون اینکه شما متوجه بشید. بعد هم دسترسی روت بدست بیاره و کارهایی که میخواهد رو انجام بده.
*آسیب پذیری
این مسیری که میفرماید کلا دسترسی نداره که بخواد به ۷۵۵ تغییر بده تغریبا همه فایل ها مال کاربر روت است
میتونید برید به ایم مسیر و ببینید
اصولا اون دایرکتوری و همه محتویات داخلش تحت مالکیت کاربر روت هستند تا هر کاربری نتونه اونها رو تغییر بده. اون دستوری که اونجا داده هم باید با دسترسی روت اجرا بشه تا کار کنه.
اون دستور، همه بیتهای setuid، setgid و sticky bit رو غیرفعال میکنه. setuid فایل pkexec فعال هست تا بتونه برنامهها رو با دسترسی روت یا هر دسترسی دیگهای که لازمه، اجرا کنه. اون دستور باعث میشه بیت setuid غیرفعال بشه و در نتیجه pkexec نتونه برنامهها رو با دسترسی دیگهای اجرا کنه. احتمالا بعد از اینکار با هر بار استفاده از polkit، کاربر یه خطا مشاهده میکنه.
در ضمن دستور chmod 755 روی اون بیتهایی که بالا گفتم، تاثیر نداره. حتما باید اون 0 اولش هم باشه تا اون بیتها رو غیرفعال کنه.
عدد مربوط به sticky bit برابر 1 هست، setgid برابر 2 و setuid برابر 4.
با این فرضها، دسترسی پیشفرض فایل pkexec باید برابر 4755 باشه.
البته به نظرم استفاده از نمادها برای برداشتن، setuid، راه بهتری هست. چون اینجوری احتمال خطا کمتر میشه چون لازم نیست عددی وارد بشه. اینجوری
chmod u-s /usr/bin/pkexec
بیت setuid برای این هست که یه برنامه، با دسترسی مالکش اجرا بشه. توی مورد pkexec، مالک روت هست و در نتیجه pkexec با دسترسی روت اجرا میشه. چون pkexec با دسترسی روت اجرا میشده، میتونسته بعدا برنامه مورد نظر رو با یه دسترسی پایینتر اجرا کنه؛ اگه لازم میشده.
*تقریبا
همین بوده درسته؟
Start-Date: 2022-01-30 19:56:06
Commandline: apt upgrade
Requested-By: aminavy (1000)
Install: linux-image-5.10.0-11-amd64:amd64 (5.10.92-1, automatic)
Upgrade: libpolkit-gobject-elogind-1-0:amd64 (0.105-31+devuan1, 0.105-31+devuan2), libpolkit-agent-1-0:amd64 (0.105-31+devuan1, 0.105-31+devuan2), gir1.2-javascriptcoregtk-4.0:amd64 (2.34.3-1~deb11u1, 2.34.4-1~deb11u1), gir1.2-webkit2-4.0:amd64 (2.34.3-1~deb11u1, 2.34.4-1~deb11u1), linux-image-amd64:amd64 (5.10.84-1, 5.10.92-1), libnss3:amd64 (2:3.61-1+deb11u1, 2:3.61-1+deb11u2), libpolkit-gobject-1-0:amd64 (0.105-31+devuan1, 0.105-31+devuan2), gir1.2-polkit-1.0:amd64 (0.105-31+devuan1, 0.105-31+devuan2), libjavascriptcoregtk-4.0-18:amd64 (2.34.3-1~deb11u1, 2.34.4-1~deb11u1), python3-pil:amd64 (8.1.2+dfsg-0.3, 8.1.2+dfsg-0.3+deb11u1), libwebkit2gtk-4.0-37:amd64 (2.34.3-1~deb11u1, 2.34.4-1~deb11u1), policykit-1:amd64 (0.105-31+devuan1, 0.105-31+devuan2), linux-libc-dev:amd64 (5.10.84-1, 5.10.92-1)
End-Date: 2022-01-30 19:57:34
آره فکر کنم خودشه. البته همراه اون، چیزهای دیگهای هم ارتقا پیدا کردند که ربط خاصی به polkit ندارند. مثل کرنل.