آسیب‌پذیری‌ها در مدیر بسته Cargo مورد استفاده برای پروژه‌های Rust

دو آسیب‌پذیری در مدیریت بسته Cargo، که برای مدیریت بسته‌ها و ساخت پروژه‌های Rust استفاده می‌شود، کشف شده است. این آسیب‌پذیری‌ها می‌توانند با دانلود بسته‌های ساخته‌شده‌ی خاص از مخازن شخص ثالث مورد سوءاستفاده قرار گیرند (گفته می‌شود کاربران مخزن رسمی crates.io تحت تأثیر قرار نگرفته‌اند). آسیب‌پذیری اول (CVE-2022-36113) اجازه می‌دهد دو بایت اول هر فایلی، منوط به مجوزهای فعلی، رونویسی شود. آسیب‌پذیری دوم (CVE-2022-36114) می‌تواند برای خالی کردن فضای دیسک مورد سوءاستفاده قرار گیرد.

این آسیب‌پذیری‌ها در انتشار Rust 1.64 که برای ۲۲ سپتامبر برنامه‌ریزی شده است، برطرف خواهند شد. این آسیب‌پذیری‌ها به عنوان آسیب‌پذیری‌های با شدت کم رتبه‌بندی شده‌اند، زیرا آسیب‌های مشابهی می‌توانند با استفاده از بسته‌های تأیید نشده از مخازن شخص ثالث با استفاده از قابلیت داخلی اجرای هندلرها از اسکریپت‌های ساخت یا ماکروهای رویه‌ای ارائه شده توسط بسته ایجاد شوند. با این حال، موارد فوق‌الذکر از این نظر متمایز هستند که در طول مرحله گسترش بسته پس از بارگیری (بدون ساخت) مورد سوءاستفاده قرار می‌گیرند.

به طور خاص، پس از دانلود یک بسته، cargo محتویات آن را در دایرکتوری ~/.cargo باز می‌کند و یک پرچم باز کردن موفقیت‌آمیز را در فایل .cargo-ok ذخیره می‌کند. اولین آسیب‌پذیری این است که سازنده بسته می‌تواند یک لینک نمادین به نام .cargo-ok را درون بسته قرار دهد که باعث می‌شود متن "ok" در فایلی که لینک به آن اشاره می‌کند، نوشته شود.

آسیب‌پذیری دوم ناشی از عدم وجود محدودیت اندازه برای داده‌های استخراج‌شده از بایگانی است که می‌تواند برای ایجاد «بمب‌های فشرده» مورد استفاده قرار گیرد (بایگانی می‌تواند حاوی داده‌هایی باشد که می‌توانند به حداکثر نسبت فشرده‌سازی برای فرمت zip برسند - تقریباً ۲۸ میلیون بار؛ در این مورد، برای مثال، یک فایل فشرده ویژه با حجم ۱۰ مگابایت منجر به باز شدن تقریباً ۲۸۱ ترابایت داده می‌شود).

منبع: opennet.ru