
سرقة رمز GitHub بنقرة واحدة عبر ثغرة في VSCode
وثّق باحث أمني هجومًا تتيح فيه نقرة واحدة على رابط سرقة رمز وصول إلى GitHub يمنح صلاحية القراءة والكتابة في مستودعات الضحية، بما فيها الخاصة؛ وقد أصدرت مايكروسوفت إصلاحات في 3 يونيو.
نشر باحث أمني تفاصيل هجوم تتيح فيه نقرة واحدة على رابط سرقة رمز وصول إلى GitHub — الرمز الذي يمنح صلاحية القراءة والكتابة في مستودعات الضحية، بما فيها المستودعات الخاصة — عبر ثغرة في النسخة المتصفحية من Visual Studio Code. وقد نُشر التقرير في مدونة الباحث وفي متتبّع مشكلات VSCode في 2 يونيو.
الثغرة في العزل
الهدف هو github.dev، محرّر GitHub داخل المتصفح: فتح أي مستودع هناك يمنح تطبيق الويب رمز OAuth الذي يرسله github.com إلى github.dev. وهذا الرمز غير محصور بالمستودع الذي فتحته، بل يتيح الوصول إلى كل مستودع آخر يستطيع المستخدم المسجّل الوصول إليه. يحتفظ VSCode عادةً بالكود الذي يعمل داخل نوافذ العرض (webview) — كمعاينات Markdown ودفاتر Jupyter — في إطار iframe من أصل مختلف معزول عن المحرّر الرئيسي. وتكمن الثغرة في أن نوافذ العرض تمرّر أحداث لوحة المفاتيح إلى النافذة الأصلية عبر واجهة تبادل الرسائل في VSCode، فيستطيع نص برمجي يعمل داخل نافذة عرض غير موثوقة أن يحاكي ضغطات مفاتيح يتعامل معها المحرّر كأنها صادرة عن المستخدم.
من خلية في دفتر إلى رمز مسروق
لا يحتاج الإثبات العملي إلا إلى مستودع يضم دفتر Jupyter و"إضافة مساحة عمل محلية". تبدأ خلية Markdown، التي يشغّل معالج onerror في وسم صورتها شيفرة JavaScript، سلسلة الهجوم: ينتظر النص البرمجي إشعار الإضافات الموصى بها في VSCode، ويرسل Ctrl+Shift+A لقبول إجرائه الأساسي، ويثبّت الإضافة المحلية — وهو مسار يتجاوز طلب الثقة بالناشر لأن مساحة العمل نفسها تُعدّ موثوقة. ثم تضيف تلك الإضافة اختصار مفاتيح خاصًا بها يستدعي أمر تثبيت إضافة مختارة من المتجر مع تخطي فحص الناشر؛ فتقرأ الإضافة المثبّتة رمز GitHub وتستعلم من api.github.com/user/repos، عارضةً المستودعات الخاصة التي يستطيع الرمز الوصول إليها. الثغرة ذاتها موجودة في نسخة VSCode لسطح المكتب، لكن استغلالها أصعب: إذ يجب أن يستنسخ الضحية المستودع ويفتح الدفتر، وإذا اقترنت بثغرة XSS في نافذة العرض فستصل إلى تنفيذ شيفرة عن بُعد.
الإصلاحات ونصائح للمستخدمين
أصدرت مايكروسوفت في 3 يونيو إصلاحًا مؤقتًا أضاف خطوة تأكيد عند فتح الدفاتر في المحرّر المتصفحي ومنع الأوامر من تخطي الثقة بالناشر، وتبعه في اليوم نفسه إصلاح أشمل يوقف تسرّب أحداث keydown من نوافذ عرض الدفاتر. ويُنصح المستخدمون الذين لم يفتحوا github.dev يومًا بحذف ملفات تعريف الارتباط وبيانات الموقع الخاصة به — فبعد تجاوز نافذة تسجيل الدخول الأولى، كما يلاحظ الباحث، لا توجد رموز CSRF تحمي المحرّر، لذلك يمكن لأي رابط على الإنترنت أن يعيد توجيه المتصفح إلى هذا الهجوم. وينسب الكاتب أيضًا الفضل إلى دفاعات VSCode المتعددة الطبقات — سياسة أمن المحتوى الصارمة وتنقية Markdown — في الحدّ من الضرر، ويشرح قرار الإفصاح العلني بعد أن جرى إصلاح تقرير سابق بصمت ودون أي إسناد.
SiTech — تطوير ويب مدعوم بالذكاء الاصطناعي
نبني مواقع سريعة وعصرية وندمج الذكاء الاصطناعي في سير عمل الشركات. لديك مشروع أو سؤال؟ يسعدنا مساعدتك.