محققان امنیتی مایکروسافت دو آسیبپذیری (CVE-2022-29799، CVE-2022-29800) را در سرویس توزیعکننده شبکه با نام رمز Nimbuspwn شناسایی کردهاند که به کاربر غیرمجاز اجازه میدهد دستورات دلخواه را با امتیازات ریشه اجرا کند. مشکل در انتشار شبکه توزیع کننده 2.2 برطرف شده است. هنوز هیچ اطلاعاتی در مورد انتشار به روز رسانی ها توسط توزیع ها (Debian، RHEL، Fedora، SUSE، Ubuntu، Arch Linux) وجود ندارد.
Networkd-dispatcher در بسیاری از توزیعهای لینوکس از جمله اوبونتو استفاده میشود که از فرآیند پسزمینه systemd-networkd برای پیکربندی پارامترهای شبکه استفاده میکند و عملکردهایی مشابه NetworkManager-dispatcher را انجام میدهد. هنگامی که وضعیت اتصال شبکه تغییر می کند، درگیر راه اندازی اسکریپت ها است، به عنوان مثال، پس از برقراری اتصال شبکه اصلی برای راه اندازی VPN استفاده می شود.
فرآیند پسزمینه مرتبط با توزیعکننده شبکه بهعنوان ریشه اجرا میشود و سیگنالهای رویداد را از طریق D-Bus دریافت میکند. اطلاعات مربوط به رویدادهای مربوط به تغییرات در وضعیت اتصالات شبکه توسط سرویس systemd-networkd ارسال می شود. مشکل این است که کاربران غیرمجاز میتوانند یک رویداد حالت غیرمجاز ایجاد کنند و اسکریپت خود را به عنوان root اجرا کنند.
Systemd-networkd برای اجرای فقط اسکریپت های کنترل کننده سیستم واقع در دایرکتوری /etc/networkd-dispatcher طراحی شده است که برای جایگزینی کاربر قابل دسترسی نیست، اما به دلیل یک آسیب پذیری (CVE-2022-29799) در کد پردازش مسیر فایل، یک امکان دایرکتوری پایه خارج از محدوده و راه اندازی اسکریپت های دلخواه. به ویژه، هنگام تشکیل مسیر فایل به اسکریپت، از مقادیر OperationalState و AdministrativeState که از طریق D-Bus منتقل می شوند، استفاده می شود که در آن کاراکترهای ویژه پاک نمی شوند. مهاجم می تواند حالت خود را ایجاد کند که نام آن شامل کاراکترهای "../" است و تماس توزیع کننده شبکه را به دایرکتوری دیگری هدایت کند.
آسیبپذیری دوم (CVE-2022-29800) مربوط به شرایط مسابقه است - بین بررسی پارامترهای اسکریپت (متعلق به ریشه) و اجرای آن، مدت زمان کوتاهی وجود داشت که برای جایگزینی فایل و دور زدن بررسی اینکه آیا اسکریپت متعلق به کاربر ریشه است. علاوه بر این، توزیع کننده شبکه پیوندهای نمادین را بررسی نکرد، از جمله هنگام اجرای اسکریپت ها از طریق فرآیند فرعی. فراخوانی Popen، که به طور قابل توجهی سازماندهی حمله را ساده کرد.
تکنیک عملیاتی:
- یک دایرکتوری "/tmp/nimbuspwn" و یک پیوند نمادین "/tmp/nimbuspwn/poc.d" ایجاد می شود که به دایرکتوری "/sbin" اشاره می کند، که برای بررسی فایل های اجرایی متعلق به root استفاده می شود.
- برای فایل های اجرایی از “/sbin”، فایل هایی با همین نام در فهرست “/tmp/nimbuspwn” ایجاد می شوند، به عنوان مثال، برای فایل “/sbin/vgs” یک فایل اجرایی “/tmp/nimbuspwn/vgs” است. ایجاد شده، متعلق به یک کاربر غیرمجاز، که کدی که مهاجم می خواهد اجرا کند در آن قرار می گیرد.
- یک سیگنال از طریق D-Bus به فرآیند توزیع کننده شبکه ارسال می شود که مقدار "../../../tmp/nimbuspwn/poc" را در OperationalState نشان می دهد. برای ارسال یک سیگنال در فضای نام "org.freedesktop.network1"، از قابلیت اتصال هندلرهای آن به systemd-networkd استفاده شد، به عنوان مثال، از طریق دستکاری با gpgv یا epmd، یا می توانید از این واقعیت استفاده کنید که systemd-networkd به طور پیش فرض اجرا نمی شود (مثلاً در لینوکس مینت).
- پس از دریافت سیگنال، Networkd-dispatcher فهرستی از فایلهای اجرایی که متعلق به کاربر اصلی است و در دایرکتوری "/etc/networkd-dispatcher/../../../tmp/nimbuspwn/poc.d" موجود است، می سازد. که در واقع به "/sbin" پیوند دارد.
- در لحظهای که لیست فایلها دریافت میشود، اما اسکریپت هنوز راهاندازی نشده است، پیوند نمادین از «/tmp/nimbuspwn/poc.d» به «/tmp/nimbuspwn» هدایت میشود و توزیعکننده شبکه، فایل را راهاندازی میکند. اسکریپت میزبان مهاجم با حقوق ریشه است.
منبع: opennet.ru