با نفوذ به فرآیند انتشار GitHub Actions پروژه TanStack، مهاجمان توانستند ۸۴ نسخه مخرب از ۴۲ بسته NPM را از پشته TanStack در مخزن NPM منتشر کنند. برخی از بستههای آسیبدیده بیش از ۱۰ میلیون بار در هفته دانلود میشدند.
دسترسی به انتشار نسخه به دلیل تنظیم نادرست pull_request_target "Pwn Request" در GitHub Actions (تعیین ماسک در تنظیمات منجر به راهاندازی pull_request_target برای درخواستهای pull به شاخههای شخص ثالث شد)، مسموم کردن حافظه پنهان GitHub Actions از طریق یک شاخه، و امکان استخراج یک توکن OIDC از حافظه یک فرآیند اجراکننده در حال اجرا (Runner.Worker) با خواندن محتویات /proc/ به دست آمد. /یادداشت.
بستههای NPM با تغییرات مخرب در ۱۱ مه بین ساعت ۱۰:۲۰ شب و ۱۰:۲۶ شب (MSK) منتشر شدند، ۲۰ دقیقه بعد شناسایی و یک ساعت و نیم بعد مسدود شدند. دو نسخه مخرب از هر بسته NPM آسیبدیده منتشر شد که هر کدام حاوی کدی برای فعال کردن کرم mini-shai-hulud بودند که به دنبال توکنها و اعتبارنامهها در محیط فعلی میگردد. اگر یک توکن اتصال به دایرکتوری NPM شناسایی میشد، کرم به طور خودکار نسخههای مخرب جدیدی را برای بستههای در حال توسعه در محیط فعلی منتشر میکرد و درخت وابستگی را تحت تأثیر قرار میداد. بیش از ۴۰۰ بسته NPM که از بستههای TanStack به عنوان وابستگی استفاده میکردند، به این روش تحت تأثیر قرار گرفتند.
این کرم در فایل router_init.js نصب شده و زمانی فعال میشود که بستهی آسیبدیده به صورت دستی توسط توسعهدهنده یا به صورت خودکار در یک محیط یکپارچهسازی مداوم با استفاده از دستورات "npm install"، "pnpm install" یا "yarn install" نصب شود. پس از فعال شدن، کرم سیستم را برای یافتن توکنهای NPM (~/.npmrc)، AWS، GCP، Azure، HashiCorp و KubernetesK8s و همچنین کلیدهای خصوصی SSH جستجو میکند. دادههایی که پیدا میکند از طریق پیامرسان غیرمتمرکز P2P به نام getsession.org برای مهاجمان ارسال میشود.
این کرم طوری طراحی شده بود که در صورت لغو توکن NPM رهگیریشده، اقدامات مخرب انجام دهد. سیستم طوری پیکربندی شده بود که اسکریپت ~/.local/bin/gh-token-monitor.sh را به صورت دورهای اجرا کند، که فعالیت توکن را هر ۶۰ ثانیه با دسترسی به api.github.com/user بررسی میکرد و در صورت لغو توکن، دستور "rm -rf ~/" را اجرا میکرد.
منبع: opennet.ru
