بسته های مخرب npm از دفاع نصب اسکریپت در زمان اجرا فرار می کنند
یک کمپین بدافزار npm در حال انجام که شامل بسته «indexed-btree» میشود، نشان میدهد که چگونه عوامل تهدید با پنهان کردن کدهای مخرب در رفتار زمان اجرا عادی بستهها به جای اسکریپتهای نصب، دفاعهای زنجیره تأمین را دور میزنند. [...]
یک کمپین بدافزار npm در حال انجام که شامل بسته «indexed-btree» میشود، نشان میدهد که چگونه عوامل تهدید با پنهان کردن کدهای مخرب در رفتار زمان اجرا عادی بستهها به جای اسکریپتهای نصب، دفاعهای زنجیره تأمین را دور میزنند.
این بسته که توسط محققان چکمارکس مشاهده شده است، تلاش میکند جعل هویت کتابخانه قانونی "sorted-btree" را جعل کند و تاکنون 2 میلیون بارگیری در هفته جمع آوری کرده است.
این کمپین همچنین ممکن است سود قابل توجهی برای مهاجمان داشته باشد، زیرا طبق گفته چکمارکس، از کیف پولی با 109 ETH استفاده می کنند. با این حال، این گزارش نمی گوید که این سرمایه ها از سرقت ارزهای دیجیتال به دست آمده اند.
در ژوئن 2026، GitHub مجموعه ای از اقدامات امنیتی npm را اعلام کرد که برای کمک به جلوگیری از حملات زنجیره تامین که از اواخر سال 2025 مکررا اکوسیستم های منبع باز را تکان داده است، طراحی شده است.
یکی از اقدامات امنیتی کلیدی مسدود کردن اسکریپتهای چرخه عمر وابستگی مانند «پیش نصب»، «نصب» و «پست نصب» است، مگر اینکه صریحا تأیید شود.
اقدامات دیگر از بازیابی خودکار وابستگی ها از مخازن Git یا URL های راه دور بدون مجوز توسط npm جلوگیری می کند.
بسته مخرب indexed-btree با اجتناب از اسکریپتهای نصب، از این حفاظتها دوری میکند و در عوض لودر خود را در متد BTree.prototype.set() بسته پنهان میکند، که در زمان اجرا زمانی که برنامه آن را با یک مقدار کلید خاص فراخوانی میکند، اجرا میشود.
در نتیجه، نصب تمیز به نظر می رسد و هیچ یک از مکانیسم های تایید npm v12 را فعال نمی کند.
Checkmarx توضیح میدهد: «بارکننده بدافزار در روش BTree.prototype.set خود کتابخانه پنهان میشود، که این تابع اصلی است که هر کاربر دائما آن را فراخوانی میکند.
"این کار sharedLoad.min.js را فعال میکند که حاوی اولین مرحله مبهم بدافزار است. این یک راه خوب برای عبور از ابزارهای استاندارد تجزیه و تحلیل لکهها و اکثر اسکنرهای ثابت است."
هنگامی که بدافزار اجرا میشود، میتواند جزئیات سیستم، از جمله معماری، نام میزبان، CPU، حافظه و زمان آپدیت را جمعآوری کند و اطلاعات را از طریق کانالهای Slack و تلگرام استخراج کند.
این بدافزار همچنین از یک قرارداد هوشمند اتریوم در شبکه آزمایشی Sepolia برای اطلاعات فرمان و کنترل (C2) نظرسنجی میکند. از تبادل کلید X25519 برای استخراج یک کلید AES و رمزگشایی بار مرحله دوم ذخیره شده در قرارداد استفاده می کند.
هنگامی که اپراتورها تصمیم به پایان دادن به حمله میکنند، بدافزار میتواند فایلهای خود را حذف کرده و عامل مخرب را از کد بسته حذف کند تا ردپای آن پاک شود.
محققان خاطرنشان میکنند که عوامل تهدید تلاش زیادی کردهاند تا پروژه را قانونی جلوه دهند، از جمله ساخت یک مخزن GitHub با ظاهر قانونی، پر کردن تاریخچه ارتکاب آن و مدیریت حساب توسعهدهنده.
چکمارکس همچنین 9 بسته npm اضافی مرتبط با همان عملیات را کشف کرد که اکنون آنها را از npm حذف کرده است. آنها همچنین به تعداد دانلود قابل توجهی دست یافتند، همانطور که در اینجا مشاهده می شود:
به توسعه دهندگان توصیه می شود که تنها به اسکن زمان نصب اعتماد نکنند و همچنین از تحلیل رفتاری زمان اجرا استفاده کنند.
کسانی که indexed-btree یا هر یک از بستههای ذکر شده در بالا را نصب کردهاند، باید همه رازها را بچرخانند و محیط توسعه خود را از یک نسخه پشتیبان امن بازیابی کنند.
به میکو هیپونن و رهبران امنیتی NFL، CHANEL و Atlassian بپیوندید تا در یک نشست دیجیتالی دو ساعته در مورد اینکه حملات با سرعت هوش مصنوعی چه تغییراتی میکنند، مدافعان چه کارهایی را باید انجام ندهند و چگونه اعتبار، تصمیمگیری، اصلاح و تأیید مجدد با سرعت ماشین را انجام دهند، بپیوندید.
مخازن جعلی LastPass Authenticator GitHub، اطلاعات جدید Rapuncel را تحت فشار قرار می دهد.
آمازون حملات زنجیره تامین Debug، Chalk NPM را به هکرهای کره شمالی مرتبط می کند
کمپین FakeGit از ۷۶۰۰ مخزن GitHub برای انتشار بدافزار SmartLoader استفاده میکند
بدافزار جدید اندروید RatHat از هوش مصنوعی برای خودکارسازی کنترل دستگاه استفاده می کند
هکرهای ایرانی از بدافزار CHOSEN BRICK Windows برای جاسوسی از اهداف استفاده می کنند
متن اصلی (انگلیسی)
Malicious npm packages evade install-script defenses at runtime
An ongoing npm malware campaign involving the 'indexed-btree' package shows how threat actors bypass supply chain defenses by hiding malicious code in a package's normal runtime behavior rather than in installation scripts. [...]