العودة
استغرقت Google شهرين لإصلاح ثغرة في DevSite سمحت بتنفيذ التعليمات البرمجية دون ترخيص
SiTech AI Team3 دقيقة قراءة

استغرقت Google شهرين لإصلاح ثغرة في DevSite سمحت بتنفيذ التعليمات البرمجية دون ترخيص

استخدم مهاجم مفتاحًا سريًا لعميل OAuth لإعادة إنشاء ملفات تعريف الارتباط لجلسات Flask وتنفيذ تعليمات Python البرمجية على خوادم DevSite، التي يعمل عليها developers.google.com وستة مواقع توثيق.

مفتاح سري معاد استخدامه تحول إلى تنفيذ تعليمات برمجية عن بُعد

أصلحت Google ثغرة تنفيذ التعليمات البرمجية عن بُعد (RCE) دون ترخيص في DevSite، المنصة التي يعمل عليها developers.google.com وعدة مواقع توثيق أخرى. اكتشف الثغرة، التي صنّفتها Google بأعلى مستوى في مقياس الخطورة S0، مهندس البرمجيات Simon Köck من Otark GmbH.

كان السبب الأولي هو مفتاح سري لعميل OAuth معاد استخدامه. كان DevSite يخزّن كائن OAuth2WebServerFlow المتسلسل من مكتبة oauth2client الخاصة بـ Google في ملف تعريف ارتباط جلسة Flask، وهو ما تركته الشركة لصالح google-auth، مما كشف المفتاح. استخدمت Google نفس المفتاح أيضًا كمفتاح توقيع لجلسات DevSite، وهو ما أكده Köck عبر عمليات ضرب التوقيع لملف تعريف الارتباط في وضع عدم الاتصال.

الجلسات المزيفة مقبولة على سبعة نطاقات

أكد Köck أن الجلسات المزيفة كانت مقبولة على جميع النطاقات السبعة المتأثرة، والتي اعتمدت على مفتاحي توقيع مختلفين. أظهر تنفيذ التعليمات البرمجية على ثلاثة منها: developers.google.com وdocs.partner.android.com وweb.dev. تحقق من RCE دون ترخيص باستخدام حمولة sleep في Python وقاس التأخيرات في الاستجابة، رغم أنه تعمد تقييد نفسه عن تنفيذ الأوامر والوصول إلى الملفات أو البيانات أو الخدمات الداخلية.

"كنت سأصف هذا بأنه RCE خطير بشكل خاص، لأنه كان في متناول أي شخص دون الحاجة إلى حساب أو إشراك الضحية"، يقول Köck لـ The New Stack.

دفعت Google مكافأة قدرها 90,000 دولار: 75,000 دولار كانت الدفعة الأساسية مقابل RCE بدرجة S0، الذي تعتبره الشركة مستوى التطبيق العادي، مضروبة في 1,2 لحساب الخطورة الخاصة بالحساب.

اكتمل التفكيك عبر إلغاء تسلسل Pickle

استخدم OAuth callback مكتبة pickle في Python لإلغاء تسلسل بيانات الجلسة. استبدل Köck كائن flow بحمولة pickle خبيثة، ووقّع ملف تعريف الارتباط المزيف، ونفّذ callback. تطلبت السلسلة ثلاث ثغرات متراكبة: مفتاح مكشوف في ملف تعريف الارتباط، وتحميل مزدوج لنفس المفتاح كمفتاح توقيع، وإلغاء تسلسل غير آمن لبيانات الجلسة. إصلاح أي منها كان سيكسر السلسلة.

شهران للإصلاح، وتبقى أسئلة بلا إجابة

أبلغ Köck عن الثغرة في 6 أغسطس، وتلقتها Google في اليوم التالي. تم تأكيد المكافأة في 27 أغسطس، بينما لم يتم تنفيذ الإصلاح إلا في 7 أكتوبر. لم توضح Google المهلة التي استغرقتها شهرين، ولا ما إذا كانت قد نفذت إجراءات مؤقتة للتخفيف، ولا ما إذا كان قد تم تدوير أحد مفاتيحي OAuth المكشوفين، ولا ما إذا كانت الجلسات الموجودة قد تم إبطالها. يقول Köck إنه لم يتلقَّ أي استنتاج جنائي ولا يعرف ما إذا كانت Google قد وجدت دليلاً على الاستغلال قبل الإصلاح. لم ترد Google على طلب التعليق لهذا التحديث.

يلاحظ Arvin Shivram، الباحث السنغافوري الذي يعمل باسم @brutecat وأبلغ بنفسه عن أكثر من 130 ثغرة في Google، أن التطبيقات الداخلية لـ App Engine غالبًا ما تتمتع بالوصول إلى Stubby، وهو نظام الاتصال بين الخدمات الداخلية في Google. يعترف Köck بأن هذا الوصول "قد يكون جزءًا مهمًا من التأثير"، رغم أنه لم يتحقق مما كان يمكن أن تصل إليه عملية DevSite المحددة. كما لم يتحقق من إمكانية الكتابة على محتوى التوثيق، حيث كانت أوامر التثبيت المعدلة أو روابط التحميل ستؤدي إلى هجوم تسلسل التوريد. وفقًا له، يقتصر التأثير المعروض على تنفيذ التعليمات البرمجية على ثلاثة مضيفين وجلسات مزيفة على سبعة، في حين أن نطاق التأثير الكامل، بما في ذلك المسارات إلى خدمات Google الداخلية، يظل غير مؤكد.

المصادر: Thenewstack

SSiTech

SiTech — تطوير ويب مدعوم بالذكاء الاصطناعي

نبني مواقع سريعة وعصرية وندمج الذكاء الاصطناعي في سير عمل الشركات. لديك مشروع أو سؤال؟ يسعدنا مساعدتك.