بستههای جاوااسکریپت با میلیاردها دانلود، در بزرگترین حمله زنجیره تامین جهان، با کد مخرب آلوده شدند تا ارزهای دیجیتال را سرقت کنند
در مجموع ۱۸ بسته جاوااسکریپت که بیش از ۲ میلیارد دانلود هفتگی دارند، در آنچه بزرگترین حمله زنجیره تامین در تاریخ نامیده میشود، با کد مخرب آلوده شدهاند. کد آلوده برای سرقت ارزهای دیجیتال طراحی شده بود.
این را تصور کنید: تانوس، یک دیوانه وسواسگونه به مرگ که در دنیای سینمایی مارول به عنوان رادیکالترین فعال محیط زیست در تاریخ بازتعریف شده است، دستکش بینهایت را جمعآوری کرده است. با آن، او میتوانست نیمی از جمعیت جهان را نابود کند. او دستش را بالا میآورد، انگشتانش را به هم میزند، و… به جای آن یک عالمه ارز دیجیتال سرقت میکند. دستکش بینهایت همچنان یک مشکل خواهد بود، مطمئناً، اما آیا آن اولین حرکت باعث آرامش نمیشد؟
این تقریباً همان حسی است که از آلودگی اخیر بستههای جاوااسکریپت که میلیاردها بار دانلود شدهاند، به دست میآید. آیا سهولتی که یک عامل تهدید ناشناس توانست نگهدارنده این بستهها را به خطر بیندازد، نرمافزار را تغییر دهد و آن را توزیع کند، وضعیت فاجعهبار توسعه نرمافزار مدرن را برجسته میکند؟ قطعاً. اما ما خوششانسیم—آنها ثروتمند شدن را بر ایجاد هرج و مرج ترجیح دادند.
این اتفاقی است که افتاد. Aikido دیروز گفت که ۱۸ بسته “به گونهای بهروزرسانی شده بودند که حاوی قطعه کدی باشند که در سمت کلاینت یک وبسایت اجرا میشود، که به طور مخفیانه فعالیتهای رمزنگاری و وب۳ را در مرورگر رهگیری میکند، تعاملات کیف پول را دستکاری میکند و مقاصد پرداخت را بازنویسی میکند تا وجوه و تأییدیهها بدون هیچ نشانه آشکاری برای کاربر، به حسابهای تحت کنترل مهاجم هدایت شوند.”
بستههای مورد بحث از طریق npm، مدیر بسته و رجیستری گیتهاب برای اکوسیستم Node.js توزیع میشوند و مجموعاً تقریباً ۲ میلیارد بار در هفته دانلود میشوند. در تئوری، هکر میتوانست از قابلیت تغییر این بستهها برای انجام هر کاری استفاده کند؛ Aikido گفت که آنها تصمیم گرفتند “اتریوم، بیتکوین، سولانا، ترون، لایتکوین و بیتکوین کش” را سرقت کنند.
ما نمیدانیم این بستههای مخرب تا کجا گسترش یافتهاند. خود بستهها میلیاردها بار در هفته دانلود میشوند، اما این حداقل تا حدی محصول جانبی سیستمهای ساخت نرمافزار است که به طور مداوم وابستگیهای یک پروژه را واکشی و دوباره واکشی میکنند. با این حال، نمیتوان انکار کرد که این بستهها محبوب هستند و سازمانهایی که نرمافزارشان به آنها وابسته است، باید اطمینان حاصل کنند که از نسخههای مخرب استفاده نمیکنند.
اما آیا این حداقل نتیجه یک حمله پیچیده بود؟ خیر. نگهدارنده این بستهها (که باید توجه داشت، از نام کاربری “bad-at-computer” در Bluesky استفاده میکند) گفت که یک ایمیل بازنشانی احراز هویت دو مرحلهای دریافت کرده است که “بسیار معتبر به نظر میرسید” از “support@npmjs.help” و فکر میکرد بیخطر است. اینطور نبود. تنها چیزی که برای انجام یک هک در این مقیاس لازم بود، یک نام دامنه، یک ایمیل و تمایل به تلاش بود.
این یک مشکل جدید نیست و منحصر به npm هم نیست. من در سال ۲۰۲۱ گزارش دادم که هکرها نگهدارندگان بستههای مورد استفاده توسط توسعهدهندگان جاوااسکریپت، پایتون، روبی و جاوا را در نرمافزار خود هدف قرار داده بودند، و حتی در آن زمان، این مشکل سالها بود که شناخته شده بود. حادثه بدنام left-pad—که در آن حذف ۱۱ خط کد “اینترنت را از کار انداخت” زیرا بسیاری از نرمافزارها به آن وابسته بودند—در سال ۲۰۱۶ اتفاق افتاد.
صنعت تلاش کرده است تا با تشویق استفاده از صورتحسابهای مواد نرمافزاری (SBOMs)، الزام نگهدارندگان بستههای پرکاربرد به ایمنسازی حسابهای خود با احراز هویت دو مرحلهای و غیره، این مشکل را حل کند. با این حال، این حادثه ثابت میکند که این اقدامات کافی نیستند. تا زمانی که فرآیندهای پذیرفته شده توسعه، نگهداری و انتشار نرمافزار تغییر نکنند، این مشکلات ادامه خواهند داشت.
این بار، دستکش بینهایت برای سرقت ارز دیجیتال استفاده شد. آیا تانوس بعدی با همین نیت انگشتانش را به هم خواهد زد؟ و کدام یک زودتر اتفاق میافتد، حرکت (snap) که خسارت بسیار بیشتری نسبت به یک سارق ارز دیجیتال وارد میکند، یا رسیدن چیزی که میتواند آن حرکت را به طور کامل متوقف کند؟ تانوس ادعا کرد که اجتنابناپذیر است؛ آیا ما واقعاً خودمان را به این امید واگذار میکنیم که این فقط در پرده نقرهای (سینما) درست بود؟
- کولبات
- شهریور 18, 1404
- 29 بازدید






