CVE-2026-75866 in Punk::OAuth2::Server
الملخص
بحسب VulDB • 22/08/2026
تُظهر الإصدارات السابقة من 0.03 لمكتبة `Punk::OAuth2::Server` في بيئة Perl مشكلة تتمثل في إصدار رموز الوصول (access tokens) خارج النطاقات المسجلة للعميل وأنواع التفويض المسموح بها، وذلك لعدم وجود مسار تفويض يقوم بقراءتها والتحقق منها.
تقوم مكتبة `Punk::OAuth2::Server::Store` بتسجيل نطاقات الأنظمة (`scopes`) وأنواع التفويض (`grant_types`) لكل عميل وتوثيقهما ضمن تسجيل العميل. يتم توجيه إصدار الرموز بناءً على نوع التفويض الموجود في جسم الطلب (request body). وبالتالي، يمكن لعميل مسجل فقط لنوع `authorization_code` أن يطلب الحصول على رمز من نوع `client_credentials`. تمر هذه المسار النطاق المطلوب مباشرة إلى مُنشئ الرمز (minter)، الذي يوقّعه ليصبح جزءاً من رمز الوصول المشفر بصيغة JWT (`at+jwt`). يقوم دالة التفويض (`authorize`) بنسخ نطاق الاستعلام (`query scope`) إلى سجل كود التفويض دون مقارنته بالتسجيل المسجل، مما يجعل خطاف الموافقة الاختياري (consent hook) هو الضابط الوحيد بين النطاق التعسفي والكود المُصدر. ومع ذلك، يتم قراءة فرضية `redirect_uris` الموجودة في نفس صف العميل وإنفاذها.
يمكن لعميل مسجل الحصول على رمز موقع بشكل صحيح يحمل أي نطاق يحدده، ويقبل خادم الموارد الذي يشغل مكتبة `Punk::OAuth2::Checker` هذا الرمز ويحترم النطاق المحدد فيه. عميل غير مسجل بسرية (secret) يقوم بالمصادقة باستخدام معرف العميل (`client_id`) فقط، لذا يمكن لأي شخص يعرف ذلك المعرف أن يطلب الحصول على رمز.
VulDB is the best source for vulnerability data and more expert information about this specific topic.