دودة في npm تسرق مفاتيح المطوّرين وتستهدف Claude Code
حزم مصابة داخل شجرة الاعتمادات تسرق رموز الدخول وتنسخ نفسها، وفتح المستودع في محرر موثوق قد يكفي لتشغيل الهجوم.
ترصد شركة Socket Security هجومًا نشطًا على سلسلة توريد حزم npm يسرق رموز npm وGitHub ومفاتيح السحابة من أجهزة المطوّرين. الحزم المصابة تنسخ نفسها إلى حزم أخرى باستخدام هوية الضحية، وتزرع خطافات تشغيل في ملفات Claude Code وVS Code. المستخدم العادي لأدوات الدردشة غير معرّض، الخطر يخصّ بيئات التطوير.
أبرز النقاط
- الحصيلة المعلنة عند نشر التقرير: 2,236 نسخة حزمة مصابة في 444 حزمة، والرقم متحرّك لأن الحملة نشطة
- البداية كانت في عائلتي keyv و cacheable، وهما اعتماد غير مباشر داخل أدوات شائعة مثل eslint
- البرمجية تسرق رموز npm وGitHub وبيانات AWS وGCP وAzure وVault وKubernetes ثم ترسلها مشفّرة
- تزرع خطافات في .claude/settings.json و.vscode/tasks.json، فيكفي فتح المستودع أو منحه الثقة
- احذر: تبديل الرموز من جهاز مصاب قد يفعّل مفتاح انتقام مزروع يراقب صلاحية رمز GitHub
2,236 حزمة مصابة، والعدد لا يتوقف
تتابع شركة الأمن Socket Security هجومًا نشطًا على سلسلة توريد حزم npm (المخزن الرسمي لمكتبات JavaScript التي يستخدمها ملايين المطوّرين). بدأ الهجوم بعائلتي حزم شائعتين هما keyv و cacheable، ثم انتقل إلى حزم يملكها مشرفون آخرون.
لحظة نشر التقرير، أظهر متتبّع الحملة الحي 2,236 نسخة حزمة مصابة موزّعة على 444 حزمة فريدة. الرقم قابل للتغيّر لأن الحملة تنشر نفسها تلقائيًا.
الحزم المتأثرة تُحمّل عشرات ملايين المرات أسبوعيًا، وغالبًا تكون مدفونة في عمق شجرة الاعتمادات. مسار واحد يوضح الفكرة: eslint ثم file-entry-cache ثم flat-cache ثم keyv. أي أنك قد تكون مصابًا دون أن تضيف الحزمة بنفسك يومًا.
لماذا يهمّك
إن كنت تكتب كودًا، أو تشغّل خطوط بناء آلية (CI)، أو تستخدم مساعدًا برمجيًا مثل Claude Code، فجهازك هدف مباشر. المفاتيح المسروقة تعني وصولًا إلى مستودعاتك وسحابتك وحزمك المنشورة.
وللتوضيح قبل انتشار الذعر: قراءة هذا الخبر أو استخدام محادثة عادية في ChatGPT لا يصيب حاسوبك. الخطر محصور بأجهزة التطوير وخوادم البناء وبيئات البرمجة بالذكاء الاصطناعي التي تستنسخ كودًا أو تفتحه أو تثبّت اعتماداته.
الأخطر أن الضرر لا يتوقف عندك. إن سُرق رمز النشر الخاص بك، تصبح حزمك أنت أداة لإصابة عملائك ومستخدميك.
سطر واحد في package.json يفتح الباب
الحزم المصابة تحتوي خطّاف تثبيت مسبق بسيط الشكل: "preinstall": "node setup.mjs". أي أمر يُنفَّذ تلقائيًا قبل أن تكتمل عملية التثبيت.
الملف setup.mjs ينزّل بيئة تشغيل Bun مستقلة، ثم يستخدمها لتنفيذ حِمل مموّه باسم Math_Symbol.js. اختيار بيئة تشغيل خارجية يساعد على تجاوز أدوات المراقبة المعتادة.
بعد ذلك تعمل المكتبة الأصلية بشكل طبيعي، فيبدو التثبيت ناجحًا تمامًا. النظام يكون قد اختُرق فعلًا. ما تبحث عنه البرمجية يشمل:
- رموز النشر في npm ورموز GitHub وبيانات خطوط البناء الآلية
- بيانات AWS وبيانات تعريف النسخة، ومفاتيح حسابات خدمة GCP، وأسرار عملاء Azure
- رموز HashiCorp Vault ورموز حسابات خدمة Kubernetes
- المفاتيح الخاصة ورموز الوصول وأي أسرار في الملفات أو متغيرات البيئة أو العمليات الجارية
تُشفَّر البيانات المسروقة وتُرسل عبر مستودعات GitHub يسيطر عليها المهاجم، وعبر عناوين يحلّها نظام أسماء النطاقات DNS.
كيف تنتقل الإصابة من مطوّر إلى آخر
هنا يظهر وصف الدودة. بعد سرقة رمز npm الخاص بالضحية، تبحث البرمجية عن الحزم الأخرى التي يملك هذا الحساب صلاحية نشرها.
ثم تنفّذ الخطوات نفسها آليًا: تنزّل الحزمة، تحقن الخطّاف والحِمل الخبيث، ترفع رقم الإصدار، وتنشر النسخة المصابة باستخدام هوية الضحية. بهذه الطريقة خرج الهجوم من حزم مشرف keyv و cacheable إلى حزم أفراد ومؤسسات أخرى.
والمفاجأة أن التوقيع الرقمي لم يكن حصنًا. أُفيد بأن [email protected] صدر بإثبات منشأ صالح من npm وSigstore، لأن خط الإصدار الشرعي بنى كودًا مصدريًا كان مخترقًا سلفًا. التوقيع أثبت من بنى الحزمة، لا أن الكود الداخل إلى البناء سليم.
فتح المجلد في Claude Code قد يكفي
لم يكتفِ المهاجمون بمسار npm. زرعوا خطافات تنفيذ إضافية داخل المستودعات المصدرية نفسها:
- .claude/settings.json يحتوي خطّاف SessionStart خاص بـ Claude Code
- .vscode/tasks.json يحتوي مهمة تُشغَّل عند فتح المجلد في VS Code
- math_init.js يحمل الحِمل الخبيث ذاته
هذه الخطافات قد تُنفَّذ عند فتح مستودع مستنسخ داخل مساعد برمجي أو محرر موثوق، بحسب إعدادات الثقة والموافقة في كل أداة. المعنى العملي: المهاجم لا يحتاج بالضرورة أن تكتب npm install.
مجرد فتح المستودع أو منحه الثقة في Claude Code أو VS Code يمنح مسار تنفيذ منفصلًا تمامًا عن حزم npm.
لا تبدّل مفاتيحك من جهاز مصاب
هذه أهم فقرة في الخبر. البرمجية تزرع آلية بقاء توصف بأنها مفتاح انتقام، على أنظمة macOS وLinux، عبر خدمة باسم gh-token-monitor.
الخدمة تفحص باستمرار ما إذا كان رمز GitHub المسروق ما زال صالحًا. عند إبطال الرمز أو تبديله وبدء إرجاعه استجابة خطأ من نوع 4xx، تنفّذ الخدمة أمرًا يحدّده المهاجم.
لذلك لا تبدأ بتبديل بيانات الدخول من جهاز قد يكون مصابًا. اعزل النظام أولًا، أزل مراقب الرمز والحِمل الخبيث، ثم نفّذ التبديل من جهاز آخر تثق بنظافته.
مؤشرات يمكن البحث عنها: ~/.local/bin/gh-token-monitor.sh و ~/.config/gh-token-monitor/ و ~/Library/LaunchAgents/com.user.gh-token-monitor.plist و ~/.config/systemd/user/gh-token-monitor.service وسجلات في /tmp بالاسم نفسه. أضف إليها الملفات: setup.mjs و Math_Symbol.js و math_init.js وأي ملف يبدأ بـ bun-dl.
ماذا تفعل اليوم عمليًا
الإجراءات التي أوصى بها التقرير مباشرة وقابلة للتنفيذ الآن:
- أوقف تحديث أو تثبيت الحزم المتأثرة حتى تنتهي الحملة.
- ثبّت الاعتمادات على إصدارات محددة معروفة السلامة، بدل نطاقات المدى مثل ^ أو ~.
- أعد بناء ملفات القفل (lockfiles) وراجعها سطرًا سطرًا.
- اعتمد على متتبّع الحملة الحي لدى Socket بدل قائمة حزم ثابتة، فالوضع يتغيّر.
- استخدم مؤقتًا npm ci --ignore-scripts أو npm install --ignore-scripts.
خيار ignore-scripts يمنع تشغيل خطافات npm مثل preinstall وpostinstall. لكن له ثمن: قد يعطّل خطوات إعداد ضرورية لحزم شرعية، وهو لا يحميك من خطافات .claude و.vscode المنفصلة.
قبل فتح أي مستودع غير مألوف على جهازك، افتح وافحص يدويًا: .claude/settings.json و.vscode/tasks.json وpackage.json. ولا تمنح الثقة تلقائيًا لمساحات عمل مجهولة، ولا توافق على خطافات بدء تشغيل لم تتوقعها.
من ثبّت إصدارًا متأثرًا مع تفعيل سكربتات دورة الحياة، أو شغّل خطافات المستودع، أو نفّذ سلسلة بناء آلية مصابة، فعليه التعامل مع البيئة كأنها مخترقة. بعد العزل والتنظيف، أبطل كل بيانات الدخول التي كانت متاحة من هذا الجهاز، وراجع npm بحثًا عن إصدارات لم تنشرها، وGitHub بحثًا عن مستودعات أو تعديلات غريبة.
بالنسبة للمنطقة العربية
لا يوجد في هذا الهجوم أي حدود جغرافية. مخزن npm واحد للعالم كله، ومن يشغّل npm install في الرياض أو القاهرة أو عمّان يسحب الحزمة نفسها التي يسحبها مطوّر في سان فرانسيسكو.
الفئات الأكثر تعرّضًا في المنطقة واضحة من طبيعة الهجوم:
- الشركات الناشئة والفرق الصغيرة: كثير منها يعمل بحساب npm أو GitHub واحد مشترك، وسرقة رمز واحد تكشف كل شيء.
- المطوّرون المستقلون: من يستنسخ مستودعات من الإنترنت ويفتحها فورًا في VS Code أو Claude Code معرّض لمسار الخطافات.
- وكالات التطوير التي تخدم عملاء متعددين: مفاتيح سحابية لعدة عملاء على جهاز واحد تعني ضررًا يتجاوز الوكالة نفسها.
- الطلاب والمتعلمون: مشاريع الدروس تعتمد بكثافة على أدوات مثل eslint، وهي بوابة الوصول غير المباشر إلى keyv.
هناك عامل يستحق صراحة: الاعتماد المتزايد على المساعدات البرمجية جعل خطوة فتح المستودع ومنح الأداة الثقة عادة يومية سريعة. هذه العادة هي بالضبط ما يستغله المهاجم هنا.
ما يمكن فعله اليوم بلا تكلفة: راجع إعدادات الثقة في محرّرك ومساعدك البرمجي، وافحص ملفات الخطافات قبل فتح أي مستودع جديد، وافصل مفاتيح الإنتاج عن جهاز التطوير. ولم يصدر أي إعلان عن جهة رسمية في المنطقة بشأن هذه الحملة حتى الآن، فالمسؤولية على الفرق نفسها.
الخلاصة
الهجوم نشط ويتوسّع، وقوته في أنه يعمل على مسارين: تثبيت الحزم، وفتح المستودعات في بيئات تطوير موثوقة. التوقيع الرقمي لم يمنعه، وشجرة الاعتمادات العميقة أوصلته إلى أجهزة لم تختره.
الأولوية الآن ثلاث خطوات بهذا الترتيب: أوقف التثبيت غير الضروري، افحص جهازك بحثًا عن مؤشرات gh-token-monitor، ثم بدّل بياناتك من جهاز نظيف فقط. أي ترتيب آخر قد يفعّل ما زُرع في نظامك.
أسئلة شائعة
هل أنا في خطر إذا كنت أستخدم ChatGPT أو Claude للدردشة فقط؟
ما هي الحزم المصابة بالتحديد؟
كيف أعرف أن جهازي مصاب؟
لماذا يُحذَّر من تبديل كلمات المرور والرموز فورًا؟
هل يكفي أمر npm install --ignore-scripts للحماية؟
كيف صدرت حزمة مصابة بتوقيع رقمي صالح؟
لماذا توصف هذه البرمجية بالدودة؟
المصادر
- فريق الراصد إعداد وتحرير بالعربية
- r/ChatGPT المصدر الأصلي
مراجع إضافية
أعدّ فريق الراصد هذا التقرير بالعربية اعتمادًا على ما نشرته r/ChatGPT، مع تحقّق مستقل وإضافة السياق العربي. الرابط الأصلي مذكور أعلاه.
النقاش (0)
لا توجد تعليقات بعد. كن أول من يشارك برأيه.
كل ما يهمّك في الذكاء الاصطناعي، في 60 ثانية يوميًا
نرصد المئات من المصادر ونرسل لك الخلاصة فقط. بلا حشو، وبلا رسائل مزعجة.