Linux & OpenSource
1.8K subscribers
593 photos
29 videos
49 files
926 links
اینجا از علاقمندی هام پست میزارم : )
لینوکس - بلاکچین - هوش مصنوعی - تازه های تکنولوژی
و گاهی پست های غیرمرتبط
Download Telegram
#bug #Sudo

یه چند روز پیش یه خبری در مورد مشکل sudo شنیده شد که میگفت یه یوزر عادی که عضو sudoers هست میتونه دسترسی root بگیره ولی هممون با یه update و upgrade این مشکل رو خاک کردیم و دیگه در موردش بحثی نشد 😃

خب به نظرم این مشکلات امنیتی میتونه یه موضوع انگیزشی شه تا بیشتر در مورد لینوکس یاد بگیریم و ببینیم از چه ساختاری چجوری استفاده شده 😃

خب هر یوزری که بتونه sudo کنه چه رمز روت رو داشته باشه چه نداشته باشه میتونه روت شه بنابر پست قبلیم راحت ترین راه اینه دست یوزر هایرو از sudo با تغییر تنظیمات سودو دور کنیم ولی الان که پچ امنیتیش اومده باید اپدیت کرد 😃
@uselinux

شاید الان به ذهنتون بیاد که خب یوزری که sudo میکنه دیگ چه فرقی با root داره؟ و چرا اصلا sudo رو ساختن😟
واسه این بحث توصیه میکنم همین الان اینجارو بخونید 😃👇
https://unix.stackexchange.com/questions/291454/difference-between-sudo-user-and-root-user


سودو یه تابع داره به اسم get_process_ttyname که دردسر ساز شده. این تابع کارش اینه proc رو باز کنه و وضعیت پردازشارو ببینه 😃
/proc/[pid]/stat

@uselinux

که همتون قطعا میدونید pid چیه این وسط 😃 ایدی همون پروسس ماست ک میخوایم وضعیتشو ببینیم
این تابع بازش میکنه و دیوایس نامبر tty رو از فیلد هفتم میخونه
این جریان tty خودش یه مساله ی دیگست که بعدا باید در موردش حرف بزنییم ولی الان چند تا فیلد در نظر بگیرید ک این میاد فیلد ۷ ام رو میخونه

جای غم انگیز داستان اونجاست که این فیلد ها توسط space از هم جدا میشن 😃 بعد این وسط فیلد دوم که comm هست و file name دستورات داخلش قرار داره هم میتونه فضای خالی یا همون space داشته باشه😧

مثلا یه symlink در نظر بگیرید که با سودو executeش میکنیم این مدلی:
"./ 1 "
این همون filename دارای اسپیس هست که گفتم😃 وقتی اینکارو میکنیم تو 📌 مرحله ی اول
get_process_ttyname()
میاد و
sudo_ttyname_scan()
رو صدا میزنه و این تابع دنبال یه دیوایس نامبر tty با اسم "1" که وجود نداره توی search_devs میگرده 😃
بعد تو📌مرحله ی دوم
sudo_ttyname_dev()
میاد و
sudo_ttyname_scan()
رو صدا میزنه تا توی /dev پیمایش کنه و اون دیوایس نامبر یک رو پیدا کنه تو این پیمایش میرسه به
/dev/shm
این اقای shm یه فایل استوریج world writeable هست یعنی هر یوزری با هر دسترسی میتونه توش هرچی بخواد مستقیما قرار بده
@uselinux

اینجاشو دیگه خودتون میتونید حدس بزنید 😃 هکر میاد و tty یی با کاراکتر های مورد نظرش که اسپیس هم داره قرار میده و نظم اون فیلد هارو به هم میریزه و دیوایس نامبر و اسم فایل های متفاوتی رو تو پروسس ها ایجاد میکنه

اینطوری نرم افزار sudo دیگه دسترسی محدود روت رو روی یوزر ها نداره 😃 و یوزر میتونه هرچیزی که هست overwrite و یا ایجاد کنه حتی تنظیمات sudoers رو تغییر بده و لاگ های یوزریشو از sudo پاک کنه و کلی خرابکاری های دیگه😃


@uselinux