تم اكتشاف حزمة ضارة من RustDecimal في صناديق مستودع Rust.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 من الخادم الخارجي. يدعم المعالج الخبيث القابل للتنزيل العمل على Linux وmacOS (لم يكن نظام Windows الأساسي مدعومًا).

وكان من المفترض أن يتم تنفيذ الوظيفة الضارة أثناء الاختبار على أنظمة التكامل المستمر. بعد حظر RustDecimal، قام مسؤولو crates.io بتحليل محتويات المستودع بحثًا عن إدخالات ضارة مماثلة، لكنهم لم يحددوا المشكلات في الحزم الأخرى. يُنصح أصحاب أنظمة التكامل المستمر المستندة إلى منصة GitLab بالتأكد من أن المشاريع التي تم اختبارها على خوادمهم لا تستخدم حزمة الصدأ العشري في تبعياتهم.

المصدر: opennet.ru

إضافة تعليق