يشكل اكتشاف خمس حزم برمجية خبيثة على منصة npm تهديداً خطيراً لسلسلة إمداد أدوات المطورين، حيث تقوم هذه الحزم بسرقة مفاتيح المحافظ الرقمية الخاصة وإرسالها مباشرة عبر روبوت تيليجرام. يأتي هذا التطور ليقلق مجتمع تطوير العملات المشفرة، خصوصاً مع استهداف الحزم لمطوري بلوكتشين رئيسيين.
تم نشر هذه الحزم تحت اسم المستخدم “galedonovan” على npm، وتم تصميمها لتبدو وكأنها مكتبات موثوقة يستخدمها مطورو سولانا وإيثريوم يومياً. وبمجرد تثبيتها، تعمل هذه الحزم في الخلفية بصمت، حيث تقوم بالتقاط مفاتيح المحافظ الرقمية وإرسالها إلى المهاجم دون إظهار أي أخطاء واضحة للمطور.
حزم npm الخبيثة تستهدف مطوري العملات المشفرة
تستهدف هذه الحملة الأمنية بشكل مباشر كلاً من منظومات البلوكتشين الرئيسية، سولانا وإيثريوم. أربع من هذه الحزم، وهي raydium-bs58، base-x-64، bs58-basic، و base_xd، تستهدف مطوري سولانا من خلال اعتراض استدعاءات دالة decode() بصيغة Base58، وهي الطريقة القياسية لتحميل مفتاح خاص من سلسلة نصية.
أما الحزمة الخامسة، ethersproject-wallet، فتقوم باستهداف مباشر لدالة الباني (constructor) الخاصة بالمحافظ في إيثريوم، وذلك فور تمرير المفتاح الخاص إليها. وفي كلتا الحالتين، يتم إرسال المفتاح الخاص كنص عادي إلى مجموعة تيليجرام قبل اكتمال الدالة الشرعية، مما يمنح المهاجم وصولاً فورياً لسحب أي أموال من المحفظة المتصلة.
آلية سرقة المفاتيح ووسائل التخارج
ووفقاً لباحثي Socket.dev، فإن هذه الحزم الخمس كانت جزءاً من حملة إلكترونية محكمة تعتمد على تقنية “typosquatting”، والتي تعتمد على تسجيل أسماء شبيهة بالأسماء الأصلية لخداع المستخدمين. وقد تم ربط كل حزمة من هذه الحزم بنفس حساب npm، واستخدمت نفس نقطة النهاية لروبوت تيليجرام المخصصة لاستخلاص البيانات.
قادت البنية التحتية للقيادة والتحكم (C2) إلى روبوت تيليجرام واحد، @Test20131_Bot، مع مجموعة استقبال يديرها @crypto_sol3 (الاسم المعروض: Crypto_Dev، معرف المستخدم: 7847516435). نظراً لأن رمز الروبوت ومعرف الدردشة كانا مدمجين في كل حزمة، لم تكن هناك حاجة لخادم وسيط أو نطاق خارجي، حيث تعمل عملية السرقة طالما أن روبوت تيليجرام يبقى فعالاً.
من جهة أخرى، تم سحب حزمة واحدة، base_xd، من npm بعد خمس دقائق فقط من نشرها، لكن الحزم الأربع الأخرى ظلت نشطة وقت اكتشاف التهديد. تمكن ماسح الذكاء الاصطناعي الخاص بـ Socket من اكتشاف حزمة base-x-64 عبر رصد قناة استخلاص مشفرة داخل الملف src/cjs/index.cjs، وتحديد أن البيانات التي تم تمريرها إلى decode() كانت تُرسل إلى روبوت تيليجرام.
وقد تم تقديم طلبات إزالة لجميع الحزم الخمس وحساب الجهة الفاعلة إلى فريق أمن npm. يكمن الخطر بشكل خاص في صعوبة كشف هذه الحزم، حيث إنها تتصرف تماماً مثل الحزم الأصلية. قد يقوم مطور يقوم بتثبيت raydium-bs58 بالحصول على المخرجات الصحيحة، وعدم رؤية أي أخطاء، ولا يكون لديه أي سبب للشك، حتى بينما يتم إرسال مفتاحه الخاص إلى مجموعة تيليجرام غريبة.
تأثير الحملة واستجابة المطورين
يعتمد كل حزمة في هذه الحملة على تقنية تعرف بالـ “function hooking”، حيث يقوم المهاجم بتغليف دالة منتظمة يمرر المطورون من خلالها مفاتيحهم الخاصة. يقوم المهاجم باعتراض المفتاح فور وصوله، ويرسله إلى روبوت تيليجرام، ثم يعيد التحكم إلى الدالة الأصلية ليبدو كل شيء طبيعياً.
في حزمة raydium-bs58، تقوم دالة decode() المعدلة باستدعاء sendMessage() مع المفتاح قبل تنفيذ عملية فك التشفير الفعلية، لذلك يتم إرسال المفتاح حتى لو فشلت عملية فك التشفير نفسها. أما في حزمة base-x-64، فإن الحمولة الخبيثة مخفية خلف شفرة دوران مصفوفة تشوه عنوان URL الخاص بتيليجرام، ورمز الروبوت، ومعرف الدردشة، مما يجعل اكتشافها أثناء مراجعة الكود أمراً صعباً.
من ناحية أخرى، لا تحتوي حزمة bs58-basic على أي كود خبيث بحد ذاتها؛ بل أنها تدرج base-x-64 كاعتمادية وقت تشغيل وحيدة لها، وبالتالي تحدث السرقة عبر سلسلة اعتماديات انتقالية دون وجود أي علامات حمراء واضحة. أما حزمة ethersproject-wallet، فتقوم بنسخ الإصدار الشرعي @ethersproject/wallet 5.8.0 بشكل شبه مثالي، مع إدخال سطر واحد فقط بعد خطوة بناء TypeScript، وهو ما أكدته عدم مطابقة بين خرائط المصدر (source maps) والمخرجات المترجمة.
ينصح بأن أي مطور قام بتثبيت هذه الحزم ينبغي أن يعتبر كل مفتاح خاص مر عبرها على أنه تم اختراقه بالكامل. يجب نقل الأموال وتدوير المفاتيح دون تأخير. تشتمل البدائل الشرعية على bs58، base-x، والحزمة المسماة @ethersproject/wallet من مستودع ethers.js الرسمي. ويجب مراجعة الاعتماديات الانتقالية، حيث أن bs58-basic تقوم بسحب base-x-64 بصمت.
وبالنظر إلى المستقبل، يجب التعامل مع أي حزمة npm تعيد تصدير أداة تشفير ذات غلاف رقيق، أو تحتوي على كود مشفر بالقرب من منطق معالجة المفاتيح، بحذر شديد حتى يثبت العكس.

