HeadlinesBriefing HeadlinesBriefing.com

ثغرة RCE بقيمة 90,000 دولار في Google

Hacker News •
×

اكتشف باحث أمني ثغرة تنفيذ تعليمات برمجية عن بُعد في مواقع توثيق المطورين لدى Google. وأثناء رسم خريطة لتدفق OAuth المشترك بين هذه المواقع، لاحظ الباحث أن نقطة النهاية /oauth2authorize تُعيّن ملف تعريف ارتباط جلسة Flask كبيرًا بشكل غير معتاد، يبلغ نحو 1,200 بايت، وهو أكبر بكثير مما يتطلبه رمز CSRF وعنوان URL الخاص بالعودة. ملفات تعريف ارتباط جلسات Flask موقّعة لكنها غير مشفّرة، لذا كان محتواها قابلًا للقراءة من أي شخص يحمل أحدها.

كشف فك ترميز ملف تعريف الارتباط عن كائن مُسلسَل بواسطة pickle يحتوي على client_id وclient_secret الخاصين بـ OAuth لدى Google بنص واضح. ووجد الباحث أن client secret كان يُستخدم أيضًا كمفتاح SECRET_KEY في Flask، أي أن القيمة نفسها تحفظ التوقيع وتتحقق منه. ولأن مفتاح التوقيع كان مكشوفًا داخل ملف تعريف الارتباط نفسه، تمكّن الباحث من إعادة حساب توقيعات صالحة دون اتصال بالإنترنت، وتزوير بيانات جلسة تعسفية.

تقرأ نقطة نهاية الاستدعاء بيانات تدفق OAuth من الجلسة وتمررها إلى pickle.loads. وباستخدام جلسة مزوّرة، كان بإمكان المهاجم تقديم حمولة pickle خبيثة، مما يجعل ذلك مسارًا لتنفيذ تعليمات برمجية عن بُعد دون مصادقة. وتحقق الباحث من المشكلة بأمان باستخدام حمولة تُفعّل فقط time.sleep، متجنبًا تنفيذ أي أوامر على أنظمة Google الإنتاجية.

يوضح هذا الاكتشاف كيف يمكن لتخزين الأسرار في بيانات الجلسة على جانب العميل، وإلغاء تسلسل بيانات pickle غير الموثوقة، أن يتراكما ليشكّلا ثغرة حرجة. وقد نالت هذه الثغرة مكافأة قدرها 90,000 دولار.

المصدر: Hacker News · لخّصه HeadlinesBriefing