#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
یه چند روز پیش یه خبری در مورد مشکل 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
Unix & Linux Stack Exchange
Difference between sudo user and root user
The /etc/sudoers file lists which users can do what with the sudo command
The root user creates and modifies the /etc/sudoers file.
This concept is difficult for me to understand.
If all users ...
The root user creates and modifies the /etc/sudoers file.
This concept is difficult for me to understand.
If all users ...