كشف تحقيق أمني حديث عن هجوم معقد لسلسلة التوريد استهدف المطورين، حيث تم العثور على شيفرة خبيثة في نسختين من إضافة Aqua Trivy لبيئة VS Code المسجلة على OpenVSX. تم اكتشاف هذه النسخ المتأثرة، 1.8.12 و 1.8.13، في 27 و 28 فبراير 2026، وتضمنت تعليمات خفية مصممة لاستغلال أدوات البرمجة المدعومة بالذكاء الاصطناعي لدى المطورين لتحويلها إلى آلات صامتة لجمع البيانات.
النسخ المتأثرة من إضافة Trivy، وهي أداة شائعة لمسح الثغرات الأمنية، استُبدلت بترميز معدل دون الإشارة إلى ذلك في مستودع OpenVSX. هذا التعديل، الذي لم يكن له نظير في المستودع العام لـ GitHub، جعل اكتشافه صعبًا عبر المراجعات القياسية.
لهجوم سلسلة التوريد على Trivy
أبدى باحثون في Socket.dev شكوكهم بشأن سلوك الإضافتين بعد نشرهما بوقت قصير، مما قادهم إلى تحليل معمق. ربطت تحقيقاتهم الشيفرة الخبيثة بحملة أوسع لبرامج ضارة تعتمد على الذكاء الاصطناعي، والتي استهدفت سير عمل GitHub Actions في مشاريع مفتوحة المصدر كبرى.
بشكل منفصل، وثقت شركة StepSecurity كيف أدت الحملة إلى سرقة رمز وصول شخصي والسيطرة على مستودع Aqua Trivy على GitHub. هذا سمح للمهاجمين بإدخال الإضافة المعدلة إلى OpenVSX، مما يمثل اختراقًا خطيرًا لسلسلة التوريد البرمجية.
استغلال أدوات الذكاء الاصطناعي للمطورين
بدلًا من تثبيت برامج تجسس تقليدية أو أبواب خلفية، استغلت الشيفرة الخبيثة المساعدين الأذكياء المنتشرين محليًا لدى المطورين. تم توجيه أدوات مثل Claude، Codex، Gemini، GitHub Copilot CLI، و Kiro CLI لتنفيذ عمليات استطلاع عميقة على أجهزة المطورين.
تم استدعاء كل أداة بأقصى صلاحياتها، متجاوزة أي تأكيد من المستخدم، وعملت العمليات في الخلفية دون أي إشعار مرئي. ظلت الإضافة تعمل بشكل طبيعي، مما قلل من احتمالية اكتشاف أي سلوك مشبوه.
محتوى النسختين المتأثرتين
اختلفت طبيعة الأضرار بناءً على النسخة المثبتة. حملت النسخة 1.8.12 تعليمات تفصيلية، بلغت حوالي 2000 كلمة، توجه عميل الذكاء الاصطناعي للتصرف كـ “محقق جنائي”. كان الهدف هو مسح البيانات الحساسة، بما في ذلك بيانات الاعتماد، التوكنات، السجلات المالية، والمراسلات الحساسة، ثم إرسال النتائج عبر قنوات الاتصال المتاحة.
أما النسخة 1.8.13، فقد كانت أكثر استهدافًا، حيث طلبت جمع معلومات النظام وتوكنات المصادقة، وحفظها في ملف باسم REPORT.MD. ثم استخدمت أداة GitHub CLI لدى الضحية لدفع هذا التقرير إلى مستودع باسم posture-report-trivy. تم سحب كلا النسختين من OpenVSX في 28 فبراير عقب الكشف عن الثغرة.
كيف بقيت الشيفرة الخبيثة مخفية
تم وضع الشيفرة الضارة ضمن وظيفة تفعيل مساحة العمل (workspace activation function)، وهي روتينية تعمل في كل مرة يفتح فيها المطور مشروعًا في محرر الأكواد الخاص به. ومن خلال إدخال الحمولة الضارة قبل منطق الإعداد القياسي لـ Trivy، تم الحفاظ على وظائف الإضافة كاملة، مما يضمن استمرار عمليات فحص الثغرات كالمعتاد.
في النسخة 1.8.13، تم تغليف الكتلة الضارة داخل عبارة شرطية (if statement) باستخدام معامل الفاصلة في JavaScript. هذا يضمن تشغيل الأوامر الخبيثة أولًا قبل التحقق القياسي لمساحة العمل الخاص بالإضافة.
عملت جميع أوامر الذكاء الاصطناعي الخمسة كعمليات خلفية منفصلة مع معالجة صامتة للأخطاء، مما يعني أن أي أداة غير مثبتة تفشل ببساطة دون إحداث ضوضاء مرئية.
تم تغيير أسماء المتغيرات بين النسختين، وهو ناتج عن تصغير الكود (code minification)، مما أضاف طبقة أخرى من التمويه. أشارت Socket.dev إلى أن هذه التقنية تمثل تحولًا في طريقة بناء هجمات سلسلة التوريد، حيث لم يعد المهاجمون يعتمدون على الاستدعاءات الثابتة أو الشل كود، بل فوضوا عمليات الاستطلاع والاستخراج لوكلاء الذكاء الاصطناعي الموثوق بهم محليًا، مع استدعائهم بأعلى مستوى من الأذونات، دون ترك بصمات برمجية خبيثة يمكن للأدوات الآلية اكتشافها.
ينصح المطورون الذين قاموا بتثبيت النسخة 1.8.12 أو 1.8.13 من OpenVSX باتخاذ خطوات احترازية فورية. يجب إلغاء تثبيت الإضافة المتأثرة، والتحقق من سجل الإصدارات للتأكد من وجود أي من هذه الإصدارات. كما ينبغي فحص حساب GitHub عن وجود مستودع باسم posture-report-trivy، ومراجعة نشاط GitHub الأخير بحثًا عن أي إنشاءات غير متوقعة لمستودعات أو التزامات تشير إلى REPORT.MD.
يجب أيضًا فحص سجل Shell بحثًا عن استدعاءات لأوامر مثل claude، codex، gemini، copilot، أو kiro-cli مع أعلام تنفيذ تسمح بأقصى صلاحيات. يُنصح بتدوير جميع بيانات الاعتماد التي يمكن الوصول إليها على الجهاز خلال فترة التعرض للخطر، بما في ذلك توكنات GitHub، بيانات اعتماد السحابة، مفاتيح SSH، وتوكنات API الموجودة في متغيرات البيئة أو ملفات الإعداد. أخيرًا، يجب مراجعة سجلات وكلاء الذكاء الاصطناعي المحلية بحثًا عن أي مطالبات غير عادية أو تنفيذ تلقائي، حتى لو لم تظهر مؤشرات مباشرة.

