في التبعيات لحزمة npm مع مثبت PureScript الكود الضار الذي يظهر عند محاولة تثبيت الحزمة . الكود الخبيث المضمن من خلال التبعيات и . من الجدير بالذكر أن الحزم التي تحتوي على هذه التبعيات يتم صيانتها من قبل المؤلف الأصلي لحزمة npm مع برنامج التثبيت PureScript، والذي كان حتى وقت قريب يحافظ على حزمة npm هذه، ولكن منذ حوالي شهر تم نقل الحزمة إلى صيانين آخرين.
تم اكتشاف المشكلة بواسطة أحد صياني الحزمة الجدد، والذي تم تسليمه حقوق الصيانة بعد العديد من الخلافات والمناقشات غير السارة مع المؤلف الأصلي لحزمة npm purescript. يعتبر المطورون الجدد مسؤولين عن مُجمِّع PureScript وأصروا على أن يتم صيانة حزمة NPM ومُثبِّتها بواسطة نفس المطورين، وليس بواسطة شخص خارجي. لم يوافق مؤلف حزمة npm مع برنامج التثبيت PureScript لفترة طويلة، لكنه استسلم بعد ذلك ونقل الوصول إلى المستودع. ومع ذلك، ظلت بعض التبعيات تحت سيطرته.
في الأسبوع الماضي، تم إصدار مُجمِّع PureScript 0.13.2 و
قام المطورون الجدد بإعداد تحديث مماثل لحزمة npm باستخدام المثبت، والذي تم العثور على تعليمات برمجية ضارة في التبعيات الخاصة به. ادعى المشرف المطرود على حزمة npm التي تحتوي على مثبت PureScript أن حسابه تعرض للاختراق من قبل مهاجمين مجهولين. ومع ذلك، في شكله الحالي، كانت أفعال الكود الخبيث تقتصر على تخريب تثبيت الحزمة، والتي أصبحت الإصدار الأول من المطورين الجدد. تتكون الإجراءات الخبيثة من حلقة بها خطأ تم إخراجه عند محاولة تثبيت حزمة باستخدام الأمر "npm i -g purescript"، دون القيام بأي نشاط ضار واضح.
تم تحديد هجومين. بعد ساعات قليلة من الإصدار الرسمي للإصدار الجديد من حزمة purescript npm، قام شخص ما بإنشاء إصدار جديد من تبعية load-from-cwd-or-npm 3.0.2، وقد أدت التغييرات التي طرأت عليها إلى حقيقة أن استدعاء loadFromCwdOrNpm() بدلاً من قائمة الثنائيات المطلوبة للتثبيت أرجع تيارًا ، عكس استعلامات الإدخال كقيم إخراجية.
بعد أربعة أيام، وبعد أن تمكن المطورون من تحديد مصدر الإخفاقات وكانوا يستعدون لإصدار تحديث لاستبعاد load-from-cwd-or-npm من التبعيات، أصدر المهاجمون تحديثًا آخر load-from-cwd-or-npm 4، والذي تمت فيه إزالة التعليمات البرمجية الضارة. ومع ذلك، تم تحديث خريطة معدل التبعية الأخرى على الفور تقريبًا إلى الإصدار 3.0.4، والذي أضاف إصلاحًا أدى إلى حظر استدعاء الاسترجاع للتحميل. أولئك. في كلتا الحالتين، كانت التغييرات في الإصدارات الجديدة من load-from-cwd-or-npm وrate-map أشبه بالتخريب بشكل واضح. علاوة على ذلك، احتوى الكود الخبيث على فحص يقوم بتنشيط إجراءات الفشل فقط عند تثبيت إصدار من صيانات جديدة ولم يظهر نفسه بأي شكل من الأشكال عند تثبيت الإصدارات الأقدم.
قام المطورون بحل المشكلة عن طريق إصدار تحديث يزيل التبعيات المسببة للمشاكل. لمنع الكود المخترق من الاستقرار على أنظمة المستخدم بعد محاولة تثبيت إصدار مشكلة من PureScript، يوصى بحذف محتويات أدلة node_modules وملفات package-lock.json، ثم تعيين الحد الأدنى إلى purescript 0.13.2.
المصدر: opennet.ru
