الأمن السيبراني
Pluto Security تكشف تفاصيل حملة تعدين العملات المشفرة Load/Mine على Hugging Face

نشر فريق الأبحاث في Pluto Security تقريره عن Load/Mine في 29 أكتوبر 2026، كاشفًا عن حملة لتعدين العملات المشفرة وزرع باب خلفي، جرى توزيعها عبر مستودعات نماذج ضارة على Hugging Face. ويحصي التقرير 31 مستودعًا ضارًا موزعة على سبعة حسابات في Hugging Face، إلى جانب نسخة مرآة على ModelScope، مع تسجيل 29,818 عملية تنزيل للحملة، و32,376 عملية تنزيل عند احتساب 13 مستودعًا مرتبطًا بها. وتوضح Pluto أن هذا الرقم يقيس عمليات التنزيل، لا الإصابات المؤكدة أو الضحايا الفريدين.
يقول التقرير، الذي أعدّه Shaked Chen وEitan Chassid وYotam Perkal، إن الحملة عادت بعد أيام من إزالتها للمرة الأولى: فقد سجلت 19 مستودعًا في الموجة الثانية أكثر من 29,000 عملية تنزيل، وظلت متاحة بعد ثمانية أيام من إبلاغ Pluto عنها. ووفقًا للتقرير، تلقت محفظة العائدات في الموجة الأولى نحو 2,276 PRL، أي ما يقارب 5,000 دولار، من عائدات التعدين على السلسلة.
آلية تنفيذ الشيفرة الضارة
تعتمد الحملة على سلوك موثّق في Transformers لتحميل النماذج، لا على أوزان ملغومة. ويؤدي تحميل مستودع باستخدام trust_remote_code=True إلى استيراد شيفرة Python الخاصة بالمستودع بصلاحيات الجهة المستدعية قبل تحميل أي أوزان. ويستخدم المستودع config.json يستخدم auto_map لتحديد وحدة Python والفئة المراد تحميلهما؛ وتُنزل Transformers الملف المشار إليه إلى ذاكرة التخزين المؤقت للوحدات، كما أن exec_module() يُشغّل الاستدعاء الشيفرة الموجودة في المستوى الأعلى من الملف قبل إرجاع فئة النموذج المطلوبة. ويشير التقرير إلى أن هذا سلوك موثّق، وليس سلوكًا افتراضيًا، وأن سياسة الأمان في Transformers توجّه المستخدمين إلى التحقق من محتوى ملفات النمذجة عند استخدام الوسيطة. ويستشهد التقرير أيضًا بالثغرة CVE-2026-22807، التي حمّلت فيها إصدارات vLLM من 0.10.1 وحتى الإصلاح في 0.14.0 auto_map الوحدات من دون التحقق من إعداد trust_remote_code ، ما أتاح لمستودع ضار تشغيل الشيفرة عند بدء تشغيل الخادم.
اكتشاف الحسابات والربط بينها
أنشأت Pluto ماسحًا يفحص كل .py ملف مشار إليه بواسطة auto_map في config.json، إلى جانب ملفات Python الموجودة بجوار أوزان النماذج، ويرصد أنماطًا مثل subprocess, socket, ctypes, memfd_create وفك ترميز Base64. وكان أول اكتشاف dsxk4mr8tq/qwen2-tiny-gpt2، الذي تضمن ملفًا من 305 أسطر اسمه modeling_evil.py؛ وكان الحساب يضم ستة مستودعات أُنشئت خلال ساعتين ونصف في 12 أكتوبر 2026.
جاء كشف الصلة بين الحسابات من ملفات النسخ الاحتياطية. فقد احتوى مستودع qwen2-tiny-lite على modeling_evil.py.bak-src و modeling_evil.py.bak-sync، وهما إصداران أقدم من البرمجية الخبيثة نفسها، وكانت عناوين URL الخاصة بالتنزيل فيهما تشير، لا إلى الحساب المؤقت، بل إلى hhzz667 على Hugging Face و wssb123e على ModelScope. ويقول التقرير إن المشغّل نسخ شيفرة الإنتاج إلى حساب اختباري، وحدّث عناوين URL في الملف الرئيسي، لكنه نسي ملفات النسخ الاحتياطية. وبلغت الموجة الأولى 12 مستودعًا موزعة على ثلاثة حسابات ومنصتين، وسُجلت أكثر من 700 عملية تنزيل قبل الإزالة، من دون أي تنبيهات أمنية.
تركيب الحمولة الضارة
باختيار MENXIANGYU/qwen2-tiny بوصفه إصدارًا نموذجيًا، يصف التقرير حمولة تبدأ بإنشاء /tmp/.cch/svc.py، وهي آلية مراقبة تعيد تشغيل أداة التعدين المتوقفة كل 120 ثانية، مع إضافة خطافات التشغيل إلى /root/.bashrc, /root/.profile و .bashrcالخاصة بالمستخدم. وتضيف ثلاثة إصدارات صدفة عكسية تتصل بالعنوان 212.32.253.3 عبر المنفذين 443 أو 9443، وتعيد المحاولة بعد كل انقطاع.
ويُشغّل الملف التنفيذي لأداة التعدين، syscore.bin، عبر memfd_create و fexecve مع تمويهه على هيئة عامل النواة kworker/u20:1، فلا يُترك أي مسار للملف التنفيذي على القرص عند التشغيل الأول، فيما تبقى نسخة احتياطية في /tmp/.cch/sync. والملف التنفيذي، حجمه 40.6 MB، مضغوط باستخدام UPX، وقد عُدّل اثنان من علامات UPX! إلى PEK! ، ما يجعل أداة فك الضغط القياسية ترفضه؛ وأعادت Pluto العلامات إلى حالتها الأصلية وفكّت ضغط أداة تعدين تُسمى peakminer، وشغّلتها باستخدام عناوين مجمّع التعدين واسم الدخول krxXJ2PKQW.worker. وتُكتب إيصالات التقدم في سجل نماذج Xinference المحلي على هيئة qwen2-tiny- تليها رموز حالة بترميز Base32، كما تزيل الحمولة تسجيلات أدوات التعدين المنافسة وتنهي العمليات المطابقة.
موجتان وتكيّف بعد الإزالة
يرجع التقرير الموجة الأولى إلى الحساب hhzz667، الذي أُنشئ في 29 أبريل 2026 وظل خامدًا خمسة أشهر. وفي 21 سبتمبر 2026 نشر qwen2-shell، وهو باب خلفي عبر SSH من 37 سطرًا يزرع مفتاح ed25519 في authorized_keys ، مع إشارة اتصال إلى خادم Alibaba Cloud؛ وقد نُسخ ملف README الخاص به من بطاقة النموذج الرسمية Qwen2.5-0.5B. وبحلول 22 سبتمبر، أطلق المشغّل qwen2-final، وهو برنامج تعدين بلا ملفات من 305 أسطر، يتخفى في هيئة خيط من خيوط النواة، ويقتل أدوات التعدين المنافسة، ويرسل تقارير الحالة إلى Xinference تحت أسماء غير مثيرة للريبة مثل Qwen2Config. وكانت تعليقات الشيفرة مكتوبة بالصينية المبسطة.
أبلغت Pluto منصتَي Hugging Face وModelScope بالموجة الأولى، فأُزيلت الحسابات. وتبعتها الموجة الثانية خلال أيام: 19 مستودعًا موزعة على خمسة حسابات، منها MENXIANGYU الذي يضم 13 مستودعًا، بالإضافة إلى wjsbg وsoumikmahato وr1r13 وhtt0118، وقد أُنشئ الحساب الأخير في 25 أكتوبر 2026. أحد المستودعات، MENXIANGYU/qa-whl-1021، نُشر بعد 8.5 ساعات من رسالة الإفصاح التي أرسلتها Pluto، وهو سكربت للهروب من الحاوية إلى المضيف يوصّل أقراص المضيف، ويستهدف دليل GPUStack /var/lib/gpustack ويمنح صلاحية تسجيل الدخول بصفتك المستخدم الجذر على المضيف. ويقيّد برنامج إسقاط لاحق مرحلته الثانية بحسب عنوان IP للمصدر، ويردّ على الطلبات الأخرى باستجابة 403 تتضمن النص “static ip.”. وقد ارتفع عدد تنزيلات المستودع الرئيسي MENXIANGYU/qwen2-tiny من 7,354 في 20 أكتوبر إلى 28,412 في 28 أكتوبر، ما يمثل 97.7% من تنزيلات الموجة الثانية.
عائدات التعدين والضحايا المرصودون
تلقت محفظة الموجة الأولى نحو 2,276 PRL عبر 716 معاملة، وأرسلت نحو 2,241 PRL إلى جهة أخرى، وظلت نشطة على لوحات معلومات مجمعات التعدين العامة في 21 أكتوبر، بعد إزالة مستودعاتها. وعلى Kryptex، أظهرت المحفظة عاملَين متصلَين بالإنترنت يبلّغان عن peakminer/2.16.5 نحو 1,008 PRL، أي ما يقارب 2,237 دولارًا، من المكافآت خلال 30 يومًا وقت التقاط البيانات. وخلال التحليل، انضم تسعة عمال بأسماء تشبه أسماء دفاتر الملاحظات في غضون 90 ثانية من بعضهم بعضًا، وتوقفوا عن إرسال حصص التعدين بعد نحو ست دقائق؛ ويصف التقرير هذا النمط بأنه يتوافق مع عنقود GPU مشترك. أما hl العائلة التي جرى تتبعها بشكل منفصل، والتي تستخدم تنفيذًا مشابهًا وقت الاستيراد، فقد أظهرت محفظة على MoneroOcean تضم 13 عاملًا، ودُفع لها نحو 26 دولارًا خلال شهر تقريبًا.
ثغرة في تغطية أدوات الفحص
لم يُصنَّف أي من مستودعات الموجة الأولى الاثني عشر على أنه ضار، كما أعادت الحمولة الرئيسية للموجة الثانية modeling_evil2.py نتيجة “آمن” في كل أداة فحص شُغّلت، وأفادت JFrog بأنه ليس نموذجًا للتعلّم الآلي، وفقًا لفحوص Pluto. وتنص وثائق فحص البرمجيات الخبيثة لدى Hugging Face على إخضاع كل ملف في المستودع يقل حجمه عن 2 GB لفحص البرمجيات الخبيثة عند كل عملية إيداع. وتوضح وثائق فحص ملفات pickle أن أداة الفحص تجري عمليات فحص لمكافحة الفيروسات باستخدام ClamAV وفحوصًا لاستيراد ملفات pickle، وأن ClamAV لا يغطي ثغرات استغلال ملفات pickle، وأن الفحص «ليس مضمونًا بنسبة 100%»، وتقع مسؤولية التحقق من السلامة على المستخدم. وتذكر Pluto أن مراجعة .py الملفات التي تشير إليها أداة auto_map قبل ضبط علامة التصنيف كانت ستكشف جميع الحمولات في الحملة، وأن إجراء فحص ثابت عند التحميل بحثًا عن subprocess, socket, ctypes أو استدعاءات إلى عناوين IP خام في auto_mapالملفات المشار إليها كان سيكشفها في وقت أبكر.
تقييم الإسناد والخطوات الموصى بها
تقدّر Pluto أن الجهة المشغلة فرد أو مجموعة صغيرة ناطقة بالصينية، وتعمل بدافع مالي، مستندةً إلى وجود تعليقات بالصينية المبسطة، وخادم للتحكم والسيطرة على Alibaba Cloud، ونسخ مطابقة على ModelScope وhf-mirror.com، واستهداف يفترض استخدام Xinference وTencent Cloud، وتجمّع النشاط بين 18:38 و21:19 بالتوقيت العالمي المنسق. ويحتوي إصدار “parasit” من soumikmahato على تعليقات باللغة الإندونيسية، وهو ما يقول التقرير إنه يتوافق إما مع وجود جهة مشغلة ثانية في المجال الضيق نفسه، أو مع جهة واحدة تشغّل مسارًا يبدو مختلفًا عمدًا.
ويوصي التقرير كل من حمّل نموذجًا مدرجًا مع تفعيل الشيفرة المخصصة بفحص المضيفات بحثًا عن /tmp/.cch/، وعمليات غير متوقعة svc.py ، وعملية kworker/u20:1 تتضمن وسيطاتها أوامر تعدين، أو بيانات مشفّرة qwen2-tiny- أو ezv- تسجيلات في Xinference، واتصالات بالخوادم ومجمعات التعدين المدرجة. وتوصي Pluto بعزل الأجهزة المتأثرة، والحفاظ على الأدلة، وإزالة جميع سبل الاستمرارية، وتغيير بيانات الاعتماد المكشوفة من جهاز نظيف، وإعادة بناء الأنظمة انطلاقًا من صورة موثوقة عندما يتعذر التحقق من سلامة المضيف، وفرض المصادقة على واجهة برمجة تطبيقات Xinference، وتثبيت إصدارات النماذج التي خضعت للمراجعة. وتقول Pluto إنها تتوقع مزيدًا من الحملات من هذا النوع، وإنها تتابعها.












