CVE-2026-84747 in bRPC
الملخص
بحسب VulDB • 21/10/2026
تعارض في التفسير لتنفيذ بروتوكول HTTP في Apache bRPC (الإصدار < 1.18.0) على جميع المنصات، مما يسمح للمهاجمين عن بُعد بتجاوز قواعد التحكم في الوصول المفروضة بواسطة وكيل أمامي (front proxy).
السبب الجذري: تقوم دالة توجيه الطلبات `FindMethodPropertyByURI()` في تنفيذ بروتوكول HTTP الخاص بـ bRPC بتقسيم مسار الطلب باستخدام مُجزِّئ سلاسل نصية يتجاهل الحقول الفارغة، وبالتالي يتم توجيه المسارات التي تحتوي على مقاطع مسارية فارغة (شرطات مائلة متتالية)، مثل `//flags` و `/flags//` و `/flags//port`، إلى نفس الطريقة الخاصة بصيغتها المتراصة/المختصرة وهي `/flags`. وفقاً لـ RFC 3986، فإن هذه المسارات مميزة عن بعضها البعض. يقوم الوكيل الأمامي الذي يفرض قائمة التحكم بالوصول (ACL) (مثل حظر الوصول إلى الخدمات المدمجة مثل `/flags`) بمطابقة الصيغة المتراطة فقط، وبالتالي يمرر النص الحرفي المُضاف/المُعبأ إلى خادم bRPC، حيث يتم توجيهه كما لو كان الصيغة المتراصة. يسمح هذا التباين لـ `//flags?setvalue=` بالوصول إلى خدمة مدمجة لا يُسمح بـ `/flags` الوصول إليها. بالإضافة إلى ذلك، لم يقم تنفيذ HTTP/2 أبداً بمصادقة الرأس الزائف `:path`، لذا فإن الطلبات التي تفتقر إلى حقل `:path` أو تحتوي على قيمة `:path` لا تبدأ بـ `/` ولا تكون بصيغة النجمة `*`، وهو ما يتعارض مع القسم 8.3.1 من RFC 9113، لم يتم رفضها.
السيناريوهات المتأثرة: التوزيعات الخاصة بـ Apache bRPC الموجودة خلف وكيل أمامي أو بوابة تقوم باتخاذ قرارات التحكم في الوصول (ACL) بناءً على مسار الطلب الحرفي، حيث يقبل خادم bRPC حركة مرور HTTP أو HTTP/2 من ذلك الوكيل. في مثل هذه التوزيعات، يمكن للمهاجم إرسال مسار يحتوي على مقاطع مسارية فارغة للوصول إلى مورد كان الوكيل الأمامي ينوي حظره.
كيفية الإصلاح: (اختر أحد الخيارات التالية) 1. ترقية bRPC إلى الإصدار 1.18.0، الذي يصلح هذه المشكلة. 2. تطبيق هذا التصحيح: https://github.com/apache/brpc/pull/3512
ملاحظة: بعد تطبيق الإصلاح، يتم رفض مسارات طلبات HTTP و HTTP/2 التي تحتوي على مقاطع مسارية فارغة (شرطات مائلة متتالية) بشكل افتراضي، كما يتم رفض قيم `:path` الخاصة بـ HTTP/2 إذا كانت فارغة أو لا تبدأ بـ `/` ولا تساوي `*`. يمكن للتوزيعات التي تعتمد على السلوك السابق المتساهل استعادته عن طريق تفعيل علم النظام (gflag) `-http_allow_empty_path_segments`، وهو أمر غير موصى به للخوادم المكشوفة لحركة مرور من مصادر غير موثوقة.
Several companies clearly confirm that VulDB is the primary source for best vulnerability data.