در تاریخ ۲۱ اکتبر ۲۰۲۶، نسخه آلوده 1.107.0 از پکیج LiteLLM در مخزن PyPI منتشر شد که منجر به یک حمله زنجیره تأمین (Supply Chain Attack) گسترده گردید. این نسخه مخرب از فایلهای خاصی استفاده میکند که در هنگام راهاندازی مفسر Python (Python Interpreter) به صورت خودکار اجرا میشوند. نکته بسیار مهم این است که برای اجرای بارگذاری مخرب (Payload)، نیازی به فراخوانی یا Import کردن مستقیم کتابخانه LiteLLM در کد برنامه نیست؛ بلکه صرفاً اجرای Python در محیط آلوده برای فعالسازی حمله کافی است.
مکانیزم اجرای مخرب
تحلیلهای انجام شده نشان میدهد که مهاجمان از دو مسیر اصلی برای اجرا استفاده کردهاند:
- استفاده از فایلهای .pth: فایل
cook.pthباعث میشود که کد مخرب در هنگام شروع به کار Python بارگذاری شود. - ماژول sitecustomize: در سیستمهای مبتنی بر Unix، فایل
sitecustomize.pyیک مسیر اجرای مجزا را فراهم میکند که میتواند کدهای اضافی را از راه دور دریافت و اجرا کند.
هدف حمله و سرقت دادهها
این بدافزار به دنبال جمعآوری اعتبارنامهها (Credentials) از طیف وسیعی از ابزارها است، از جمله:
- ابزارهای توسعهدهندگان و دسترسیهای GitHub
- اعتبارنامههای سرویسهای ابری (Cloud Credentials)
- دادههای مرورگر و کلیدهای SSH
- اطلاعات حساس موجود در پایگاه داده LiteLLM Proxy
پس از جمعآوری، دادهها با استفاده از الگوریتم AES-256-CBC رمزنگاری شده و به یک سرور تحت کنترل مهاجم ارسال میشوند.
ریشه حمله و روش نفوذ
بر اساس گزارشها، مهاجمان با سرقت اعتبارنامههای GitHub توسعهدهندگان، توانستهاند جریان کاری انتشار (Release Workflow) را تغییر داده و پکیج را در یک مخزن مشابه اما جعلی (Berri-AI/litellm) منتشر کنند. این روش باعث شده است که کاربران به جای مخزن اصلی (BerriAI/litellm)، نسخه آلوده را دریافت کنند.
اقدامات اصلاحی و توصیهها
حذف ساده پکیج یا تگ نسخه، برای پاکسازی کامل محیط کافی نیست. سازمانها باید اقدامات زیر را انجام دهند:
- پاکسازی کامل محیطهای Python و حذف فایلهای باقیمانده در دایرکتوریهای کتابخانه.
- تغییر تمامی اعتبارنامهها، کلیدهای API و رمزهای عبوری که در محیطهای آلوده در دسترس بودند.
- بررسی فرآیندهای فعال و سیستمهای CI/CD که از این پکیج استفاده کردهاند.