Sudo

یک آسیب‌پذیری در Sudo کشف شده است که یکی از مهم‌ترین، قدرتمندترین و رایج‌ترین ابزارهای مورداستفاده است که به‌عنوان یک دستور اصلی در تقریباً تمام سیستم‌عامل‌های یونیکس و مبتنی بر لینوکس نصب می‌شود.

آسیب‌پذیری موردبحث یک مسئله دور زدن سیاست امنیتی sudo است که می‌تواند به یک کاربر موذی یا برنامه اجازه دهد دستورات دلخواه را در سطح ریشه در یک سیستم مورد هدف دارای سیستم‌عامل لینوکس اجرا کند، حتی اگر sudoers configuration صریحاً دسترسی به ریشه را محدود کرده باشد.

sudo، مخفف عبارت “superuser do” است. در حقیقت یک فرمان سیستمی است که به یک کاربر این امکان را می‌دهد برنامه‌ها یا دستورهایی را با امتیاز کاربر دیگر بدون تعویض محیط اجرا کند که اغلب اوقات برای اجرای دستورات به‌عنوان کاربر ریشه استفاده می‌شود.

به‌طور پیش‌فرض در اکثر توزیع‌های لینوکس، کلمه کلیدی ALL در مشخصات RunAs در فایل /etc/sudoers همان‌طور که در اسکرین‌شات نشان داده شده است، به همه کاربران موجود در گروه‌های ادمین یا sudo اجازه می‌دهد تا هرگونه دستور را به‌عنوان کاربر معتبر روی سیستم اجرا کنند.

بااین‌حال، ازآنجاکه جداسازی امتیاز یکی از الگوهای اساسی امنیتی در لینوکس است، مدیران می‌توانند یک پرونده sudoers را پیکربندی کنند تا مشخص شود که کاربران می‌توانند چه دستوراتی را به‌عنوان کاربر اجرا کنند.

بنابراین، حتی اگر کاربر محدود به اجرای یک دستور خاص یا هر دستور دیگری در سطح ریشه باشد، این آسیب‌پذیری می‌تواند به کاربر اجازه دهد این خط‌مشی امنیتی را دور بزند و کنترل کاملی را روی سیستم به دست آورد.

توسعه‌دهندگان sudo دراین‌باره می‌گویند[۱]: “این می‌تواند توسط کاربری با امتیازات sudo کافی باشد تا دستورات را در سطح ریشه اجرا کند، حتی اگر Runas specification صریحاً دسترسی به ریشه را محدود کرده باشد، مادامی‌که کلمه کلیدی ALL در Runas specification لیست شده باشد.”

چگونه از این اشکال بهره‌برداری کنیم؟ فقط شناسه کاربر sudo برابر با ۱- یا ۴۲۹۴۹۶۷۲۹۵

این آسیب‌پذیری که با عنوان CVE-2019-14287 شناسایی شده است و توسط Joe Vennix از امنیت اطلاعات اپل کشف شده است، نگران‌کننده‌تر است زیرا ابزار sudo به‌گونه‌ای طراحی شده است که به کاربران این امکان را می‌دهد تا با استفاده از کلمه عبور خود دستورات را در محیط یک کاربر دیگر و بدون نیاز به رمز عبور او اجرا کند.

نکته جالب‌تر این است که از یک نقص می‌توان برای مشخص کردن شناسه کاربر “۱-” یا “۴۲۹۴۹۶۷۲۹۵” توسط یک مهاجم برای اجرای دستورات به‌عنوان root استفاده کرد.

این امر به این دلیل است که عملکردی که شناسه کاربر را به نام کاربری خود تبدیل می‌کند[۲] به‌طور نادرست با ۱- یا معادل امضا نشده‌ی آن یعنی ۴۲۹۴۹۶۷۲۹۵ مانند صفر رفتار می‌کند، که همیشه شناسه کاربر ریشه است.

“علاوه بر این، با توجه به اینکه شناسه کاربری مشخص‌شده از طریق گزینه -u در پایگاه داده کلمه عبور وجود ندارد، هیچ ماژول جلسه PAM ای اجرا نمی‌شود.”

این آسیب‌پذیری روی تمامی نسخه‌های sudo قبل از آخرین نسخه منتشرشده یعنی ۱٫۸٫۲۸ که در تاریخ ۱۴ اکتبر ۲۰۱۹ منتشر شده است، تأثیر می‌گذارد. این نسخه به‌زودی به‌عنوان یک به‌روزرسانی توسط توزیع‌های مختلف لینوکس به کاربران خود انتقال داده می‌شود.

بنابراین، اگر از لینوکس استفاده می‌کنید، به شما توصیه می‌شود بسته sudo را به‌صورت دستی به آخرین نسخه به‌روزرسانی کنید.

منابع

[۱] https://www.sudo.ws/alerts/minus_1_uid.html

[۲] https://www.sudo.ws/repos/sudo/rev/83db8dba09e7

[۳] https://thehackernews.com/2019/10/linux-sudo-run-as-root-flaw.html