
إثبات مفهوم لاستغلال CVE-2026-6471، يوضح تصعيد الامتيازات في PostgreSQL عبر فك الترميز المنطقي dlopen لتحقيق تنفيذ تعسفي للكود وباب خلفي للمستخدم الخارق.
يتيح فك الترميز المنطقي في PostgreSQL لدور غير متميز يمتلك صلاحية
REPLICATION إنشاء فتحة تكرار منطقي واختيار
المكوّن الإضافي للإخراج. في الإصدارات المتأثرة لا يوجد فحص تفويض على هذا
الاختيار، لذلك يقوم الخادم بـdlopen() لأي شيء يشير إليه اسم المكوّن الإضافي. تسمية
مسار مكتبة تشغّل كود تلك المكتبة داخل خلفية postgres، كمستخدم
نظام التشغيل الذي يشغّل الخادم. هذا تنفيذ كود عشوائي
كمستخدم نظام التشغيل لخادم قاعدة البيانات، وهو بالنسبة لقاعدة بيانات تحتوي على
بيانات التطبيق بمثابة استيلاء فعلي على الخادم.
تم الإصلاح في PostgreSQL 18.6, 17.11, 16.15, 15.19, و14.24 عبر
قائمة السماح output_plugin_libraries (الافتراضي pgoutput, test_decoding).
أي شيء غير موجود في تلك القائمة يظهر له الآن خطأ library "X" may not be used as an output plugin قبل أي dlopen.
قم بتشغيل نفس الخطوات ضد كلا البنائين ويتغيّر فقط إصدار PostgreSQL. حساب منخفض الصلاحية (LOGIN + REPLICATION، ليس مشرفًا فائقًا، لا وصول لنظام التشغيل) يقوم بما يفعله مشترك فك الترميز المنطقي العادي، ثم يطلب من الخادم تحميل مكتبة عشوائية كمكوّن إضافي للإخراج. في البناء القابل للاستغلال تعمل تلك المكتبة كمستخدم postgres لنظام التشغيل وتزرع دور باب خلفي دائم بصلاحيات مشرف فائق، لذلك ينتهي حساب التكرار فقط بتسجيل دخول مشرف فائق يعمل.
cve-2026-6471-postgres-logical-decoding-dlopen.txt هو حل Exploitmatic
(.txt): بيانات مع تأكيدات، بدون كود. يعيد وقت التشغيل تشغيله ضد
الجهاز. يسلّم الحل pwn.so في وقت التشغيل (base64 في الملف)،
ويقود SQL كدور التكرار منخفض الصلاحية، ثم يسجّل الدخول كدور
الباب الخلفي المشرف الفائق الذي زرعه الحمولة.pwn.c هو مصدر مكتبة الحمولة وpwn.so هو بناؤها: مُنشئ ELF واحد
يعمل كمستخدم postgres لنظام التشغيل، ويتصل عبر
المقبس المحلي كمشرف فائق لقاعدة البيانات (peer/trust)، وينشئ الدور
الدائم cve6471_backdoor LOGIN SUPERUSER PASSWORD 'BackdoorPass1'. يعمل
فقط إذا قام الخادم فعليًا بتحميل المكتبة، أي فقط على بناء
قابل للاستغلال. البناء باستخدام gcc -Os -shared -fPIC -o pwn.so pwn.c على libc لنظام Linux
مطابق لصورة الخادم.المتطلبات المسبقة: لديك وصول إلى docker.
يحتوي مجلد lab/ على النسخة المطابقة الدقيقة المستخدمة للتحقق من إثبات المفهوم هذا. قم ببناء
وتشغيل الجهازين (القابل للاستغلال = postgres 16.14، المُصحَّح = postgres 16.15):
docker build -t pg-6471-vuln -f lab/Dockerfile.vuln lab
docker build -t pg-6471-fixed -f lab/Dockerfile.fixed lab
docker run -d --name pg-6471-vuln -p 15432:5432 -e POSTGRES_PASSWORD=lab-super-pw pg-6471-vuln
docker run -d --name pg-6471-fixed -p 15433:5432 -e POSTGRES_PASSWORD=lab-super-pw pg-6471-fixed
يعمل كلا الجهازين على صورة postgres الرسمية القياسية مع wal_level=logical.
ينشئ سكربت التهيئة lab/01-repro.sh الدور منخفض الصلاحية الذي
يستخدمه الحل، repro_rep LOGIN REPLICATION PASSWORD 'repropass'، وهو
ليس مشرفًا فائقًا.
ثم أعد تشغيل الحل:
exploitmatic run cve-2026-6471-postgres-logical-decoding-dlopen.txt 127.0.0.1
وجّه إلى الجهاز المُصحَّح مع تجاوز متغير، بدون تعديل ملف:
exploitmatic run cve-2026-6471-postgres-logical-decoding-dlopen.txt 127.0.0.1 \
--var ctr=pg-6471-fixed
ctr هو حاوية docker، وpw هو كلمة مرور دور التكرار.
| الهدف | النتيجة |
|---|---|
| postgres 16.14 (قابل للاستغلال)، wal_level=logical | 4/4 تم التحقق، تسجيل دخول الباب الخلفي المشرف الفائق يعمل |
| postgres 16.15 (مُصحَّح)، wal_level=logical | 3/4 غير مُتحقق منه، لا باب خلفي |
للاستخدام المصرّح به والبحث فقط، على أنظمة تملكها أو لديك إذن لاختبارها. يوضح إثبات المفهوم هذا تصعيد صلاحيات بعد المصادقة: يتطلب حساب قاعدة بيانات منخفض الصلاحية موجودًا مع سمة REPLICATION، بالإضافة إلى طريقة لوضع كود يتحكم به المهاجم حيث يمكن لمستخدم postgres لنظام التشغيل تحميله. ليس هجومًا عن بُعد بدون مصادقة. يصل الكود المُحمَّل إلى مشرف فائق لقاعدة البيانات لأن حساب نظام التشغيل الذي يملك الخادم يمكنه الاتصال عبر المقبس المحلي كمشرف فائق (peer/trust)، وهو ممارسة نشر PostgreSQL القياسية.
| الخطوة | القابل للاستغلال 16.14 | المُصحَّح 16.15 |
|---|
| الاستطلاع (الدور تكرار، ليس مشرفًا فائقًا) | ينجح | ينجح |
| خط الأساس (فتحة منطقية مع pgoutput مدمج) | ينجح | ينجح |
| التشغيل (مكوّن الفتحة = مسار مكتبة المهاجم) | الخادم يحمّلها | مرفوض قبل التحميل |
| الاستيلاء (تسجيل الدخول كباب خلفي مشرف فائق مزروع) | مشرف فائق | لا يوجد مثل هذا الدور |