تحقیقات تیم Socket Threat Research یک حمله پیچیده زنجیره تأمین را در مخزن NuGet فاش کرده است؛ جایی که ۹ پکیج منتشرشده توسط کاربری با نام مستعار shanhai666 شامل Payloadهای مخرب زماندار هستند که میتوانند اپلیکیشنهای پایگاهداده و سیستمهای کنترل صنعتی را در تاریخهای خاص از بین ببرند.
این پکیجها بین سالهای ۲۰۲۳ تا ۲۰۲۴ منتشر شدهاند و تا امروز بیش از ۹٬۴۸۸ بار دانلود شدهاند. نکته مهم اینجاست که ۹۹٪ از کد هر پکیج واقعی و کاربردی است و تنها حدود ۲۰ خط کد مخرب در میان هزاران خط کد سالم پنهان شده است.
«این طراحی هوشمند باعث میشود پکیجها در ظاهر حرفهای، کاربردی و قابلاعتماد باشند، از بررسیهای کد عبور کنند و حتی در پروژههای واقعی مورد استفاده قرار گیرند—تا زمانی که در تاریخ مشخص، ناگهان برنامه را از کار بیندازند یا دادهها را تخریب کنند.»
ساختار فنی حمله: تزریق از طریق Extension Method
هستهی فنی این حمله استفاده از الگوی تزریق Extension Method در زبان C# است. مهاجم از این ویژگی برای افزودن توابع جدید به کلاسهای موجود بدون تغییر در کد اصلی استفاده کرده و از آن برای تزریق منطق مخرب به تمام عملیات پایگاه داده و PLC بهره برده است.
«بدافزار از Extension Methodها برای افزودن منطق مخرب به APIهای استاندارد استفاده میکند، بهگونهای که تمام عملیات دیتابیس و PLC بهصورت نامحسوس آلوده میشوند.»
دو متد مخرب اصلی عبارتند از:
-
.Exec()برای اجرای دستورات دیتابیس -
.BeginTran()برای ارتباطات PLC
هر دو متد حاوی شرطهای زمانی و احتمالی هستند که میتوانند پس از تاریخهای خاص، برنامه را خاتمه دهند یا دادهها را خراب کنند.
منطق تخریب زماندار
Socket اعلام کرده است که بیشتر پکیجهای مخرب دارای تاریخهای تریگر هاردکد شده مانند ۸ اوت ۲۰۲۷ و ۲۹ نوامبر ۲۰۲۸ هستند. پس از این تاریخها، با هر بار اجرای Query یا عملیات PLC، بدافزار عددی تصادفی بین ۱ تا ۱۰۰ تولید میکند و اگر مقدار بیش از ۸۰ باشد، برنامه را فوراً متوقف میکند:
if (DateTime.Now > triggerDate && new Random().Next(1,100) > 80)
Process.GetCurrentProcess().Kill();
با وجود احتمال ۲۰٪، برنامههایی که صدها Query در دقیقه اجرا میکنند، در چند ثانیه از کار میافتند.
| نوع سیستم | نرخ Query | زمان تقریبی تا Crash |
|---|---|---|
| فروشگاه آنلاین | ۱۰۰ در دقیقه | ۳ ثانیه (خرابی در حین پرداخت) |
| سامانه درمانی | ۵۰ در دقیقه | ۶ ثانیه (از کار افتادن بحرانی) |
| مالی | ۵۰۰ در دقیقه | کمتر از ۱ ثانیه (اختلال کامل سرویس) |
| صنعتی (Sharp7Extend) | ۱۰ عملیات در دقیقه | ~۳۰ ثانیه (خرابی PLC و تخریب دادهها) |
نمونه خاص: Sharp7Extend
پکیج Sharp7Extend پیشرفتهترین نمونه این کمپین است و سیستمهای اتوماسیون صنعتی (Industrial Control Systems) را هدف قرار میدهد. این پکیج وانمود میکند نسخهای ارتقاءیافته از کتابخانه واقعی Sharp7 برای کنترلکنندههای منطقی زیمنس (Siemens S7 PLCs) است.
«Sharp7Extend نسخه اصلی Sharp7 (v1.1.79) را در خود دارد تا رفتار واقعی کتابخانه را تقلید کند و در تستها کاملاً سالم به نظر برسد.»
اما در پشت صحنه، دو مکانیسم تخریب فعال دارد:
-
خاموشسازی تصادفی فرآیندها: با احتمال ۲۰٪ در هر ارتباط PLC تا تاریخ ۶ ژوئن ۲۰۲۸
-
خرابی خاموش دادهها: پس از گذشت ۳۰ تا ۹۰ دقیقه، حدود ۸۰٪ از عملیات نوشتن در PLC شکست میخورند بدون هیچ هشدار ظاهری
این دو مرحله باعث میشوند خطاها تصادفی یا ناشی از «مشکل سختافزار» به نظر برسند و بدافزار مدت زیادی ناشناخته باقی بماند.
تاکتیکهای فریب و منشأ احتمالی
مهاجم برای جلب اعتماد توسعهدهندگان سه پکیج سالم نیز منتشر کرده تا سابقهی معتبری در NuGet ایجاد کند. او همچنین فیلدهای نویسنده (.nuspec author) را جعل کرده تا سیستمهای امنیتی مبتنی بر شهرت را دور بزند.
در تحلیل DLLها، Socket نشانههایی از منبع چینی یافته است:
-
وجود نظراتی به زبان چینی مانند «出现异常» (خطا رخ داد) و «连接失败» (اتصال ناموفق)
-
نام مستعار shanhai666 که از واژهی چینی «山海» (کوه و دریا) و عدد عامیانهی «۶۶۶» (به معنی عالی یا روان) گرفته شده است.
مایکروسافت و NuGet در حال بررسی گزارش Socket هستند، اما تا زمان انتشار گزارش، پکیجهای مخرب هنوز در مخزن NuGet فعال بودهاند.

یک نظر