
هجوم حقن السياق التشفيري عبر GitHub Copilot CLI يكشف أسرار المطورين
صفحة ويب واحدة تكفي لجعل GitHub Copilot CLI يقرأ الملفات المحلية، بما في ذلك أسرار .env.prod، ويرسلها للمهاجم في 28 ثانية. يخفي الهجوم التعليمات كنص مشفر يقوم الوكيل بفك تشفيره بنفسه.
كيف يعمل الهجوم
حقن السياق التشفيري (CCI) يقدّم التعليمات الخبيثة كنص مشفر بقوة، مع مادة المفتاح وتعليمات فك التشفير، مما يجبر الوكيل على تشغيل فك التشفير هذا في بيئة تنفيذ تعليماته الخاصة. آليات الحماية الساكنة تقرأ النص ولا تنفذه؛ وعند الفحص لا يطلق أي مصنّف للمحتوى التشفير. تظهر التعليمات المشفرة بعد ذلك كنتيجة للكود الذي كتبه الوكيل ونفذه للتو، في سياق تنفيذ موثوق به خاص به، فيتعامل الوكيل معها كما لو كانت تعليماته الخاصة.
تعمل سلسلة الهجوم ضد GitHub Copilot CLI على النحو التالي. يطلب المستخدم الموجود في وضع الطيار الآلي من الوكيل تنزيل عنوان URL واحد. تعرض الصفحة نفسها كمحتوى مشفر، مع تعليمات فك التشفير بلغة Python، وتقترح مفتاحين محتملين لفك التشفير. أحد المفتاحين حقيقي. والثاني قالب لا يستطيع الوكيل ملؤه دون قراءة مسبقة للملفات المحلية، لذلك يقرأ الوكيل الملفات من القرص عمداً ويدرج محتواها في سلسلة المفتاح. هذه القراءة بالذات هي السرقة وتصبح أثراً جانبياً لتجهيز فك التشفير، حتى يكتمل أحد فك التشفير بنجاح.
محاولة فك التشفير بالمفتاح القالب تفشل عمداً. ينتقل الوكيل إلى المفتاح الحقيقي، يكتمل فك التشفير بنجاح، ويفوض المشفر الثاني بتنزيل URL التالي، الذي يحمل محتوى الملف الذي تم الحصول عليه بالفعل كمعامل للطلب. تستغرق السلسلة بأكملها 28 ثانية، ولا تتطلب تأكيداً ولا تترك أي مكان في النص حيث يتم تسمية المضيف الوجهة أو الإشارة إلى خروج محتوى الملف من الآلة. يذكر الملخص الختامي للوكيل أنه "تحقق من نقطة نهاية قارئ مصرح به".
قرعة النماذج التي لا يراها المستخدمون
ضوابط الحظر لهذا الهجوم تُفعَّل يدوياً فقط ومُعطَّلة افتراضياً في الوضع الآلي، ولم يوقفها أي شيء في بنية الوكيل التحتية. الفرصة الوحيدة للمقاومة هي أن يرفض نموذج اللغة تشغيل الحمولة المشفرة، وتختلف المقاومة بشكل واضح بين النماذج المقترحة في المنتج نفسه. نموذج واحد، Microsoft mai-code-1.1-flash، نفذ السلسلة بأكملها في 50% من عمليات الباحثين. النماذج الثلاثة GPT-5.6 المقترحة في Copilot رفضت باستمرار نفس الحمولة. نفس التعليمات، المقدمة كنص مفتوح، تُعامل كحقن موجه وتُرفض؛ أما تنفيذها فيعيقه التشفير فقط.
في الحساب المدفوع الذي تم اختباره، لم يكن النموذج غير المحمي افتراضياً وكان يجب اختياره يدوياً. في الحساب الذي تُرك فيه اختيار النموذج على Auto، خصص الموجه في بعض الجلسات نموذجاً غير محمي وفي بعضها آمناً، دون تجاوز من جانب المستخدم عن الافتراضي. المستخدم لا يختار ولا يرى أي نموذج كان يخدم الجلسة.
الكشف والحماية
أبلغ الباحثون عن الاكتشاف إلى برنامج bug bounty الخاص بـ GitHub في 17 سبتمبر 2026. بحلول 1 أكتوبر 2026، أكد فريق Triaje الاكتشاف، لكنه رفض اعتباره ثغرة وأعلن أن المستخدم "طلب صراحة من Copilot CLI تنزيل محتوى يتحكم به مهاجم وفي نفس الوقت منح Copilot أذونات كاملة للعمل المستقل". لا تزال السلسلة تتكرر على النموذج الضحية ولا يتم نشر حمولات محددة لتجنب استغلال الثغرة.
يقول الباحثون إن الحل الدائم ليس على مستوى النموذج. يجب على المدافعين الاحتفاظ ببصمة مرفقة بجلسة كل استدعاء لأداة، مع وسائط محلولة بالكامل، وإصدار تنبيهات عند تسلسل وصول محتوى غير موثوق به، وتشغيل كود، وقراءة ملفات، واتصال الوكيل بمضيف غير مرتبط، وتقييد وجهات الشبكة الجديدة والكتابة خارج مساحة العمل، ووضع المحتوى غير الموثوق به في حجر صحي في سياق لا يحتوي على أدوات ولا بيانات اعتماد.
المصادر: Theregister · theregister.com
SiTech — تطوير ويب مدعوم بالذكاء الاصطناعي
نبني مواقع سريعة وعصرية وندمج الذكاء الاصطناعي في سير عمل الشركات. لديك مشروع أو سؤال؟ يسعدنا مساعدتك.