خب بذار کل جریان رو برات راحت و خودمونی تعریف کنم. چند روز پیش کلی از پکیجهای پر استفادهی npm که میلیونها بار در هفته دانلود میشن، هک شدن و ازشون برای پخش بدافزار استفاده شده! داستان از اونجا شروع شد که یکی از برنامهنویسهای معروف و فعال توی حوزهی npm به اسم JounQin رو فیشینگ کردن. (اگه فیشینگ برات جدید ـه: یعنی یه نفر خودش رو جای آدم یا شرکتی جا میزنه تا اطلاعات محرمانه مثل رمز عبور رو ازت بگیره. معمولاً با یه ایمیل جعلی که خیلی طبیعی هم به نظر میاد!)
JounQin گردونندهی کلی پکیج معروف و پرکاربرده مثل eslint-config-prettier، eslint-plugin-prettier، synckit، @pkgr/core و همینطور napi-postinstall. این پکیجها واسه توسعهدهندهها خیلی مهم و ضروری هستن؛ مثلاً eslint-config-prettier و eslint-plugin-prettier بهت کمک میکنن کدت رو با ابزار Prettier و ESLint مرتب کنی. (Prettier یعنی ابزاری که خودش اتوماتیک کدتو یکدست و خوشگل میکنه. ESLint هم ابزاریه که ایرادات و اشکالات احتمالی کد جاوااسکریپت و تایپاسکریپت رو میگیره بدون اینکه نیازی باشه کدت رو اجرا کنی.)
ماجرا این بود که JounQin یه ایمیلی دریافت کرد که از طرف support@npmjs.com اومده بود (که ظاهراً جعلی بوده) و گفته بود باید اکانتش رو «احراز هویت» کنه. اونم انجام داد، و متاسفانه رمزهاش افتاد دست هکرها. به محض اینکه اکانتش رو گرفتن، چندتا نسخه مشکوک از eslint-config-prettier رو منتشر کردن: ورژنهای 8.10.1، 9.1.1، 10.1.6 و 10.1.7. نکته جالب و امیدوارکننده اینه که انجمن خیلی سریع فهمیدن یه چیزی درست نیست و JounQin رو مطلع کردن.
پشت قضیه چی بود؟ پکیجهای هکشده به محض نصب شدن، یه اسکریپت به اسم postinstall اجرا میکنن. (postinstall یعنی اسکریپتی که بعد از نصب یه پکیج اتوماتیک اجرا میشه!) این اسکریپت میاد و با کمک rundll32 (یه پروسه سیستمی ویندوز که برای اجرای فایلهای DLL ـه) یه فایل DLL آلوده رو اجرا میکنه. این فایل DLL الان خیلی جاها داره به عنوان تروجان شناسایی میشه، اما هنوز اکثر آنتیویروسها اصلاً گیرش نمیندازن. فقط 19 تا از 72 موتور آنتیویروس این DLL رو خطرناک دونستن، پس خیلیهاش هنوز تشخیص ندادن و این خودش خطر رو بیشتر میکنه!
JounQin بعد از اینکه قضیه هک رو فهمید زود Rهن دارندهی توکن npm رو دیلیت کرد و قول داد خیلی سریع نسخه سالم رو منتشر کنه. خودش هم تو توییتش نوشت: «اون توکن npm رو حذف کردم و الان ASAP ورژن جدید میدم. همه ممنون و معذرت بابت بیاحتیاطیام!»
در حال حاضر، این نسخهها مشکل دارن و باید به شدت ازشون دوری کرد:
- eslint-config-prettier نسخههای 8.10.1، 9.1.1، 10.1.6 و 10.1.7
- eslint-plugin-prettier نسخههای 4.2.2 و 4.2.3
- synckit نسخه 0.11.9
- @pkgr/core نسخه 0.2.8
- napi-postinstall نسخه 0.3.1
اگه از هرکدوم از این نسخهها استفاده میکنی، سریع حذفشون کن، سیستم رو با یه آنتیویروس قوی اسکن کن و حتما حواست به پروژههای دیگرت هم باشه.
یه نکته کلی: این اتفاق نشون میده که حواسمون باید به امنیت ایمیل و رمز عبورها باشه. بهتره از احراز هویت دو مرحلهای (مثلاً با اپلیکیشن Authenticator) و رمز عبور قوی/منحصربهفرد استفاده کنیم. (Authenticator یه برنامست که هر بار بخوای وارد سایتت بشی، یه کد موقت میفرسته تا مطمئن شه خودتی.)
خلاصه مراقب باش، مخصوصاً وقتی ایمیلهای مشکوک دربارهی امنیت اکانتت میاد – خیلی راحت میشه گول ظاهر رسمی این ایمیلها رو خورد!
اگه دوست داشتی بیشتر بدونی:
- کلی از پکیجهای npm اخیراً هدف بدافزار قرار گرفتن، مواظب باش اطلاعاتت رو ندزدن.
- یه سری برنامه هست برای مدیریت رمز عبور یا اپلیکیشنهای Authenticator که امنیت بیشتری بهت میدن، امتحانشون کن!
منبع: BleepingComputer
منبع: +