گزارشهای اخیر، روند مربوط به اکوسیستم هک NPM را برجسته کرده است، جایی که هزاران توسعه دهنده سهواً کتابخانههای مخرب را دانلود میکنند. این وضعیت در درجه اول شامل حملات Typosquatting است که در آن هکرها، نسخههای جعلی و آلوده به بدافزار پکیجهای محبوب NPM را برای فریب کاربران ایجاد میکنند.
مهاجم، پکیجهای تایپسکوات شده را با هدف فریب توسعه دهندگان به منظور نصب بدافزار منتشر میکند. توسعهدهندگان ناآگاه نیز این نسخههای جعلی از کتابخانههای واقعی را دانلود و استفاده میکنند.
کتابخانههای جعلی و Typosquatting معمولاً با تغییرات کوچک در نام کتابخانههای اصلی (مانند اضافه یا حذف یک کاراکتر) منتشر میشوند. این هدف اصلی این کتابخانهها میتواند شامل موارد زیر باشد:
- سرقت اطلاعات حساس: مانند توکنهای دسترسی، کلیدهای API، یا اطلاعات شخصی کاربران.
- اجرای کد مخرب: شامل نصب بدافزارها، ایجاد دسترسیهای غیرمجاز و یا حتی حملات استخراج ارز دیجیتال.
- مهندسی اجتماعی: گمراه کردن توسعهدهندگان برای اعتماد به نامهای جعلی.
گزارش اخیر Sonatype حاکی از آن است که ۹۸.۵ درصد از کل بدافزارهای منبع باز کشف شده توسط ایالات متحده در رجیستری NPMJS.com منتشر شدهاند و این متد یک انتخاب حائز اهمیت در بین هکرها میباشد که به دنبال ملزم ساختن توسعه دهندگان به نصب پیکجهای مخرب هستند.
Sonatype در اوایل ماه سامبر سال جاری، پکیجهای typosquat شده مخربی را کشف کرد که دارای نام بسیار مشابهی مانند کتابخانههای قانونی NPMهمچون ESLint و @types/node بودند. جالب است که این کتابخانهها هزاران بار دانلود شدهاند.
نسخههای جعلی پکیجهای NPM این سری از حملات، با نام @typescript_eslinter/eslint (با ۳,۰۳۰ دانلود) و types-node (با ۲۰،۵۰۲ دانلود) منتشر شدهاند که به ترتیب برای دانلود یک تروجان و پیلودهای ثانویه طراحی شدهاند. پکیجهای اصلی و قانونی، @typescript-eslint/eslint-plugin و typescript-eslint نام دارند که در رجیستری npmjs.com موجود میباشند.
تجزیه و تحلیل Sonatype از @typscript_eslinter/eslint نشان میدهد که این پکیج به یک مخزن گیت هاب Phony که توسط اکانت “TypeScript-Eslinter” ایجاد شده است، اشاره دارد. این اکانت، 29 نوامبر 2024 ایجاد شده و شامل فایلی به نام “prettier.bat” است.
پکیج دیگری که به همان اکانت NPM/GitHub مرتبط میباشد، @TypeScript_Eslinter/Prettier نام دارد. این یک ابزار مشهور فرمت کد با همین نام را جعل میکند اما در واقعیت برای نصب کتابخانه جعلی @TypeScript_ESLINTER/ESLINT پیکربندی شده است.
کتابخانه مخرب حاوی کدی برای استقرار “prettier.bat” در یک دایرکتوری Temp و اضافه کردن آن به پوشه Startup ویندوز است تا هر بار که دستگاه راه اندازی مجدد میشود، به طور خودکار اجرا گردد. فایل “prettier.bat” در واقع یک فایل ویندوزی قابل اجرا است (exe) که قبلاً به عنوان تروجان و دارپر در VirusTotal مشخص شده است.
پکیج دوم نیز، types-node نیز دستورالعملهایی را برای دستیابی به URL Pastebin و اسکریپتهای دانلود که وظیفه اجرای یک فایل مخرب را بر عهده دارند و به طرز فریبندهای “npm.exe” نامگذاری شدهاند، شامل میشود.
این قبیل تهدیدات سایبری، حاکی از نیاز جدی به اقدامات امنیتی زنجیره تأمین و هوشیاری بیشتر در نظارت بر توسعه دهندگان رجیستری نرم افزار شخص ثالث میباشند.
این در حالی است که تیم تحقیقاتی تهدید Socket هشتم نوامبر ۲۰۲۴، پکیجهای npm مخربی را شناسایی کرده بود که به طور خاص کاربران Roblox را هدف قرار میدادند. این پکیجها برای جعل هویت ماژولهای قانونی که به طور گسترده در جامعه توسعه دهندگان Roblox استفاده میشوند، طراحی شده بودند.
Roblox، یک پلتفرم آنلاین و سیستم ساخت بازی است که دارای ۷۹.۵ میلیون کاربر فعال روزانه میباشد و دارای ۲.۵ میلیون توسعه دهنده است. مهاجم، پکیجهای تایپسکوات شده را با هدف توزیع بدافزارهای Skuld infostealer و Blank Grabber منتشر کرده بود.
این پکیجها تا پیش از آنکه حذف شوند دارای بیش از 320 دانلود بودند و خطرات قابل توجهی از جمله سرقت دادههای لاگین (نام کاربری و پسورد)، اطلاعات مالی و دادههای شخصی را به همراه داشتند. لیست پکیجهای مخرب به شرح زیر میباشد:
- node-dlls (۷۷ دانلود)
- dll (۷۴ دانلود)
- autoadv (۶۶ دانلود)
- rolimons-api (۱۰۷ دانلود)
اقدامات پیشگیرانه
- بررسی دقیق نام کتابخانهها: همیشه نام کامل و دقیق کتابخانه را از منابع معتبر یا مستندات رسمی بررسی کنید.
- تحقیق در مورد توسعه دهنده آن: اطمینان حاصل کنید که کتابخانه توسط یک توسعه دهنده یا سازمان معتبر منتشر شده باشد.
- بررسی تعداد دانلودها: کتابخانههای معتبر معمولاً تعداد دانلودهای بسیار زیادی دارند.
- بررسی مخزن GitHub: کتابخانههای قانونی معمولاً دارای مستندات و سورسکد در مخازن عمومی GitHub هستند.
- استفاده از ابزارهای امنیتی: ابزارهایی مانند npm audit و Dependabot میتوانند مشکلات امنیتی بالقوه را شناسایی کنند.
در صورت شناسایی کتابخانه مخرب:
- به تیم npm گزارش دهید: کتابخانههای جعلی را از طریق ایمیل یا سیستم گزارش npm اطلاع دهید.
- پاکسازی محیط توسعه: چنانچه کتابخانه مخرب نصب شده است، فوراً آن را حذف و وابستگیها و ملزومات آن را مورد بررسی قرار دهید.
- بررسی دسترسیها: مطمئن شوید که هیچگونه اطلاعات حساسی فاش نشده و در اختیار هکرها قرار نگرفته است.
منابع
مقالات پیشنهادی:
شناسایی بدافزار BeaverTail در پکیجهای npm آلوده
توزیع پکیج های مخرب PyPi توسط Stack Exchange
پکیج مخرب Fabrice، هزاران کلید AWS را از توسعه دهندگان ربود
توزیع بدافزارهای Skuld infostealer و Blank Grabber توسط پکیجهای مخرب NPM
سوء استفاده از قراردادهای هوشمند اتریوم برای کنترل پکیجهای Typosquat شده npm