صدر Ray 2.58.0 عند 05:42 UTC في 23 أغسطس. ومن بين البنود في قسم الإصلاحات الخاص بـ Ray Serve سطر واحد: إصلاح تجاوز ASGIService في نسخة Serve لمصادقة الرمز. لا يوجد تنبيه أمني مرفق، ولم يُطلب CVE، ولا تُذكر أي شدة.
ما الذي يقوله طلب السحب
يوضح PR #65189 الأمر أكثر بكثير من سجل التغييرات. فقد كان خادم gRPC الداخلي في نسخ Serve “مبنيًا باستخدام grpc.aio.server() خام ومرتبطًا عبر add_insecure_port”، ما جعله، على حد تعبير المؤلف، خادم gRPC الوحيد على جانب Python في Ray الذي يتجاوز كلا ضابطي النقل لدى Ray. وتحت RAY_AUTH_MODE=token كان هذا الخادم يقبل الطلبات من دون اعتمادات صالحة ويصل إلى pickle.loads(request.pickled_request_metadata) قبل إجراء أي تحقق. أما تحت RAY_USE_TLS=1، حيث تستخدم خوادم gRPC الأخرى في Python لدى Ray mTLS، فقد ظل هذا المنفذ غير مشفّر.
الوصول إلى pickle.loads قبل التحقق هو جوهر المشكلة كله
إن إلغاء تسلسل pickle مصدره مهاجم يعني تنفيذ تعليمات برمجية عشوائية بطبيعته — وهذا ما تقوله وثائق Python نفسها. والترتيب هنا هو المهم: فقد أُزيل تسلسل الحمولة غير الموثوقة أولًا، ثم جرى التحقق منها ثانيًا، ما يجعل المصادقة غير ذات صلة في ذلك المسار بدلًا من أن تكون مجرد ضعيفة.
التحريف: ليس ثغرة جديدة، بل فجوة تمتد خمسة إصدارات
قدّم Ray مصادقة الرمز بوصفها تغطي جميع مكونات Ray في الإصدار 2.52.0. لكن هذا المنفذ لم يكن مشمولًا بها. وأي شخص فعّل RAY_AUTH_MODE=token استنادًا إلى تلك الملاحظة الإصدارية كان يشغّل، منذ ذلك الحين، نقطة إلغاء تسلسل غير موثقة على كل نسخة من Serve. الإصلاح لا يضيف حماية؛ بل يسد الفجوة بين ما كان موثقًا وما كان صحيحًا.
الإصلاح سبق الإصدار بثمانية عشر يومًا
تم دمج PR #65189 في 5 أغسطس. ووصل إلى المستخدمين المشغلين في 23 أغسطس، عندما صدر الإصدار 2.58.0. وخلال تلك الأيام الثمانية عشر بقي التصحيح قابلًا للقراءة في مستودع عام بينما لم يتضمنه أي إصدار — وهي الكلفة المعتادة لإصلاح مشكلة أمنية على العلن من دون حظر نشر، والسبب الذي يجعل سطر سجل التغييرات أهم مما يوحي به موضعه.
ما الذي ينبغي على المشغلين التحقق منه
يعتمد التعرض على مدى الوصول الشبكي، لأن المنفذ يرتبط عبر الواجهات على منفذ عابر. والأنظمة ذات الصلة هي تلك التي توجد فيها نسخ Serve على شبكة يمكن لمتصلين غير موثوقين الوصول إليها. وسيؤدي التحديث إلى نقل كل من العميل والخادم إلى أدوات gRPC المشتركة لدى Ray، والتي تطبق معترضات الأوامر وإعدادات TLS التي كان بقية Ray يستخدمها بالفعل.
