آسیب پذیری ریشه در جعبه ابزار مدیریت بسته اسنپ

Qualys سومین آسیب پذیری خطرناک امسال (CVE-2022-3328) را در ابزار snap-confine شناسایی کرده است که با پرچم ریشه SUID ارائه می شود و توسط فرآیند snapd برای ایجاد یک محیط اجرایی برای برنامه های کاربردی توزیع شده در بسته های مستقل فراخوانی می شود. در قالب اسنپ این آسیب‌پذیری به کاربر محلی غیرمجاز اجازه می‌دهد تا به اجرای کد به‌عنوان ریشه در پیکربندی پیش‌فرض اوبونتو دست یابد. این مشکل در نسخه snapd 2.57.6 رفع شده است. به روز رسانی بسته برای تمام شاخه های پشتیبانی شده اوبونتو منتشر شده است.

نکته جالب این است که آسیب‌پذیری مورد بحث در طی فرآیند رفع آسیب‌پذیری مشابه فوریه در snap-confine معرفی شد. محققان توانستند یک اکسپلویت کاری آماده کنند که دسترسی ریشه به سرور اوبونتو 22.04 را فراهم می کند، که علاوه بر آسیب پذیری در snap-confine، شامل دو آسیب پذیری در فرآیند چند مسیری نیز می شود (CVE-2022-41974، CVE-2022-41973). ، همراه با دور زدن کنترل اقتدار هنگام انتقال دستورات ممتاز و کار ناایمن با پیوندهای نمادین.

آسیب‌پذیری در snap-confine ناشی از شرایط مسابقه در تابع must_mkdir_and_open_with_perms() است که برای محافظت در برابر جایگزینی دایرکتوری /tmp/snap.$SNAP_NAME با یک پیوند نمادین پس از بررسی مالک، اما قبل از فراخوانی سیستم mount اضافه شده است. فراخوانی کنید تا دایرکتوری ها را برای یک بسته در قالب snap به آن متصل کنید. حفاظت اضافه شده تغییر نام دایرکتوری /tmp/snap.$SNAP_NAME به دایرکتوری دیگری در /tmp با نام تصادفی در صورتی بود که وجود داشته باشد و متعلق به root نباشد.

هنگام بهره برداری از عملیات تغییر نام دایرکتوری /tmp/snap.$SNAP_NAME، محققان از این واقعیت استفاده کردند که snap-confine همچنین یک فهرست /tmp/snap.rootfs_XXXXXX برای ریشه محتویات بسته snap ایجاد می کند. بخش "XXXXXX" از نام به طور تصادفی توسط mkdtemp انتخاب می شود، اما بسته ای به نام "rootfs_XXXXXX" را می توان در تابع sc_instance_name_validate تایید کرد (یعنی ایده این است که $SNAP_NAME روی "rootfs_XXXXXX" تنظیم شود و سپس عملیات تغییر نام انجام شود. منجر به بازنویسی دایرکتوری /tmp/snap.rootfs_XXXXXX با root snap می شود.

به منظور دستیابی به استفاده همزمان از /tmp/snap.rootfs_XXXXXX و تغییر نام /tmp/snap.$SNAP_NAME، دو نمونه از snap-confine راه اندازی شد. هنگامی که نمونه اول /tmp/snap.rootfs_XXXXXX را ایجاد کرد، فرآیند مسدود می شود و نمونه دوم با نام بسته rootfs_XXXXXX شروع می شود و باعث می شود فهرست موقت نمونه دوم /tmp/snap.$SNAP_NAME به فهرست اصلی /tmp/snap تبدیل شود. .rootfs_XXXXXX از اولین. بلافاصله پس از تکمیل تغییر نام، نمونه دوم از کار افتاد و /tmp/snap.rootfs_XXXXXX با دستکاری شرایط مسابقه جایگزین شد، مانند زمانی که از آسیب‌پذیری فوریه استفاده می‌کردیم. پس از تعویض، قفل اجرا از اولین نمونه حذف شد و مهاجمان کنترل کاملی بر دایرکتوری ریشه اسنپ به دست آوردند.

آخرین مرحله ایجاد یک پیوند /tmp/snap.rootfs_XXXXXX/tmp بود که توسط تابع sc_bootstrap_mount_namespace() برای اتصال-mount دایرکتوری واقعی قابل نوشتن /tmp به هر دایرکتوری در سیستم فایل استفاده شد، زیرا mount() فراخوانی کرد. قبل از نصب، پیوندهای نمادین را دنبال می کند. چنین نصبی توسط محدودیت‌های AppArmor مسدود می‌شود، اما برای دور زدن این بلوک، این اکسپلویت از دو آسیب‌پذیری کمکی در چند مسیری استفاده کرد.

منبع: opennet.ru

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