در روز ۱۷ شهریور ۱۴۰۴ (۸ سپتامبر ۲۰۲۵)، یک حمله گسترده به زنجیره تأمین در اکوسیستم NPM کشف شد. این حمله شامل آپلود صدها بسته مخرب به رجیستری NPM بود که برای سرقت اطلاعات حساس، از جمله کلیدهای API و اطلاعات احراز هویت، طراحی شده بودند.

این بسته‌ها از تکنیک‌هایی مانند typosquatting (استفاده از نام‌های مشابه بسته‌های معتبر) و روش‌های مهندسی اجتماعی برای فریب توسعه‌دهندگان استفاده می‌کردند. بدون اینکه به مسائل فنی این حمله بپردازیم، فقط یک سوال داریم: آیا دارایی ما در خطر است؟

در این مقاله هر آنچه که در مورد این حمله در دسترس است را با یکدیگر بررسی کرده و با مرور نکات امنیتی برای محافظت از دارایی‌ها، به این سوال پاسخ خواهیم داد. همراه ما باشید.

هر آنچه از هک NPM می دانیم!

همانطور که گفتیم، در شب ۱۷ شهریور ماه، یک حمله گسترده به زنجیره تأمین در اکوسیستم NPM (Node Package Manager) کشف شد که یکی از جدی‌ترین تهدیدات امنیتی اخیر در حوزه نرم‌افزارهای متن‌باز به شمار می‌رود. در این حمله npm حداقل ۱۸ کتابخانه محبوب آلوده شدند که مجموع دانلود هفتگی آن‌ها به مقیاس میلیاردی می‌رسد.

از میان کتابخانه‌های شناخته‌شده می‌توان به chalk، debug و ansi-styles اشاره کرد.

بدافزار تزریق‌شده به این بسته‌ها عمدتاً کاربران حوزه وب۳ و رمزارزها را هدف قرار داده و با دستکاری تعاملات کیف پول‌ دیجیتال در سطح APIهای مرورگر، آدرس‌های مقصد تراکنش‌ها را به آدرس‌های تحت کنترل مهاجمان تغییر می‌داد.

نمونه حملات فیشینگ در حمله npm

هک NPM چگونه اتفاق افتاد؟

هک npm از طریق یک کمپین فیشینگ هدفمند علیه نگهدارندگان (maintainers) بسته‌های NPM انجام شد. بر اساس گزارش پلتفرم اطلاعاتی Security Alliance (SEAL)، مهاجمان با استفاده از دامنه جعلی npmjs.help، ایمیل‌هایی برای فریب توسعه‌دهندگان ارسال کردند.

این ایمیل‌ها قربانیان را به صفحه‌ای تقلبی هدایت می‌کردند که اسکریپت‌های سرقت اطلاعات را از دو باکت BunnyCDN بارگیری کرده و نام کاربری، گذرواژه، و حتی کد احراز هویت دومرحله‌ای (2FA) را به سروری در websocket-api2.publicvm[.]com ارسال می‌کردند.

بدافزار چه رفتاری از خود نشان میدهد؟

بدافزار تزریق‌شده در این حمله به‌طور خاص محیط مرورگر را هدف قرار می‌داد و هیچ فایل محلی را نصب یا سرقت نمی‌کرد. بر اساس تحلیل SEAL، این بدافزار ابتدا بررسی می‌کرد که آیا شی window.ethereum مرتبط با کیف پول‌های وب۳ مانند متامسک، در مرورگر وجود دارد یا خیر.

سپس، روی توابع کلیدی مانند request، send، و sendAsync قلاب‌گذاری (hooking) انجام می‌داد. علاوه بر این، متدهای fetch و XMLHttpRequest بازنویسی می‌شدند تا پاسخ‌های JSON دستکاری شوند. هر رشته‌ای که به‌عنوان آدرس رمزارزی شناسایی می‌شد (با استفاده از معیار فاصله Levenshtein)، با یکی از ۲۸۰ آدرس از پیش تعریف‌شده توسط مهاجمان جایگزین می‌شد.

در اکوسیستم اتریوم، تراکنش‌های مرتبط با توابع approve، permit، transfer، و transferFrom و همچنین تراکنش‌های دارای مبلغ، به آدرس‌های مهاجمان هدایت می‌شدند. در بلاک چین سولانا، گیرنده‌ها یا کلیدهای عمومی به‌گونه‌ای تغییر می‌کردند که تراکنش‌ها عملاً ناموفق می‌شدند یا به مقصد نادرست هدایت می‌شدند.

خسارت مالی اولیه هک NPM چقدر است؟

ابعاد و خسارت مالی اولیه در منابع اندکی متفاوت گزارش شده است. «CSO Online» به نقل از یک پژوهشگر عددی نزدیک به ۹۷۰ دلار را ذکر می‌کند و هم‌زمان بر نیاز به اصلاحات ساختاری در امنیت اکوسیستم NPM تأکید دارد. در مقابل، «Security Alliance» می‌گوید، کمتر از ۵۰ دلار سرقت تأیید شده (رقمی که در ابتدا حتی ۵ سنت گزارش شده بود) و بخشی از آن هم مربوط به یک میم کوین کم‌اهمیت بوده است.

این اختلاف نشان می‌دهد برآوردها هنوز در حال تغییر است، اما تا این لحظه خسارت مالی تأییدشده بسیار محدود گزارش شده است.

علت هک npm چه بود

چه چیزی باعث هک NPM شد؟

همانطور که پیش‌تر اشاره شد، مهاجمان با راه‌اندازی یک کمپین فیشینگ و ثبت دامنه‌ شبیه‌سازی‌شده‌ npmjs.help، نگه‌دارنده‌ کتابخانه پرکاربرد با نام کاربری «qix» را فریب دادند. ایمیلی از نشانی support@npmjs[.]help قربانی را به صفحه‌ای تقلبی هدایت کرد که اسکریپت سرقت اعتبار را از دو باکت BunnyCDN بارگیری می‌کرد و نام کاربری، گذرواژه و کد دوعاملی را به سروری در websocket-api2.publicvm[.]com می‌فرستاد. پس از به‌دست گرفتن حساب، نسخه‌های جدید آلوده برای بسته‌ها منتشر شد.

نکته‌ی قابل‌توجه در سازوکار حمله این است که دامنه‌ی npmjs.help سه روز قبل از شروع کمپین یعنی در تاریخ ۵ سپتامبر ثبت شده و مکاتبات رسمی NPM را تقلید کرده است.

آیا دارایی صرافی ها در خطر است؟

در پاسخ کوتاه باید گفت،‌ خیر! حمله npm به‌طور مستقیم دارایی‌های صرافی‌های ارز دیجیتال را تهدید نمی‌کند، مگر در موارد خاص که صرافی‌ها از بسته‌های آلوده NPM در زیرساخت‌های خود استفاده کرده باشند. این نوع حملات بیشتر کیف پول‌های دیفای (DeFi) یا برنامه‌های غیرمتمرکزی را که به بسته‌های خاصی مانند xrpl.js وابسته‌اند، تحت تأثیر قرار می‌دهند.

به گفته پژوهشگران Aikido، بزرگ‌ترین تهدید این حمله متوجه پلتفرم‌هایی است که از رابط‌های وب برای انجام تراکنش‌ها استفاده می‌کنند. هک npm از بدافزاری استفاده می‌کند که وقتی کاربری قصد انتقال ارز دیجیتال را دارد، می‌تواند آدرس مقصد را تغییر دهد و دارایی را به حساب مهاجم هدایت کند.

صرافی بیت‌پین با ذخیره‌سازی بیش از ۹۵ درصد از دارایی‌های کاربران در فضای سرد، سرمایه کاربران را از تهدیدات سایبری مانند حمله npm مصون نگه می‌دارد و هیچ خطری دارایی‌ کاربران بین‌پین را تهدید نمی‌کند.

از طرفی، خوشبختانه تأثیر مالی این حمله بسیار محدود بوده و تاکنون هیچ نشانه‌ای از خسارت گسترده به صرافی‌های ارز دیجیتال گزارش نشده است، اما از آنجایی که این بدافزار در سطح مرورگر عمل می‌کند، هر پلتفرمی که برای تأیید تراکنش‌ها به رابط وب وابسته است، باید فوراً وابستگی‌های نرم‌افزاری خود را بررسی کرده و نظارت دقیقی بر هرگونه تغییر مشکوک در آدرس‌های تراکنش داشته باشد.

آیا دارایی کیف پول های شخصی در حمله NPM خطر است؟

ریسک از دست رفتن دارایی‌های کیف پول‌های شخصی در حمله اخیر به پکیج‌های NPM یک ریسک مشروط است و به شرایط خاصی بستگی دارد. در واقع بدافزار تنها در صورتی می‌تواند دارایی‌ها را از کیف پول شخصی سرقت کند که:

  • کاربر با وب‌سایت یا اپلیکیشنی تعامل کند که نسخه آلوده بسته‌های NPM را بارگذاری کرده باشد.
  • کاربر تراکنشی را در مرورگر تأیید کند، جایی که آدرس مقصد به‌صورت مخفیانه تغییر می‌کند.

صرف وجود دارایی در کیف پول بدون انجام تراکنش خطری ایجاد نمی‌کند؛ اما باید در نظر داشته باشید که کیف پول‌ نرم‌افزاری مانند افزونه‌های مورد استفاده در dAppها بیشترین ریسک را دارند، زیرا بدافزار می‌تواند در لایه مرورگر دخالت کرده و آدرس مقصد را قبل از امضا تغییر دهد.

نکات محافظت از دارایی در هک npm

الزامات و نکات امنیتی در مقابل حملات هک آنلاین

برای محافظت از دارایی‌ها و اطلاعات شخصی در زمان هک شدن، رعایت نکات امنیتی و اقدامات احتیاطی زیر ضروری است:

  • توقف تراکنش‌ها: تا رفع کامل مشکل، از انجام تراکنش‌های ارز دیجیتال، به‌ویژه در وب‌سایت‌ها یا اپلیکیشن‌هایی که ممکن است از پکیج‌های آلوده NPM استفاده کنند، خودداری کنید.
  • بررسی آدرس مقصد: هنگام استفاده از کیف پول‌های نرم‌افزاری، آدرس مقصد را در پنجره تأیید تراکنش حرف‌به‌حرف با آدرس مورد نظر مقایسه کنید. هرگونه مغایرت = لغو تراکنش.
  • اجتناب از Blind Signing: از تأیید تراکنش‌های «Blind Signing» (امضای کور) که جزئیات کامل تراکنش را نشان نمی‌دهند، خودداری کنید.
  • استفاده از کیف پول سخت‌افزاری: از کیف پول‌های سخت‌افزاری با «صفحه‌نمایش امن» و «Clear Signing» استفاده کنید و فقط بر اساس اطلاعات نمایشگر دستگاه تراکنش را تأیید کنید.
  • غیرفعال کردن افزونه‌های کیف پول: افزونه‌های کیف پول نرم‌افزاری مانند متامسک را در مرورگر موقتاً غیرفعال کنید تا از تعامل ناخواسته با کدهای مخرب جلوگیری شود.
  • انتقال دارایی‌ها به کیف پول سرد: دارایی‌های خود را به کیف پول‌های آفلاین مانند کیف پول سرد لجر یا ترزور منتقل کنید که از اینترنت جدا هستند و در برابر حملات سایبری ایمن‌تر عمل می‌کنند.
  • بررسی یادداشت‌های انتشار: برای اپلیکیشن‌های موبایل مبتنی بر جاوااسکریپت، منتظر به‌روزرسانی‌های رسمی باشید و یادداشت‌های انتشار را برای اطمینان از رفع آسیب‌پذیری‌ها بررسی کنید.
  • فعال‌سازی احراز هویت دومرحله‌ای (2FA): از 2FA مبتنی بر اپلیکیشن‌های معتبر مانند گوگل آتنتیکیتور استفاده کنید و از 2FA مبتنی بر پیامک ترجیحاً اجتناب کنید.
  • بررسی لاگ تراکنش‌ها: فعالیت‌های حساب و کیف پول خود را مرتباً بررسی کنید و هشدارهای ورود یا برداشت غیرمجاز را فعال کنید.
  • اجتناب از کلیک روی لینک‌های مشکوک: از کلیک کردن روی لینک‌های دریافتی از ایمیل‌ها یا پیام‌های ناشناس مانند ایمیل‌های فیشینگ با دامنه‌های جعلی مثل npmjs.help خودداری کنید.
  • نظارت بر اخبار امنیتی: اطلاعیه‌های رسمی NPM، تیم‌های امنیتی و منابع معتبر را برای به‌روزرسانی‌های مرتبط با حمله دنبال کنید.
  • تهیه نسخه پشتیبان: از کلید خصوصی و عبارت بازیابی کیف پول خود نسخه پشتیبان آفلاین (مثلاً روی کاغذ) تهیه کنید و آن را در مکانی امن نگهداری کنید.

کلام پایانی

حمله اخیر به زنجیره تأمین NPM در تاریخ ۸ سپتامبر ۲۰۲۵، با آلوده کردن صدها کتابخانه محبوب و دستکاری تراکنش‌های رمزارزی، زنگ خطری برای اکوسیستم وب۳ و کاربران کیف پول‌های دیجیتال بود. این حمله که از طریق فیشینگ هدفمند و سوءاستفاده از حساب‌های توسعه‌دهندگان رخ داد، نشان‌دهنده آسیب‌پذیری‌های جدی در زیرساخت‌های نرم‌افزاری متن‌باز است.

اگرچه گزارش‌ها از خسارت مالی تأییدشده تا این لحظه محدود حکایت دارد، اما گستره بالقوه اثرگذاری نشان می‌دهد اتکا به شهرت نگه‌دارنده یا «به‌روزرسانی خودکار» به‌تنهایی کافی نیست. هدف این حمله تصاحب حساب ناشر از طریق فیشینگ بود و رفتار بدافزار نیز صرفاً در لحظه تعامل کاربر معنا پیدا می‌کرد؛ بنابراین هم تیم‌های فنی و هم کاربران باید الزامات و روش‌های پیشگیری مؤثر را پیاده کنند.

در نهایت، این حمله یادآور اهمیت نظارت مستمر بر امنیت سایبری و به‌روزرسانی‌های رسمی است. با رعایت نکات امنیتی، انتقال دارایی‌ها به کیف پول‌های سرد و دنبال کردن اطلاعیه‌های معتبر، می‌توان از خسارات احتمالی جلوگیری کرد. به خاطر داشته باشید که دارایی‌های شما در بیت‌پین به بهترین شکل محافظت ‌می‌شوند و جای نگرانی برای کاربران وجود ندارد. به‌طور کلی، اکوسیستم NPM و جوامع وب۳ باید با همکاری و اصلاحات ساختاری، از تکرار چنین تهدیداتی در آینده پیشگیری کنند.

سوالات متداول

  • هک NPM چیست؟ 

حمله‌ای به زنجیره تأمین NPM که صدها بسته مخرب را در مرورگر فعال کرده و آدرس‌های مقصد تراکنش‌های رمزارزی را با آدرس‌های مهاجمان جایگزین می‌کند.

  • کدام کیف پول ها در حمله npm در خطرند؟

کیف پول‌های نرم‌افزاری مبتنی بر مرورگر که در dAppها استفاده می‌شوند، بیشترین ریسک را دارند.

  • آیا صرافی ها در هک npm در خطرند؟ 

خیر، مگر اینکه صرافی از بسته‌های آلوده NPM در زیرساخت‌های وب خود استفاده کرده باشد.

  • خسارت مالی حمله npm چقدر بود؟ 

تاکنون خسارات تأییدشده کمتر از ۵۰ دلار گزارش شده، اما برآوردها ممکن است تغییر کند.

  • آیا کیف پول تراست ولت در خطر است؟

در صورت استفاده از WebView یا اتصال به پلتفرم دیفای، ممکن است در معرض خطر باشد.

  • آیا کیف پول متامسک در خطر است؟

بله، به دلیل فعالیت در مرورگر، متامسک در برابر دستکاری آدرس توسط بدافزار آسیب‌پذیر است.