PostgreSQL تعالج 52 ثغرة أمنية بينها ثغرة حرجة لتنفيذ التعليمات عن بُعد
تتيح ثغرة من نوع خلل في نوع البيانات في PostgreSQL لمستخدم قاعدة البيانات الذي يملك صلاحيات إنشاء الكائنات تنفيذ تعليمات برمجية على الخادم. وتعالج التحديثات التي صدرت في 13 نوفمبر 2026 هذه الثغرة إلى جانب 51 مشكلة أمنية أخرى. وللتخفيف الكامل من هذه الثغرة، يجب على المستخدمين أيضاً إعادة بناء أي إضافات لغة C مثبتة.
تحمل الثغرة، المعروفة بالمعرف CVE-2026-6460، درجة CVSS تبلغ 8.8. وتعمل التعليمات البرمجية المنفذة عبر هذه الثغرة بصلاحيات مستخدم نظام التشغيل الذي يشغل PostgreSQL. وتتأثر جميع الإصدارات السابقة لـ 18.7 و17.12 و16.16 و15.20 و14.25.
ولم تبلغ PostgreSQL Global Development Group، المسؤولة عن إصدارات قاعدة البيانات، عن أي هجمات معروفة تستغل هذه الثغرة. كما قيّمت وكالة الأمن السيبراني وأمن البنية التحتية (CISA) سجل CVE وأشارت إلى عدم رصد أي استغلال.
تتعلق هذه الثغرة بالأنواع المركبة (composite types)، وهي أنواع تُبنى من حقول مسماة، لكل منها نوع بيانات خاص به. ويمكن تغيير نوع أحد الحقول بينما تبقى قيم أقدم من ذلك النوع في أجزاء أخرى من الخادم، ما قد يسمح للخادم بقراءة قيمة قديمة كما لو كانت من النوع الجديد. ويعالج الإصلاح، المفصل في ملاحظات الإصدار الخاصة بالمشروع، هذه المشكلة عبر تنفيذ فحوصات إصدار تضمن قدرة الخادم على تحديد القيم التي لم تعد تتوافق مع أنواعها.
وقد فصّل الباحث الأمني Mehmet Ince استغلالاً عملياً لهذه الثغرة، عُرض على PostgreSQL 18.6، في مقال تقني نُشر هذا الأسبوع. ويتضمن استغلاله إعداد استعلام يحتوي على قيمة، وتغيير نوع أحد الحقول، ثم تنفيذ الاستعلام. ويتضمن المقال تعليمات SQL التي تتسبب في تعطل خادم غير محدث، وخطوة لاحقة تسرب عناوين الذاكرة، لكنه لا يقدم تعليمات SQL للخطوة النهائية التي تنفذ أمراً.
وأشار Ince إلى أنه استطاع “تفعيل هذا التعطل كدور تسجيل دخول بأدنى صلاحيات.” ويصف التنبيه الأمني الخاص بالمشروع المهاجم بأنه شخص قادر على إنشاء كائنات، دون تحديد الصلاحيات الدقيقة المطلوبة.
وتذكر Red Hat، التي توزع حزم PostgreSQL، في تقييمها للثغرة أن المهاجم يجب أن يملك حساب دخول إلى قاعدة البيانات مع القدرة على إنشاء الكائنات أو تعديلها. لكن يبقى غير واضح ما إذا كان حساب يملك الصلاحيات الافتراضية فقط قادراً على التصعيد إلى تنفيذ تعليمات برمجية.
ويعود Ince بأصل هذه الثغرة إلى 5 مايو 2004، حين أدخلت PostgreSQL إمكانية تغيير نوع عمود. وتعتمد طريقته لتنفيذ التعليمات البرمجية على تعديل أُجري في 14 مايو 2015. كما كيّف الاستغلال لخدمات PostgreSQL المُدارة وشارك إثباتات مفهوم مع فرق الأمن لديها في أغسطس. ومن بين مزودي الخدمة الذين تعاون معهم AWS (Aurora وRDS) وMicrosoft (Azure PostgreSQL) وGoogle (AlloyDB) وSupabase وDatabricks وUbicloud، وإن كان المقال لا يحدد حالة الترقيع الحالية لكل خدمة.
ويعترف المشروع بأكثر من عشرة مبلغين عن CVE-2026-6460، بينهم Ince، وينسب إليه خمس ثغرات أخرى في الإصدار نفسه. ومن بين الثغرات الـ52 المعالجة، تصنف 32 ثغرة بدرجة 8.8، وهي الأعلى في هذا الإصدار. ووفقاً لفهرس الثغرات الخاص بالمشروع، فإن ثغرة واحدة فقط لا تتطلب إجراءً من المستخدم أو تسجيل دخول. وتتيح هذه الثغرة، CVE-2026-116322، لعميل غير موثق إطلاق إعادة تشغيل خوادم PostgreSQL 18.
إصلاحات إضافية وتوصيات
عولجت عدة ثغرات أخرى في أدوات العميل. إذ يمكن لأرشيف مصمم بعناية أن يجعل pg_restore ينفذ تعليمات برمجية بصلاحيات المستخدم الذي يشغله، ويمكن لخادم مصدر مخترق أن يجعل psql يشغل تعليمات برمجية عبر سكربت الاستعادة في مخرجات tar الخاصة بـ pg_dump.
ويُنصح المسؤولون باتخاذ الإجراءات التالية:
- تحديث الخادم إلى الإصدارات 18.7 أو 17.12 أو 16.16 أو 15.20 أو 14.25، بحسب الإصدار الرئيسي المستخدم.
- إعادة بناء جميع إضافات لغة C أو تحديثها في الوقت نفسه مع الخادم. فقد تُحمّل الإضافات المبنية لإصدارات أقدم لكنها قد لا تكون محمية من الثغرات المعالجة في هذا الإصدار، وفقاً لإشعار المستودع.
- قد تفشل الإضافات المعاد بناؤها للإصدارات الجديدة في التحميل على خوادم أقدم. وتتطلب حزم الإضافات في مستودعات RPM الخاصة بالمشروع الآن الإصدار الفرعي الجديد.
- إذا كان PostgreSQL يعمل خارج وحدة خدمة الحزمة الخاصة به، كما هو الحال تحت Patroni، فيجب إعادة تشغيله فوراً بعد التحديث، وفقاً لأحد مشرفي حزم RPM.
- تحديث أدوات العميل مثل pg_dump وpg_restore وreindexdb وvacuumdb على جميع الأجهزة التي تستخدمها.
- تجنب استخدام إعداد composite_type_mismatch الجديد لتعطيل الفحوصات، لأنه يشكل مخاطر أمنية.
- لا يقدم التنبيه الأمني وملاحظات الإصدار الخاصة بالمشروع أي حل بديل للخوادم التي لا يمكن تحديثها في الوقت الحالي.
- وصل PostgreSQL 14 إلى نهاية العمر الافتراضي، وكان 14.25 آخر إصداراته. وتتأثر أيضاً إصدارات رئيسية أقدم ولم تتلق تحديثات.
- بعد التحديث، اتبع خطوات إعادة الفهرسة الموضحة في إعلان الإصدار. وإذا كنت تستخدم النسخ الاحتياطي التزايدي، فخذ نسخة احتياطية كاملة جديدة وابنِ النسخ التزايدية اللاحقة عليها.
المصدر: The Hacker News