حمله زنجیره تأمین PyTorch Lightning بهعنوان یکی از جدیدترین تهدیدات امنیتی در اکوسیستم متنباز شناسایی شده است؛ رخدادی که طی آن نسخههای آلوده یک پکیج محبوب پایتون در مخزن PyPI منتشر شدند. در جریان حمله زنجیره تأمین PyTorch Lightning مهاجمان با انتشار نسخههای مخرب، توسعهدهندگان و محیطهای CI/CD را هدف سرقت گسترده اعتبارنامهها قرار دادند. بررسیها نشان میدهد این رخداد بخشی از کمپین گسترده Mini Shai‑Hulud است که پیشتر اکوسیستمهای npm و Packagist را نیز هدف قرار داده بود.
انتشار نسخههای مخرب در حمله زنجیره تأمین PyTorch Lightning
بر اساس گزارش شرکتهای امنیتی Aikido Security، Socket، StepSecurity و OX Security، دو نسخه مخرب از پکیج Lightning در مخزن Python Package Index (PyPI) منتشر شدهاند:
- نسخه 2.6.2
- نسخه 2.6.3
این نسخهها در تاریخ 30 آوریل 2026 منتشر شده و مدت کوتاهی بعد توسط مدیران PyPI مسدود شدند. فریمورک PyTorch Lightning یک پروژه متنباز محبوب است که رابط سطح بالایی برای فریمورک PyTorch فراهم میکند و با بیش از 31 هزار ستاره در GitHub، به هدفی جذاب برای مهاجمان تبدیل شده است.
نحوه عملکرد بدافزار در حمله زنجیره تأمین PyTorch Lightning
مهاجمان در نسخههای آلوده، یک دایرکتوری مخفی با نام runtime به پکیج اضافه کردهاند که شامل یک دانلودر و یک پیلود JavaScript مبهمسازیشده است.
به محض نصب پکیج و import شدن ماژول lightning، زنجیره اجرای بدافزار به طور خودکار و بدون نیاز به تعامل کاربر فعال میشود.
در این زنجیره:
- اسکریپت py اجرا میشود.
- Bun JavaScript Runtime دانلود میشود.
- فایل مخرب js با حجمی حدود 11 مگابایت اجرا میشود.
هدف اصلی این پیلود، جمعآوری گسترده اعتبارنامهها از سیستمهای توسعهدهنده است.
سرقت اعتبارنامهها و سوءاستفاده از توکنهای GitHub
بدافزار در جریان حمله زنجیره تأمین PyTorch Lightning طیف گستردهای از اطلاعات حساس را جمعآوری میکند، از جمله:
- توکنهای GitHub و npm
- کلیدهای SSH
- اعتبارنامههای ابری
- دادههای Kubernetes و Vault
- اعتبارنامههای Docker
- فایلهای .env
- اطلاعات محیطهای CI/CD
پس از سرقت دادهها، توکنهای GitHub ابتدا از طریق endpoint زیر اعتبارسنجی میشوند:
- github.com/user
در صورت معتبر بودن توکن، مهاجم از آن برای انتشار یک پیلود شبیه به کرم رایانهای (worm-like) استفاده میکند که میتواند تا 50 شاخه (branch) در مخازن قابل نوشتن توسط آن توکن را آلوده کند. این عملیات به صورت Upsert انجام میشود؛ یعنی اگر فایل مورد نظر وجود نداشته باشد، ایجاد میشود و در صورت وجود، بدون بررسی قبلی بازنویسی خواهد شد.
در این فرآیند:
- فایلهای جدید ایجاد میشوند
- فایلهای موجود بدون بررسی قبلی بازنویسی میشوند.
- کامیتها با هویتی جعلی ایجاد میشوند و به اشتباه به نام Claude Code از شرکت Anthropic ثبت میگردند.
انتشار بدافزار در npm با استفاده از Hookهای نصب
یکی از ویژگیهای خطرناک این حمله، توانایی انتشار بدافزار در زنجیره وابستگیها است. بدافزار با دستکاری پکیجهای npm در سیستم توسعهدهنده به این صورت عمل میکند:
- یک postinstall hook مخرب در فایل json اضافه میکند.
- نسخه پچ پکیج را بهروزرسانی میکند.
- پکیج را مجدداً در قالب فایل tgz بستهبندی میکند.
اگر توسعهدهنده بدون اطلاع، این پکیج را منتشر کند، نسخه آلوده وارد npm registry میشود و به کاربران downstream منتقل خواهد شد.
ارتباط حمله زنجیره تأمین PyTorch Lightning با گروه TeamPCP
تحقیقات امنیتی نشان میدهد این عملیات با گروه تهدید سایبری TeamPCPمرتبط است؛ گروهی که پیشتر حملات مشابهی را علیه پروژههایی مانند Checkmarx، Bitwarden، Telnyx، LiteLLM و Aqua Security Trivy انجام داده است. این گروه همچنین اعلام کرده که با گروه شناختهشده LAPSUS$ همکاری نزدیکی دارد و حتی پس از مسدود شدن حساب خود در شبکه اجتماعی X، یک وبسایت Onion در دارکوب راهاندازی کرده است. مهاجمان همچنین مدعی شدهاند که به جای استفاده از ابزارهای رمزنگاری رایج، از ابزار اختصاصی خود به نام CipherForce استفاده میکنند.
آلوده شدن پکیج intercom-client در npm
در ادامه همین کمپین، نسخه 7.0.4 پکیج intercom-client در مخزن npm نیز آلوده شده است. این نسخه با استفاده از یک preinstall hook، پیلود سرقت اعتبارنامه را پیش از نصب اجرا میکند.
تحقیقات نشان میدهد حساب GitHub توسعهدهندهای با نام nhur هک شده و مهاجمان از طریق ایجاد یک شاخه مخرب، workflow خودکار CI را برای انتشار نسخه آلوده فعال کردهاند.
گسترش حمله به اکوسیستم PHP و Packagist
کمپین Mini Shai‑Hulud به اکوسیستم PHP نیز گسترش یافته و نسخه 5.0.2 پکیج intercom/intercom-php در Packagist را آلوده کرده است. این پکیج از طریق اجرای پلاگین Composer (کامپوزر) اسکریپت زیر را اجرا میکند:
- setup-intercom.sh
این اسکریپت:
- Bun Runtime را دانلود میکند.
- پیلود js را اجرا میکند.
- فرآیند سرقت اعتبارنامه را آغاز میکند.
دادههای جمعآوریشده در نهایت به سرور زیر ارسال میشوند:
- masscan[.]cloud:443/v1/telemetry
در صورتی که ارسال دادهها با شکست مواجه شود، بدافزار از توکنهای GitHub سرقتشده برای ایجاد یک مخزن عمومی استفاده میکند و توضیحی با عنوان زیر در آن قرار میدهد:
- یک Mini Shai-Hulud ظاهر شده است.
همچنین بدافزار برای حفظ پایداری (Persistence) تلاش میکند فایلهای مخرب خود را در مسیرهای زیر قرار دهد:
- claude/settings.json
- vscode/tasks.json
ریشه نفوذ: سوءاستفاده از اعتبارنامههای PyPI
بر اساس بررسیهای تیم توسعه Lightning، مخزن GitHub پروژه هک نشده است. در عوض، مهاجم به اعتبارنامههای انتشار در PyPI دسترسی پیدا کرده و با استفاده از این دسترسی:
- کد متنباز پروژه را clone کرده است.
- پیلود مخرب را به کد تزریق کرده است.
- نسخههای آلوده را مستقیماً در PyPI منتشر کرده است.
این نسخهها فقط برای 42 دقیقه در PyPI فعال بودند، اما همین مدت کوتاه برای آلوده کردن سیستمهای زیادی کافی بود. بررسیهای انجامشده در شرکت Intercom نیز نشان میدهد که آلودگی در برخی پروژهها از طریق پکیج pyannote-audio رخ داده است؛ پکیجی که نسخه آلوده Lightning را به عنوان یک وابستگی غیرمستقیم (Transitive Dependency) وارد زنجیره وابستگیها کرده بود. این موضوع نشان میدهد چگونه نفوذ به یک پکیج میتواند به سرعت به سایر اکوسیستمها و پروژهها سرایت کند.
اقدامات فوری برای مقابله با حمله زنجیره تأمین PyTorch Lightning
توسعهدهندگان و تیمهای امنیتی باید اقدامات زیر را انجام دهند:
- مسدود کردن نسخههای 2.6.2 و 2.6.3
- حذف این نسخهها از محیطهای توسعه
- downgrade به نسخه امن 2.6.1
- تغییر تمام اعتبارنامههای در معرض ریسک
- بررسی لاگهای CI/CD برای شناسایی فعالیتهای مشکوک