MySQL Community Server 26.7.0 - عالي - مخطط مؤهل INSTALL COMPONENT - تخطي plugin_dir
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · mysql-install-component-scheme
الفئة: RCE الوصول: عن بُعد
MySQL Community Server mysqld 26.7.0 (06a5c1c) - Oracle
يتم تغليف file:// INSTALL COMPONENT الافتراضي بواسطة mysql_server_path_filter ويُفرض تحت plugin_dir. يبقى محمّل libminchassis غير المُرشَّح مسجَّلاً باسم dynamic_loader_scheme_file.mysql_minimal_chassis. يستحوذ مخطط URN file.mysql_minimal_chassis على ذلك التنفيذ ويقوم بـ dlopen لمسار مطلق بصلاحيات mysqld UID. لا يزال INSTALL PLUGIN / CREATE FUNCTION SONAME يرفضان /. يحتاج إلى INSERT على mysql.component (PR:H).
ينسخ المختبر نسخة أصلية من component_query_attributes.so إلى /tmp/MYSQL-INSTALL-COMPONENT-SCHEME-WITNESS.so. لا يوجد مكوّن مخصص.
| الحقل | القيمة |
|---|---|
| المعرّف | لا يوجد CVE بعد |
| الفئة | RCE (المكوّن dlopen بصلاحيات mysqld؛ PR:H؛ حمّل المختبر ملف .so أصلي) |
| الوصول | عن بُعد (SQL مُصادَق عليه؛ INSTALL COMPONENT / PR:H) |
| CWE | CWE-427 |
| CVSS | مرتفع: 7.2 CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H |
| المنتج | MySQL Community Server mysqld |
| المتأثر | 26.7.0 (06a5c1c99c377fc41b2eba1ea244e8b220bdc3c8) |
| المصادقة | INSTALL COMPONENT (INSERT على mysql.component) |
| الترخيص | GNU Affero GPL v3.0 |
| المختبر | 127.0.0.1 فقط. نسخة أصلية غير مستخدمة من مكوّن نُسخت خارج plugin_dir. |
امتلاك INSTALL COMPONENT. ضع مكوّن .so خارج plugin_dir (FILE DUMPFILE تحت secure_file_priv، أو كتابة محلية). INSTALL COMPONENT 'file.mysql_minimal_chassis:///abs/name' (بدون لاحقة .so؛ يضيفها المحمّل). dlopen بصلاحيات mysqld UID. يُحفظ نفس URN في mysql.component ويُعاد تحميله عند إعادة التشغيل.
يُرفض file:///abs/name (3529). يُرفض INSTALL PLUGIN ... SONAME '/abs/...' (1124). المخطط المؤهَّل هو المتبقي.
نفس عملية البحث في 26.7.0. set_default("dynamic_loader_scheme_file.mysql_server_path_filter") هو الحد الموثَّق. يبقى التنفيذ غير المُرشَّح مسجَّلاً حتى يتمكن الغلاف من استدعائه. يأخذ get_scheme_service_from_urn البايتات قبل :// كمخطط.
my_service<SERVICE_TYPE(dynamic_loader_scheme)> service(
(my_string("dynamic_loader_scheme_") + scheme).c_str(),
&imp_mysql_minimal_chassis_registry);
file.mysql_minimal_chassis مخطط حقيقي. لا يجرّبه component.test أبداً.
مسارات خاطئة: URN بثلاث شرطات مائلة (scheme:///tmp/...) تم تحميله؛ لم تكن هناك حاجة لأربع شرطات مائلة. يجب أن يحذف جذر URN اللاحقة .so.
cd lab
./run.sh
الصورة mysql:26.7.0. منشورة على 127.0.0.1:18650. plugin_dir=/usr/lib64/mysql/plugin. تنسخ component_query_attributes.so الأصلي إلى /tmp/MYSQL-INSTALL-COMPONENT-SCHEME-WITNESS.so.
SUCCESS mysql-install-component-scheme file-slash-denied=yes qualified-load=yes component-urn=yes dump=26.7.0 image=mysql:26.7.0 MYSQL-INSTALL-COMPONENT-SCHEME-WITNESS
لا تستحوذ على dynamic_loader_scheme_file.mysql_minimal_chassis من URNs الخاصة بـ SQL. اربط file فقط بتنفيذ مرشّح المسار. ارفض أي مخطط يسمّي تنفيذاً. أبقِ check_valid_path على كل محمّل ملفات.
06a5c1c99c377fc41b2eba1ea244e8b220bdc3c8)components/libminchassis/dynamic_loader.cc get_scheme_service_from_urnsql/server_component/dynamic_loader_path_filter.cc