بسته مخرب rustdecimal در مخزن Rust crates.io شناسایی شد

توسعه دهندگان زبان Rust هشدار داده اند که یک بسته rustdecimal حاوی کد مخرب در مخزن crates.io شناسایی شده است. این بسته بر اساس بسته قانونی rust_decimal بود و با استفاده از شباهت در نام (typesquatting) با این انتظار توزیع شد که کاربر هنگام جستجو یا انتخاب یک ماژول از یک لیست متوجه عدم وجود خط زیر نشود.

قابل ذکر است که این استراتژی موفق بوده و از نظر تعداد دانلود، بسته ساختگی فقط اندکی از نسخه اصلی عقب تر بود (~111 هزار دانلود rustdecimal 1.23.1 و 113 هزار از rust_decimal 1.23.1 اصلی) . در همان زمان، اکثر دانلودها از یک کلون بی ضرر بود که حاوی کد مخرب نبود. تغییرات مخرب در تاریخ 25 مارس در نسخه rustdecimal 1.23.5 اضافه شد که قبل از شناسایی مشکل و مسدود شدن بسته، حدود 500 بار دانلود شد (فرض می‌رود که بیشتر دانلودهای نسخه مخرب توسط ربات‌ها انجام شده باشد) و به عنوان وابستگی به سایر بسته‌های موجود در مخزن استفاده نمی‌شود (احتمال دارد که بسته مخرب یک وابستگی به برنامه‌های نهایی باشد).

تغییرات مخرب شامل افزودن یک تابع جدید به نام Decimal::new بود که اجرای آن حاوی کد مبهم برای دانلود از یک سرور خارجی و راه اندازی یک فایل اجرایی بود. هنگام فراخوانی تابع، متغیر محیطی GITLAB_CI بررسی شد و در صورت تنظیم، فایل /tmp/git-updater.bin از سرور خارجی دانلود شد. کنترل کننده مخرب قابل دانلود از کار بر روی لینوکس و macOS پشتیبانی می کرد (پلتفرم ویندوز پشتیبانی نمی شد).

فرض بر این بود که عملکرد مخرب در طول آزمایش بر روی سیستم های یکپارچه سازی پیوسته اجرا می شود. پس از مسدود کردن rustdecimal، مدیران crates.io محتویات مخزن را برای درج های مخرب مشابه تجزیه و تحلیل کردند، اما مشکلاتی را در بسته های دیگر شناسایی نکردند. به صاحبان سیستم‌های یکپارچه‌سازی پیوسته مبتنی بر پلتفرم GitLab توصیه می‌شود که اطمینان حاصل کنند که پروژه‌های آزمایش‌شده روی سرورهایشان از بسته rustdecimal در وابستگی‌های خود استفاده نمی‌کنند.

منبع: opennet.ru

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