ثغرة في Microsoft Visual Studio Code
تحتوي بيئة تحرير وتطوير Microsoft Visual Studio Code (VS Code) على ثغرة تسمح للإضافات الخبيثة باسترجاع رموز المصادقة المخزنة في مديري أوراق الاعتماد لأنظمة Windows وLinux وmacOS.
تُستخدم هذه الرموز للتكامل مع مختلف خدمات وواجهات برمجة تطبيقات الجهات الثالثة، مثل Git وGitHub ومنصات البرمجة الأخرى، وبالتالي يمكن أن يكون لسرقتها تأثيرات كبيرة على أمان بيانات المؤسسة المخترقة، مما قد يؤدي إلى الوصول غير المصرح به إلى النظام، وانتهاكات البيانات، وما إلى ذلك.
تم اكتشاف هذه الثغرة من قِبل باحثين في Cycode، حيث قاموا بالإبلاغ عنها لشركة Microsoft بالإضافة إلى دليل عمل (PoC) عملي تم تطويره. ومع ذلك، قررت الشركة العملاقة في مجال التكنولوجيا عدم إصلاح هذه المشكلة، حيث لا يُفترض أن تكون الإضافات معزولة عن بقية البيئة.
سرقة كلمات المرور باستخدام الإضافات
تسببت في المشكلة الأمنية التي اكتشفها باحثون من Cycode في عدم عزل رموز المصادقة في “تخزين كلمات المرور” في VS Code، وهو واجهة برمجة تطبيقات تسمح للإضافات بتخزين رموز المصادقة في نظام التشغيل.
يتم ذلك باستخدام Keytar، وهو واجهة برمجة تطبيقات لـ VS Code للتواصل مع مدير بيانات الاعتماد في Windows (على نظام Windows)، أو سلسلة المفاتيح (على نظام macOS)، أو حلقة المفاتيح (على نظام Linux).
وهذا يعني أن أي إضافة تعمل في VS Code، حتى الإضافات الخبيثة، يمكنها الوصول إلى تخزين كلمات المرور واستغلال Keytar لاسترجاع أي رموز تم تخزينها.
أخبر الباحث في Cycode، أليكس إيلغايف، موقع BleepingComputer أن جميع الاعتمادات المحفوظة من استخدام الإضافات الطرف الثالثة، بخلاف مصادقة GitHub و Microsoft المدمجة معرضة للخطر,
“بخلاف مصادقة GitHub/Microsoft المدمجة، وجميع الرموز المحفوظة في VSCode التي تأتي من اضافاتهم،” حسب قول إيلغايف BleepingComputer.
“وايضا على خلالف ما تم تعريفها بواسطة إضافات رسمية (من Microsoft)، مثل Git و Azure و Docker/Kubernetes، إلخ، أو بواسطة إضافات من الجهات الثالثة الرسمية، مثل CircleCI و GitLab و AWS.”
بعد اكتشاف المشكلة، بدأ باحثو Cycode في تجريب إنشاء إضافة خبيثة لسرقة رموز CircleCI، وهي منصة برمجة شهيرة تحتوي على إضافات لـ VS Code. لقد فعلوا ذلك عن طريق تعديل الإضافة الخاصة بـ CircleCI لتشغيل أمر يكشف عن رمزها الآمن وإرساله مباشرة إلى خادم الباحث.
بالتدريج، قاموا بتطوير طريقة هجومية أكثر تنوعًا لاستخراج كلمات السر دون التلاعب بكود الإضافة المستهدفة.
المفتاح لهذه العملية كان اكتشاف أن أي إضافة في VS Code مخولة بالوصول إلى سلسلة المفاتيح لأنها تعمل من داخل التطبيق الذي منحته نظام التشغيل بالفعل وصولًا إلى سلسلة المفاتيح.
"قمنا بتطوير إضافة خبيثة لإثبات تجربتنا استرجاع الرموز بنجاح ليس فقط من الإضافات الأخرى بل أيضًا من وظيفة تسجيل الدخول والمزامنة المدمجة في VS Code لحسابات GitHub و Microsoft، مما يُقدم هجومًا لسرقة الرموز." - Cycode.
بعد ذلك، كان عليهم فك تشفير الرموز التي تم استرجاعها، واكتشفوا أن خوارزمية تشفير الرموز المستخدمة هي AES-256-GCM، والتي تعتبر عادة آمنة. ومع ذلك، تم استخدام مفتاح تشفير الرموز المستمد من مسار التنفيذ الحالي ومعرف الجهاز، مما يجعل من السهل إعادة إنشاء المفتاح.
تم فك تشفير الرموز المسترجعة باستخدام نص مخصص مكتوب بلغة JavaScript وتشغيله في التنفيذ القابل للتنفيذ في الإصدار الإلكتروني لـ VS Code، مما يفك تشفير وطباعة جميع كلمات المرور للإضافات المثبتة محليًا.
ثاني الثغرات التي اكتشفها الباحثون في Cycode هو أن وظيفة “getFullKey” تسترد بيانات الاعتماد بواسطة “extensionId” المعطى، والذي يتم تأليفه من اسم الإضافة والناشر.
هذه المشكلة تسمح لأي شخص بتعديل هذه الحقول وخداع VS Code لمنحهم وصولًا إلى الرموز الآمنة لإضافة أخرى.
قام باحثو Cycode باختبار هذا باستخدام إضافة PoC التي تشبه CircleCI مرة أخرى؛ ومع ذلك، لاحظوا أنه من الممكن بسهولة استنساخ أي إضافة أخرى والحصول على وصول إلى بيانات الاعتماد الخاصة بها.
الكشف وعدم الإصلاح
أخبر Cycode موقع BleepingComputer أنهم أبلغوا عن هذه المشكلة لشركة Microsoft قبل شهرين، حتى قاموا بتوضيح إضافتهم PoC وقدرتها على سرقة الرموز المخزنة للإضافات.
على الرغم من ذلك، لم يرو مهندسو Microsoft هذا على أنه غير أمن وقرروا الاستمرار في تصميم إدارة تخزين بيانات الاعتماد في VS Code كما هو.
قام موقع BleepingComputer بالاتصال بشركة Microsoft للحصول على تعليق بخصوص ما ورد أعلاه، ولكننا لم نتلقَ ردًا على أسئلتنا بعد.