| |

كيف تحوّل 66 سطرًا من JavaScript إضافة Claude Code إلى باب خلفي عبر SSH؟ شرح كامل لمراحل الهجوم الست

كيف تحوّل 66 سطرًا من JavaScript إضافة Claude Code إلى باب خلفي عبر SSH؟ شرح كامل لمراحل الهجوم الست

ملاحظة الكاتب: تحليل حادثة إضافة Claude Code الخبيثة في سوق إضافات Cursor، مع توضيح كيفية تشغيل أداة التحميل المسبقة المؤلفة من 66 سطرًا، وكيفية عمل مجموعتي مفاتيح SSH مع النفق العكسي، وما ثبت من الاستنتاجات وما لم يثبت، وكيف يمكن للمطورين التحقق من أجهزتهم.

في 29 أكتوبر 2026، ظهرت نسخة تم العبث بها من إضافة anthropic.claude-code في سوق إضافات VS Code الخاص بـ Cursor. واكتشف الباحثون في بداية ملف extension.js الخاص بها أداة تحميل مكتوبة بـ JavaScript من نحو 66 سطرًا. وبمجرد أن يحمّل المحرر هذه الوحدة، تحاول الأداة زرع باب خلفي دائم عبر SSH على جهاز المطور.

هذا ليس مجرد خبر غير مؤكد. فقد نشرت كل من Cursor في إعلانها الأمني الرسمي، وMicrosoft Security Research، وPhorion، وStepSecurity، وOpenSourceMalware، وExpel تحليلات للحادثة. كما حققت Expel في 4 حوادث حقيقية لدى عملائها. وحتى 1 نوفمبر، كانت StepSecurity قد أضافت مقارنة دقيقة للعينات، لتصبح الصورة التقنية شبه مكتملة.

الخلاصة: في 3 دقائق، ستفهم ما الذي تفعله هذه الأسطر الـ66، ولماذا لا يحتاج المستخدم إلى تنفيذ أي أمر خطير لتفعيلها، ولماذا لا يمكن التأكد من سلامة الجهاز بمجرد إزالة الإضافة.

66-lines-javascript-claude-code-extension-ssh-backdoor-ar-image-0


نظرة سريعة على حادثة الباب الخلفي المؤلف من 66 سطرًا بلغة JavaScript

لنحدد نطاق الحادثة أولًا. إنها هجمة على سلسلة توريد برمجيات أدوات التطوير، وقد وقعت المشكلة في قناة توزيع إضافات Cursor. لم يُخترق نموذج Claude نفسه، ولا توجد أدلة على اختراق أنظمة Anthropic الداخلية. وأكدت مايكروسوفت أن متجر Microsoft Visual Studio Marketplace وحزمة npm الرسمية @anthropic-ai/claude-code لم يتأثرا.

البند التفاصيل
تاريخ الحادثة 29 أكتوبر 2026
قناة التوزيع متجر إضافات Cursor VS Code
الهوية المنتحلة anthropic.claude-code (لم تبنِ Anthropic هذه الإصدارات أو تنشرها)
الإصدارات الخبيثة 2.1.312 و2.1.313
منصات حزم التثبيت الخبيثة المدرجة رسميًا Windows x64 وmacOS ARM64
مدة التوزيع العلني نحو 11 ساعة و8 دقائق
الحد الأقصى للمستخدمين المتأثرين وفق الإفصاح الرسمي 5000 مستخدم (وهو حد أقصى، ولا يعني السيطرة على 5000 جهاز)
الشفرة المحقونة محمّل أولي في الأسطر 1–66 من extension.js
إصدار الإصلاح اللاحق أصدرت Anthropic الإصدار 2.1.314

التسلسل الزمني لحادثة الباب الخلفي المؤلف من 66 سطرًا بلغة JavaScript

حُوّلت جميع الأوقات أدناه إلى توقيت بكين. ومن المهم التمييز بين وقت إتاحة تنزيل حزمة التثبيت ووقت تشغيلها فعليًا بعد تنزيلها؛ فقد يتأخر الثاني بفارق كبير.

توقيت بكين الحدث
29 أكتوبر، 17:27 بدأت إتاحة الإضافة الخبيثة للتنزيل في متجر Cursor
30 أكتوبر، 04:35 أوقفت Cursor توزيعها، وانتهت فترة التعرض
30 أكتوبر نشرت Cursor إشعارًا أمنيًا، ثم نشرت Phorion وOpenSourceMalware ومايكروسوفت تحليلاتها تباعًا
30 أكتوبر، 12:45 رصدت Expel أول تشغيل للشفرة الخبيثة على جهاز Mac تابع لأحد العملاء، بعد نحو 8 ساعات من إزالة الإضافة
31 أكتوبر، 02:30 حدّثت Cursor إشعارها، فأدرجت الإصدار 2.1.312 ضمن الإصدارات المتأثرة وعدّلت مؤشرات الاختراق
1 نوفمبر أكملت StepSecurity مقارنة ساكنة دقيقة استنادًا إلى عينة من MalwareBazaar

بعد انكشاف الحادثة، أزالت Cursor الإصدارات الخبيثة وأغلقت متجر الإضافات بالكامل مؤقتًا، إلى جانب تدقيق سجلات الوصول، وتدوير المفاتيح، وإعادة بناء المتجر، والتنسيق مع مزودي الخدمات السحابية لإيقاف خوادم المهاجمين. وحتى الآن، لم توضّح المعلومات المتاحة للعامة كيف حصل المهاجمون على صلاحية نشر إصدارات في متجر Cursor. وإلى أن تظهر نتائج التحقيق، لا ينبغي الجزم بسرقة حساب Anthropic أو بوجود ثغرة محددة في Cursor.


كيف فعّلت 66 سطرًا من JavaScript بابًا خلفيًا في إضافة Claude Code

قد يُفهم رقم «66 سطرًا» خطأً على أنه حجم الإضافة بالكامل. في الواقع، ملف extension.js الأصلي ملف مضغوط كبير الحجم. ولم يفعل المهاجم سوى إدراج محمّل خبيث في بدايته، يمتد من السطر 1 إلى السطر 66.

تستخدم هذه الشفرة تعبير دالة يُنفّذ فورًا (IIFE). وهي لا تنتظر أن يرسل المستخدم رسالة إلى Claude، ولا تحتاج إلى أي شرط لتشغيلها. فعندما يحمّل Cursor الملف الرئيسي للإضافة باستخدام بيئة تشغيل Node.js، تُنفّذ هذه الشفرة قبل الشفرة الأصلية للإضافة.

تعديل بحجم 7,386 بايت: مقارنة دقيقة للعينة

حصلت StepSecurity على العينة من MalwareBazaar في 1 نوفمبر، وأجرت مقارنة ساكنة بعد التحقق من بصمة SHA-256. وأظهرت النتائج أن المهاجم لم يكن بحاجة إلى إعادة كتابة الإضافة.

عنصر المقارنة القيمة
ملف extension.js الأصلي 3,685,536 بايت
ملف extension.js الخبيث 3,692,922 بايت
المحمّل المضاف 7,386 بايت
نسبة المحتوى المضاف نحو 0.20%
رقم الإصدار في ملف البيان الخارجي 2.1.313
الإصدار المعرّف داخل الشفرة الأصلية 2.1.312

يستحق الصفان الأخيران الانتباه أيضًا. فقد أعاد المهاجم حزم إصدار سليم هو 2.1.312، وعدّل معلومات الإصدار الخارجية فقط. رقم الإصدار المعروض لا يتطابق بالضرورة مع المصدر الفعلي للشفرة، لذا لا يمكن الاعتماد عليه وحده للحكم. وفي موضع آخر من تقرير StepSecurity، توجد صياغة حول «عدد البايتات المتبقية» تتضمن خطأً حسابيًا؛ عند الاستشهاد بالأرقام، يُعتمد الحجم الإجمالي والزيادة الموضحان في الجدول أعلاه.

لماذا لا يحتاج المستخدم إلى تنفيذ أي أمر خطير؟

لا علاقة لهذا الهجوم بحقن الموجهات. وقد أكد الباحثون أن العملية بأكملها تتسم بالخصائص التالية:

  • لا تتطلب من المستخدم بدء محادثة مع Claude، ولا موافقة النموذج على تنفيذ تعليمات عالية الخطورة؛
  • لا تعتمد على موجه خبيث، ولا على نصوص دورة حياة التثبيت في npm؛
  • لا يتطلب الهجوم الأولي تنزيل ملف تنفيذي إضافي.

يكمن الخطر الحقيقي في صلاحيات تنفيذ إضافة بيئة التطوير المتكاملة (IDE) على جهاز المطوّر. فالإضافة تعمل داخل Node.js، ويمكنها بالتالي الوصول إلى نظام الملفات، وقراءة معلومات النظام، وإنشاء عمليات فرعية، وتنفيذ أوامر النظام، وإرسال طلبات HTTP، واستخدام أداة SSH المحلية.

66-lines-javascript-claude-code-extension-ssh-backdoor-ar-image-1


تصميم مفتاحَي باب SSH الخلفي في إضافة Claude Code

أبرز ما يميز هذه الشيفرة المؤلفة من 66 سطرًا هو أنها تبني الباب الخلفي بالكامل على خدمة SSH الموجودة في النظام. فلا يحتاج المهاجم إلى تطوير برنامج تحكم عن بُعد خاص به، بل يكفيه استخدام مجموعتَي مفاتيح SSH لغرضين مختلفين.

المجموعة الأولى هي مفتاح التفويض على جهاز الضحية. يضيف البرنامج الخبيث المفتاح العام للمهاجم إلى ملف authorized_keys الخاص بالمستخدم، ويحمل المفتاح الوسم الظاهر svc-telemetry. إذا كانت خدمة SSH مفعّلة على الجهاز، فقد يتمكن من يملك المفتاح الخاص المقابل من تسجيل الدخول بهوية ذلك المستخدم.

المجموعة الثانية هي مفتاح الهوية للاتصال بخادم خارجي. يحفظ البرنامج الخبيث مفتاحًا خاصًا آخر يتيح لجهاز الضحية بدء الاتصال بخادم المهاجم. وهذا المفتاح ليس من المفاتيح الخاصة الأصلية للمستخدم. باختصار، تحدد المجموعة الأولى ما إذا كان المهاجم يستطيع اجتياز المصادقة، بينما تتيح الثانية لجهاز الضحية بدء الاتصال بالخارج.

لماذا يستدعي نفق SSH العكسي الحذر؟

تحظر كثير من شبكات الشركات والمنازل الوصول المباشر إلى أجهزة الكمبيوتر الشخصية من الإنترنت، لكنها لا تقيّد عادةً الاتصالات التي تبدأها الأجهزة نحو الخارج. يستغل النفق العكسي هذه النقطة تحديدًا: يتصل جهاز الضحية أولًا بخادم المهاجم، ثم يعيد توجيه طلبات الوصول من الطرف الآخر إلى المنفذ المحلي 22.

لكن وجود اتصال لا يعني نجاح تسجيل الدخول. إذ يعتمد ذلك على تشغيل خدمة SSH محليًا، وسريان إعدادات المصادقة، وإعدادات إعادة التوجيه على خادم المهاجم. وإذا لم تكن خدمة SSH المحلية قيد التشغيل، فقد يُنشأ النفق، لكن تسجيل الدخول عن بُعد لن يكتمل.


أساليب الإخفاء وعيوب التنفيذ في 66 سطرًا من الشفرة الخبيثة

لتقليل احتمالات اكتشافه، اتخذ المُحمِّل عدة إجراءات:

  • يستمر تحميل وظائف Claude Code المعتادة؛
  • تُعالج أخطاء كل خطوة من خطوات الهجوم على حدة، ويستمر التنفيذ بعد الإخفاق بصمت؛
  • تستخدم مهام الاستمرارية أسماء تنتحل صفة مكونات النظام، مثل SysMon وcom.apple.sysmond؛
  • تُعاد محاولة الاتصال كل 60 ثانية تقريبًا عند فشله؛
  • تُجرى محاولة لإرسال المعلومات بعد نحو 1.5 ثانية من بدء التشغيل.

قد لا يظهر أي شيء غير طبيعي في واجهة المستخدم.

تحتوي الشفرة الخبيثة أيضًا على عيوب واضحة قللت فعليًا من احتمالات نجاح تسجيل الدخول عن بُعد:

المنصة عيب التنفيذ الأثر الفعلي
macOS الاستعلام عن حالة تسجيل الدخول عن بُعد بصلاحيات مستخدم عادي، ما يؤدي إلى خطأ في الأذونات؛ ولا تحاول الشفرة تفعيله إلا إذا تعرفت صراحةً على أنه «معطّل» لن يُفعّل تسجيل الدخول عن بُعد تلقائيًا على كثير من أجهزة Mac التي لم يكن SSH مفعّلًا عليها؛ أما إذا كان SSH مفعّلًا بالفعل، فيظل الخطر قائمًا
Windows تثبيت OpenSSH Server باستخدام PowerShell، لكن عبر دالة مساعدة تعتمد على /bin/sh لا يتوفر هذا المسار في تثبيت Windows القياسي، لذا قد تفشل خطوة تفعيل خدمة SSH
Linux تحقيق الاستمرارية عبر crontab @reboot، وقد اكتشفت Phorion خللًا في فحص crontab قد يؤدي تكرار التنفيذ إلى المساس بالمهام المجدولة الموجودة لدى المستخدم؛ ولم يتأكد الحجم الفعلي للانتشار على Linux

لا تعني هذه العيوب أن الشفرة معطلة تمامًا. فالكتابة في ملفات المستخدم وإنشاء عناصر بدء تشغيل على مستوى المستخدم لا تتطلبان غالبًا صلاحيات المسؤول. لذلك قد يحدث أن تفشل خدمة تسجيل الدخول عن بُعد في بدء التشغيل، لكن يكون المفتاح المعتمد قد كُتب بالفعل، ويكون سكربت بدء التشغيل قد أُنشئ، ومعلومات الجهاز قد أُرسلت، بينما تستمر عملية في الخلفية بمحاولة الاتصال الخارجي. لذا فإن فكرة «الأمان التام في غياب صلاحيات المسؤول» غير صحيحة.


تحليل أثر الباب الخلفي في إضافة Claude Code على المطورين

التأثير على المطورين

  • ربما انكشفت أسماء متغيرات البيئة المرتبطة بمفاتيح API: يرشّح برنامج التحميل ما يصل إلى 40 متغير بيئة تحتوي أسماؤها على KEY أو TOKEN أو SECRET أو PASS أو AWS أو GCP. يتضمن البلاغ الأولي الأسماء لا القيم، لكن يمكن للمهاجم أن يستنتج منها واجهات API أو المنصات السحابية التي تستخدمها. وبمجرد تفعيل الباب الخلفي، قد يتمكن من قراءة بيانات الاعتماد المحلية لاحقًا.
  • إزالة الإضافة لا تعني إزالة الباب الخلفي: لا تُحذف ملفات الاستمرارية وعناصر بدء التشغيل ومفاتيح SSH العامة تلقائيًا عند إزالة الإضافة. وفي إحدى الحالات التي رصدتها Expel، لم يفتح المستخدم Cursor إلا بعد سحب الإضافة، فبدأ النشاط الضار فورًا واستمر قرابة 10 ساعات.
  • الاعتماد على مؤشر واحد قد يفوّت حالات إصابة: اكتشفت Expel جهازًا يعمل عليه مسار نفق ضار، من دون وجود علامة المفتاح العام svc-telemetry. لذلك يجب أثناء التحقيق التحقق من الإصدارات وتجزئات الملفات والعمليات واتصالات الشبكة وعناصر بدء التشغيل معًا.

التأثير على القطاع

  • إضافات بيئات التطوير أصبحت هدفًا عالي القيمة للهجمات: مع انتشار أدوات البرمجة بالذكاء الاصطناعي، أصبحت أجهزة المطورين تضم الشيفرة المصدرية وبيانات اعتماد الخدمات السحابية ومفاتيح API للنماذج في الوقت نفسه. ويكفي إدراج 7 كيلوبايت من الشيفرة في بداية ملف مضغوط بحجم 3.6 ميجابايت لتغيير مستوى أمانه.
  • الحاجة إلى إعادة النظر في آلية النشر بمتاجر الإضافات التابعة لجهات خارجية: وقع هذا الحادث في متجر Cursor فقط، بينما لم تواجه الإضافة التي تحمل الاسم نفسه مشكلات في القنوات الأخرى. وهذا يعني أن «اسم الناشر يبدو رسميًا» ليس سببًا كافيًا للثقة.

66-lines-javascript-claude-code-extension-ssh-backdoor-ar-image-2

أعدّ الفريق التقني في APIYI apiyi.com الرسم أعلاه استنادًا إلى أبحاث منشورة. ويوضح الجدول التالي ما هو مؤكد وما ليس كذلك؛ يُرجى الانتباه إلى هذا التمييز عند الاقتباس أو النقل:

الخلاصة الحالة التوضيح
وزّع متجر Cursor نسخة تم التلاعب بها من إضافة Claude Code مؤكد أكده بيان رسمي
تتمتع الشيفرة الخبيثة بقدرات جمع المعلومات وزرع المفاتيح وإنشاء نفق عكسي وضمان الاستمرارية مؤكد تتفق تحليلات العينات من عدة جهات
رُصد نشاط خبيث على أجهزة عملاء فعليين مؤكد تعاملت Expel مع 4 حالات، جميعها على أجهزة Mac
تمت السيطرة الكاملة على 5000 جهاز غير مؤكد الرقم 5000 هو الحد الأقصى المحتمل للأجهزة المتأثرة فقط
سُرقت القيم الفعلية لمفاتيح API الخاصة بالمستخدمين غير مؤكد تضمّن التقرير الأولي أسماء المتغيرات فقط
عدد الاختراقات الناجحة عالميًا وحجم الخسائر المالية لم يُعلن عنه لا ينبغي تقديره

كيفية التحقق من وجود باب خلفي عبر SSH في إضافة Claude Code

إذا ثبّت إضافة Claude Code أو حدّثتها تلقائيًا عبر متجر Cursor بين 29 و30 أكتوبر، فمن الأفضل إجراء فحص سريع. يقرأ سكربت Node.js التالي المسارات التي كُشف عنها علنًا بحثًا عن آثار الاختراق، دون إجراء أي تعديلات:

// 只读排查:检查公开披露的入侵痕迹(不能单独作为结论)
const fs = require("fs"), os = require("os"), path = require("path");
const home = os.homedir();
const checks = [
  path.join(home, ".ssh", "authorized_keys"),
  path.join(home, ".config", ".smt"),
  path.join(home, ".config", ".smtk"),
  path.join(home, "Library", "LaunchAgents", "com.apple.sysmond.plist"),
  path.join(home, ".config", "smt.cmd"),
  path.join(home, ".config", "smtk"),
];
for (const p of checks) {
  if (!fs.existsSync(p)) continue;
  const hit = p.endsWith("authorized_keys")
    ? fs.readFileSync(p, "utf8").includes("svc-telemetry")
    : true;
  if (hit) console.log("⚠️ 发现可疑痕迹:", p);
}

إذا رصد السكربت أيًا من هذه الآثار، فتحقق أيضًا من تجزئات الملفات، والمهمة المجدولة SysMon، والعمليات وسجلات الشبكة. على سبيل المثال، تحقق مما إذا كان قد جرى اتصال بالمنفذ 22 أو 8099 على العنوان 134.209.82[.]225. يتضمن إعلان Cursor الرسمي أيضًا سكربتات للفحص والإصلاح على macOS وWindows، ويُنصح بفهم الصلاحيات التي تتطلبها قبل تشغيلها.

يمكنك أيضًا الاستعانة بنموذج لغة كبير لإجراء مراجعة أولية لشفرة ملف إضافة مشبوه. ركّز على ما إذا كانت بداية الملف تحتوي على دالة تُستدعى فور تعريفها (IIFE) وتستدعي child_process أو تكتب في authorized_keys أو تنشئ اتصال SSH. إليك مثالًا مبسطًا للاستدعاء:

import openai

client = openai.OpenAI(
    api_key="YOUR_API_KEY",
    base_url="https://api.apiyi.com/v1"  # APIYI OpenAI 兼容接口
)

head = open("extension.js", encoding="utf-8", errors="ignore").read(10000)
resp = client.chat.completions.create(
    model="gpt-4o-mini",
    messages=[{"role": "user", "content": "请审查这段 JS 开头是否存在可疑的子进程、SSH、持久化或外连行为:\n" + head}]
)
print(resp.choices[0].message.content)
عرض سكربت المراجعة الكامل، بما في ذلك مقارنة التجزئات
import hashlib
import sys
import openai

# 公开披露的恶意 extension.js SHA-256
KNOWN_BAD = {
    "ecb58cb29078d9646ad1dcdbe51526f2d9cfea06be5fb2ab183e8ecc3ab6bf15",
}
KEYWORDS = ["child_process", "authorized_keys", "svc-telemetry",
            "LaunchAgents", "schtasks", "crontab", "8099", "-R"]

client = openai.OpenAI(
    api_key="YOUR_API_KEY",
    base_url="https://api.apiyi.com/v1"  # 使用 APIYI 统一接口
)

def sha256(path: str) -> str:
    h = hashlib.sha256()
    with open(path, "rb") as f:
        for chunk in iter(lambda: f.read(1 << 20), b""):
            h.update(chunk)
    return h.hexdigest()

def review(path: str, head_size: int = 10000) -> None:
    digest = sha256(path)
    print("SHA-256:", digest)
    if digest in KNOWN_BAD:
        print("⚠️ 命中已公布的恶意哈希,请立即隔离设备并按官方指引处置")

    head = open(path, encoding="utf-8", errors="ignore").read(head_size)
    hits = [k for k in KEYWORDS if k in head]
    print("文件开头命中关键词:", hits or "无")

    prompt = (
        "你是安全审计助手。下面是一个 IDE 扩展入口文件的开头部分,"
        "请判断是否存在在模块加载时立即执行的代码,"
        "并列出涉及子进程、SSH 密钥、持久化、网络外连的可疑片段。\n\n" + head
    )
    resp = client.chat.completions.create(
        model="gpt-4o-mini",
        messages=[{"role": "user", "content": prompt}],
        max_tokens=1200,
    )
    print(resp.choices[0].message.content)

if __name__ == "__main__":
    review(sys.argv[1] if len(sys.argv) > 1 else "extension.js")

نصيحة: مراجعة النموذج وسيلة مساعدة فقط، ولا تحل محل سجلات EDR ومقارنتها بالمؤشرات الرسمية. إذا أردت مقارنة أداء نماذج مختلفة في مراجعة الشفرة، يمكنك التبديل بينها باستخدام مفتاح API واحد عبر APIYI على apiyi.com. يحصل المستخدمون الجدد على رصيد مجاني للتجربة. وتأكد أيضًا من خلو الشفرة من معلومات العمل الحساسة قبل إرسالها للمراجعة.

بعد التأكد من تشغيل الإضافة الضارة، اتبع الخطوات التالية بالترتيب:

  1. احتفظ بأدلة التحقيق واعزل الجهاز؛
  2. أزل الملفات الضارة وعناصر بدء التشغيل ومفاتيح SSH العامة؛
  3. قيّم المخاطر المحتملة على المستودعات وبيانات اعتماد الخدمات السحابية ورموز الجلسات ومفاتيح API التي يمكن للجهاز الوصول إليها؛
  4. إذا تعذرت استعادة حالة موثوقة للجهاز، فأعد بناء النظام وغيّر جميع بيانات الاعتماد من جهاز موثوق.

الأسئلة الشائعة FAQ

س1: هل تشير أسطر JavaScript الـ66 إلى إضافة Claude Code كاملة؟

لا. تشير الأسطر الـ66 إلى أداة التحميل الخبيثة التي أُدرجت في بداية ملف `extension.js`، من السطر الأول إلى السطر 66، بحجم يقارب 7,386 بايت. أما الشفرة الأصلية للإضافة فتتجاوز 3.6 ميغابايت، وتبقى بعدها وتعمل كالمعتاد.

س2: ما الفرق بين هذا الهجوم وهجوم حقن الموجهات؟

يحاول حقن الموجهات دفع النموذج إلى إصدار مخرجات خطيرة أو تنفيذ إجراءات ضارة، أما في هذه الحالة فتُنفَّذ شفرة الإضافة مباشرة عند تحميلها. لا تمر العملية عبر Claude، ولا تتطلب محادثة أو موافقة النموذج. وحتى إن لم تستخدم ميزات الذكاء الاصطناعي في الإضافة من قبل، فقد تعمل الشفرة بمجرد تحميل الإضافة.

س3: هل تتأثر نسخة Claude Code المثبتة من npm الرسمي أو سوق VS Code؟

أكدت مايكروسوفت أن Visual Studio Marketplace وحزمة npm الرسمية `@anthropic-ai/claude-code` لم يتأثرا، كما لم يُعثر على النسخ الخبيثة المقابلة في Open VSX. تقتصر النسخ المتأثرة على الإصدارين 2.1.312 و2.1.313 الموزعين عبر سوق Cursor، ويجب التحقق أيضًا من المصدر وبصمة التجزئة للملف.

س4: لدي مفتاح API محفوظ في متغيرات البيئة، هل يجب تغييره؟

لم يتضمن التقرير الأولي سوى أسماء المتغيرات، ولم يرسل قيمها. لكن إذا تأكدت من تشغيل الشفرة الخبيثة على جهازك، فمن المحتمل أن يكون الباب الخلفي قد استُخدم لقراءة بيانات الاعتماد. والأكثر أمانًا هو تدوير المفاتيح من جهاز موثوق. ويُنصح أيضًا بتغيير مفاتيح منصات مثل APIYI apiyi.com المخزنة في متغيرات البيئة، واعتماد طريقة أكثر أمانًا لإدارة المفاتيح.

س5: كيف أقلل هذه المخاطر عند تطوير تطبيقات الذكاء الاصطناعي؟

يُنصح بعدم حفظ المفاتيح عالية الصلاحيات كنص صريح في متغيرات البيئة على جهاز التطوير لفترات طويلة، واستخدام مفتاح مختلف لكل مشروع، ومراجعة إضافات بيئة التطوير دوريًا. وعند استدعاء النماذج عبر منصات تجميع مثل APIYI apiyi.com، يمكنك استخدام مفتاح واحد للوصول إلى نماذج من عدة مزودين، ما يقلل عدد بيانات الاعتماد المخزنة محليًا ويتيح لك تدوير مفتاح واحد فقط عند حدوث مشكلة.


أبرز النقاط حول حادثة الباب الخلفي المكوّن من 66 سطرًا من JavaScript

  • طبيعة الهجوم: تعرّض سوق إضافات Cursor لهجوم على سلسلة التوريد، ولم يُخترق نموذج Claude نفسه.
  • طريقة التشغيل: يُنفّذ مُحمّل IIFE المكوّن من 66 سطرًا تلقائيًا عند تحميل الإضافة، دون أي إجراء من المستخدم.
  • بنية الباب الخلفي: تستخدم مجموعتان من مفاتيح SSH مع نفق عكسي، بالاعتماد بالكامل على أدوات النظام المدمجة.
  • حدود ما نعرفه: الرقم 5000 هو الحد الأقصى للمستخدمين المتأثرين، ولم تتأكد سرقة القيم الفعلية لمفاتيح API.
  • خطوات المعالجة: لا تكفي إزالة الإضافة للتخلص من الباب الخلفي؛ بل يلزم إجراء فحوصات متعددة وتدوير بيانات الاعتماد من جهاز موثوق.
  • ممارسات الحماية: قلّل عدد المفاتيح المخزنة محليًا بنص صريح، ويمكنك الاستعانة بـ APIYI apiyi.com لإدارة بيانات اعتماد استدعاء النماذج مركزيًا.

الخلاصة

توضح حادثة الباب الخلفي المكوّن من 66 سطرًا من JavaScript ثلاث نقاط:

  1. تعديل صغير، ضرر كبير: يكفي إدراج شيفرة تعادل 0.2% من حجم ملف يبلغ 3.6 ميغابايت في بدايته لتحويل إضافة موثوقة إلى وسيلة لزرع باب خلفي.
  2. الصلاحيات تحدد مستوى الخطر: تتمتع إضافات بيئة التطوير المتكاملة بقدرة كاملة على تنفيذ Node.js، ويمكنها كتابة المفاتيح والحفاظ على استمرارية تشغيل الباب الخلفي حتى بصلاحيات مستخدم عادي.
  3. إزالة الإضافة من السوق لا تعني انتهاء الخطر: قد تتأخر المكونات الخبيثة المثبتة في التشغيل وتواصل الاتصال بجهات خارجية، لذا يجب فحصها وتنظيفها بصورة مستقلة.

إذا استخدمت إضافة Claude Code من سوق Cursor خلال فترة التعرض، فتحقق من جهازك بالاستعانة بمؤشرات الاختراق الرسمية، ودوّر بيانات الاعتماد التي قد تكون تأثرت. وفي عملك اليومي، يُنصح بتقليل عدد بيانات الاعتماد المحلية؛ مثلًا، يمكنك استخدام APIYI apiyi.com لاستدعاء نماذج من مزودين متعددين بمفتاح موحّد، ما يحد من نطاق الضرر عند تسريب أحد المفاتيح.


📚 المراجع

  1. الإعلان الأمني الرسمي من Cursor: توقيت الحادثة والإصدارات وقيم التجزئة وسكربت التنظيف
  2. الرابط: cursor.com/blog/claude-code-extension-security-notice
  3. الوصف: مصدر أولي للتحقيق والمعالجة

  4. Microsoft Security Research: سلسلة الهجوم الكاملة ومواءمتها مع إطار MITRE ATT&CK

  5. الرابط: microsoft.com/en-us/security/blog/2026/10/30/inside-malicious-claude-code-branded-cursor-extension-persistent-ssh-backdoor/
  6. الوصف: يتناول حدود سلسلة التوريد وآلية SSH وتحليل الاستمرارية

  7. Phorion: أداة تحميل من 66 سطرًا وعيوب تنفيذها على مختلف المنصات

  8. الرابط: phorion.io/blog/offical-claude-code-vsx-compromise/
  9. الوصف: يتضمن تفاصيل تصفية متغيرات البيئة وعيوب crontab في Linux

  10. StepSecurity: مقارنة دقيقة لعينات الأول من نوفمبر

  11. الرابط: stepsecurity.io/blog/claude-code-extension-trojanized
  12. الوصف: يعرض أدلة على اختلاف أحجام الملفات وانتحال معرّفات الإصدارات

  13. Expel: تحقيق في 4 حوادث فعلية لدى عملاء

  14. الرابط: expel.com/blog/blog-fake-claude-code-extension-cursor-ssh-backdoor/
  15. الوصف: يوثّق حالات التنفيذ المتأخر وعدم اكتشاف التهديد

  16. OpenSourceMalware: تحليل البنية الداخلية للإضافة الخبيثة

  17. الرابط: opensourcemalware.com/blog/trojanized-claude-code-extension-plants-persistent-ssh-backdoor
  18. الوصف: يؤكد موقع أداة التحميل وطريقة تنفيذها

الكاتب: الفريق التقني في APIYI
للتواصل التقني: يمكنكم التواصل معنا عبر الصفحة الرئيسية لموقع APIYI على apiyi.com، أو زيارة مركز الوثائق docs.apiyi.com لمزيد من المعلومات

مقالات ذات صلة

موضوعات ذات صلة