آسیب‌پذیری ریشه sudo که بر Linux Mint و Elementary OS تأثیر می‌گذارد

در ابزار کد: sudo، برای سازماندهی اجرای دستورات از طرف دیگر کاربران استفاده می شود، شناخته شده است آسیب پذیری (CVE-2019-18634) که به شما امکان می دهد امتیازات خود را در سیستم به کاربر اصلی افزایش دهید. این مشکل تنها از زمان انتشار sudo 1.7.1 هنگام استفاده از گزینه "pwfeedback" در فایل /etc/sudoers ظاهر می شود که به طور پیش فرض غیرفعال است اما در برخی از توزیع ها مانند Linux Mint و Elementary OS فعال است. مشکل در انتشار رفع شد سودو 1.8.31، ساعاتی پیش منتشر شد. این آسیب‌پذیری در کیت‌های توزیع برطرف نشده است.

گزینه "pwfeedback" نمایش کاراکتر "*" را پس از هر کاراکتر وارد شده هنگام وارد کردن رمز عبور فعال می کند. به خاطر اینکه خطاها در اجرای تابع getln() که در فایل tgetpass.c تعریف شده است، یک رشته رمز عبور بیش از حد بزرگ که از طریق جریان ورودی استاندارد (stdin) تحت شرایط خاص منتقل می‌شود، ممکن است در بافر اختصاص‌یافته قرار نگیرد و داده‌های دیگر را روی پشته بازنویسی کند. سرریز زمانی اتفاق می افتد که کد sudo را به عنوان ریشه اجرا می کنیم.

ماهیت مشکل این است که هنگام استفاده از کاراکتر ویژه ^U (پاک کردن خط) در حین ورودی و اگر عملیات نوشتن ناموفق باشد، کد مسئول پاک کردن کاراکترهای خروجی "*" داده ها را در اندازه بافر موجود بازنشانی می کند، اما این کار را انجام نمی دهد. نشانگر را به موقعیت فعلی مقدار اولیه در بافر برگردانید. یکی دیگر از عوامل موثر در بهره برداری، عدم غیرفعال کردن خودکار حالت "pwfeedback" زمانی است که داده ها نه از ترمینال، بلکه از طریق جریان ورودی می رسند (این نقص اجازه می دهد تا شرایطی را برای رخ دادن خطای ضبط ایجاد کند، به عنوان مثال، در سیستم هایی با یک طرفه کانال های بی نام هنگام تلاش برای نوشتن تا انتهای کانال خوانده شده، خطایی رخ می دهد).

از آنجایی که یک مهاجم کنترل کاملی بر روی بازنویسی داده ها در پشته دارد، ایجاد یک اکسپلویت که به او اجازه می دهد امتیازات خود را به روت افزایش دهد دشوار نیست. این مشکل می تواند توسط هر کاربری، بدون توجه به مجوزهای sudo یا تنظیمات خاص کاربر در sudoers مورد سوء استفاده قرار گیرد. برای جلوگیری از این مشکل، باید مطمئن شوید که هیچ تنظیم "pwfeedback" در /etc/sudoers وجود ندارد و در صورت لزوم، آن را غیرفعال کنید ("Defaults !pwfeedback"). برای بررسی اینکه آیا مشکلی وجود دارد، می توانید کد زیر را اجرا کنید:

$ perl -e "print(("A" x 100 . "\x{00}") x 50)" | sudo -S id
رمز عبور: خطای بخش بندی

منبع: opennet.ru

اضافه کردن نظر