Qualys دو آسیبپذیری (CVE-2021-44731، CVE-2021-44730) را در ابزار snap-confine شناسایی کرده است که با پرچم ریشه SUID ارائه شده و توسط فرآیند snapd فراخوانی شده است تا یک محیط اجرایی برای برنامههای کاربردی ارائه شده در خود محفظه ایجاد کند. در قالب اسنپ این آسیبپذیریها به کاربر محلی غیرمجاز اجازه میدهد تا کدی را با امتیازات ریشه روی سیستم اجرا کند. مشکلات در به روز رسانی بسته اسنپد امروز برای اوبونتو 21.10، 20.04 و 18.04 حل شده است.
اولین آسیبپذیری (CVE-2021-44730) امکان حمله از طریق دستکاری پیوند سخت را فراهم میکند، اما نیاز به غیرفعال کردن محافظت از پیوند سخت سیستم دارد (تنظیم sysctl fs.protected_hardlinks روی 0). مشکل به دلیل تأیید نادرست محل فایل های اجرایی برنامه های کمکی snap-update-ns و snap-discard-ns است که به صورت روت اجرا می شوند. مسیر این فایلها در تابع sc_open_snapd_tool() بر اساس مسیر خودش از /proc/self/exe محاسبه شد، که به شما امکان میدهد یک پیوند سخت برای snap-confine در فهرست خود ایجاد کنید و نسخههای خود را از snap- قرار دهید. update-ns و snap- utilities در این فهرست discard-ns. پس از اجرا از طریق یک پیوند سخت، snap-confine با حقوق ریشه فایلهای snap-update-ns و snap-discard-ns را از فهرست فعلی راهاندازی میکند که توسط مهاجم جایگزین میشود.
دومین آسیبپذیری ناشی از شرایط مسابقه است و میتواند در پیکربندی پیشفرض دسکتاپ اوبونتو مورد سوء استفاده قرار گیرد. برای اینکه اکسپلویت با موفقیت در سرور اوبونتو کار کند، هنگام نصب باید یکی از بستهها را از بخش Featured Server Snaps انتخاب کنید. شرایط مسابقه در تابع setup_private_mount() که در حین آمادهسازی فضای نام نقطه اتصال برای بسته اسنپ فراخوانی شده است مشهود است. این تابع یک دایرکتوری موقت "/tmp/snap.$SNAP_NAME/tmp" ایجاد می کند یا از یک پوشه موجود برای متصل کردن دایرکتوری ها برای یک بسته snap در آن استفاده می کند.
از آنجایی که نام دایرکتوری موقت قابل پیش بینی است، مهاجم می تواند پس از بررسی مالک، اما قبل از فراخوانی سیستم mount، محتوای آن را با یک پیوند نمادین جایگزین کند. به عنوان مثال، میتوانید یک پیوند نمادین "/tmp/snap.lxd/tmp" در پوشه /tmp/snap.lxd ایجاد کنید که به یک دایرکتوری دلخواه اشاره میکند، و یک فراخوانی به mount() از symlink پیروی میکند و دایرکتوری را در فهرست قرار میدهد. فضای نام فوری به روشی مشابه، می توانید محتویات خود را در /var/lib قرار دهید و با جایگزین کردن /var/lib/snapd/mount/snap.snap-store.user-fstab، نصب دایرکتوری /etc خود را در فضای نام سازماندهی کنید. بسته snap برای سازماندهی بارگیری کتابخانه شما با حقوق ریشه با جایگزینی /etc/ld.so.preload.
خاطرنشان می شود که ایجاد یک اکسپلویت یک کار غیر ضروری است، زیرا ابزار snap-confine در Go با استفاده از تکنیک های برنامه نویسی ایمن نوشته شده است، دارای محافظت بر اساس پروفایل های AppArmor است، تماس های سیستم را بر اساس مکانیزم seccomp فیلتر می کند و از آن استفاده می کند. فضای نام کوه برای جداسازی با این حال، محققان توانستند یک اکسپلویت کاری برای به دست آوردن حقوق ریشه روی سیستم آماده کنند. کد اکسپلویت چند هفته پس از نصب آپدیت های ارائه شده توسط کاربران منتشر خواهد شد.
منبع: opennet.ru