دوشنبه, مهر ۶, ۱۴۰۵

بسته‌های مخرب npm هنگام اجرا، سازوکارهای امنیتیِ اسکریپت‌های نصب را دور می‌زنند

0
4
بسته‌های مخرب npm هنگام اجرا، سازوکارهای امنیتیِ اسکریپت‌های نصب را دور می‌زنند

یک کارزار بدافزاری فعال در اکوسیستم npm، با استفاده از بستهٔ indexed-btree، نشان می‌دهد مهاجمان چگونه با پنهان‌ کردن کد مخرب در رفتار عادی بسته هنگام اجرای برنامه، به‌جای قراردادن آن در اسکریپت‌های نصب، از سد دفاعی زنجیره تامین نرم‌افزار عبور می‌کنند.

این بسته که پژوهشگران Checkmarx آن را شناسایی کرده‌اند، تلاش می‌کند خود را به‌جای کتابخانه معتبر sorted-btree جا بزند و شمار دانلودهای هفتگی آن تاکنون به ۲ میلیون رسیده است.

این کارزار ممکن است سود قابل‌ توجهی نیز برای مهاجمان به همراه داشته باشد. به گفته Checkmarx، آن‌ها از کیف پولی استفاده می‌کنند که موجودی آن ۱۰۹ اتر (ETH) است. با این‌ حال، در گزارش مشخص نشده که این دارایی از سرقت رمزارز به دست آمده باشد.

دور زدن تازه‌ترین تدابیر امنیتی

گیت‌هاب در ژوئن ۲۰۲۶ مجموعه‌ای از تدابیر امنیتی برای npm معرفی کرد. هدف این تدابیر، کمک به جلوگیری از حملات زنجیره تامین نرم‌افزار بود؛ حملاتی که از اواخر سال ۲۰۲۵ بارها اکوسیستم‌های متن‌باز را تحت‌ تاثیر قرار داده‌اند.

یکی از تدابیر اصلی، مسدود کردن اجرای اسکریپت‌های چرخه حیات وابستگی‌ها، مانند preinstall، install و postinstall است؛ مگر اینکه اجرای آن‌ها صراحتا تایید شده باشد.

تدابیر دیگر نیز مانع می‌شوند npm بدون مجوز، وابستگی‌ها را به‌صورت خودکار از مخازن Git یا نشانی‌های اینترنتی دریافت کند.

بستهٔ مخرب indexed-btree با استفاده‌ نکردن از اسکریپت‌های نصب، این سازوکارهای حفاظتی را دور می‌زند. در عوض، کد بارگذار بدافزار را در متد BTree.prototype.set() پنهان می‌کند. این کد زمانی فعال می‌شود که برنامه هنگام اجرا، متد مذکور را با مقدار مشخصی برای کلید فراخوانی کند.

در نتیجه، فرایند نصب پاک و بی‌خطر به نظر می‌رسد و هیچ‌ یک از سازوکارهای درخواست تایید در npm نسخهٔ ۱۲ فعال نمی‌شوند.

Checkmarx توضیح می‌دهد:

«بارگذار بدافزار درون متد BTree.prototype.set خود کتابخانه پنهان شده است؛ همان تابع اصلی که هر کاربر کتابخانه مرتبا آن را فراخوانی می‌کند.

این فراخوانی باعث اجرای فایل sharedLoad.min.js می‌شود که مرحله نخست بدافزار را به‌صورت مبهم‌سازی‌ شده در خود جای داده است. این روش با طراحی حساب‌شده‌ای، ابزارهای متداول تحلیل جریان داده آلوده (taint analysis) و بیشتر اسکنرهای ایستا را دور می‌زند.»

بسته‌های مخرب npm هنگام اجرا، سازوکارهای امنیتیِ اسکریپت‌های نصب را دور می‌زنندپس از اجرا، بدافزار می‌تواند اطلاعات سیستم، از جمله معماری سخت‌افزاری، نام میزبان، مشخصات پردازنده، حافظه و مدت‌ زمان روشن‌ بودن سیستم را جمع‌آوری کند. سپس این اطلاعات را از طریق کانال‌های Slack و Telegram که نشانی آن‌ها به‌صورت ثابت در کد درج شده است، به بیرون ارسال می‌کند.

بدافزار همچنین برای دریافت اطلاعات فرماندهی و کنترل (C2)، به‌صورت دوره‌ای یک قرارداد هوشمند اتریوم را در شبکه آزمایشی Sepolia بررسی می‌کند. این بدافزار از سازوکار تبادل کلید X25519 برای مشتق‌سازی یک کلید AES استفاده می‌کند و با آن، محموله مرحله دوم را که در قرارداد ذخیره شده است، رمزگشایی می‌کند.

هنگامی که گردانندگان تصمیم به پایان‌ دادن حمله بگیرند، بدافزار می‌تواند فایل‌های خود را حذف کند و کد فعال‌ کننده مخرب را نیز از کد بسته بردارد تا ردپای خود را پاک کند.

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

بسته‌های مخرب npm هنگام اجرا، سازوکارهای امنیتیِ اسکریپت‌های نصب را دور می‌زنند

Checkmarx همچنین ۹ بسته دیگر npm را شناسایی کرده که با همین عملیات مرتبط بوده‌اند و اکنون از npm حذف شده‌اند. این بسته‌ها نیز، همان‌طور که در فهرست زیر دیده می‌شود، تعداد دانلود قابل‌توجهی داشته‌اند:

نام بسته تعداد دانلود
ordered-kv-index ۴۴۸٬۱۸۴
btree-leaderboard ۴۹۳٬۶۸۵
priority-slot-queue ۴۰۲٬۸۶۰
btree-range-store ۴۶۸٬۰۹۲
btree-core ۱٬۹۵۱٬۲۷۴
btree-time-index ۴۲۵٬۳۱۲
btree-lru-cache ۳۷۲٬۱۸۵
neighbor-key-map ۳۶۶٬۰۱۹
sliding-score-window ۴۴۸٬۰۲۴

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

کسانی که indexed-btree یا هرکدام از بسته‌های فهرست‌ شده را نصب کرده‌اند، باید تمام اطلاعات محرمانه دسترسی (secrets)، مانند رمزهای عبور، توکن‌ها و کلیدها را تعویض و مقادیر قبلی را بی‌اعتبار کنند. همچنین باید محیط توسعه خود را از یک نسخه پشتیبان سالم و مطمئن بازیابی کنند.

منبع: https://www.bleepingcomputer.com/news/security/malicious-npm-packages-evade-install-script-defenses-at-runtime/

مقاله قبلیکلادفلر نقصی را برطرف کرد که به یک کانتینر اجازه می‌داد داده‌های باقی‌مانده روی دیسکِ مشتری دیگر را بخواند
مقاله بعدیخلاصه فنی گزارش Detecting and countering misuse of AI

نظر بدهید

لطفا نظر خود را بنویسید
لطفا نام خود را اینجا وارد کنید

این سایت از اکیسمت برای کاهش جفنگ استفاده می‌کند. درباره چگونگی پردازش داده‌های دیدگاه خود بیشتر بدانید.