Skip to content
KitploitKITPLOIT
أدواتعمليات الاستغلالالمدونة
Log in
إرسال
أدواتعمليات الاستغلالالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

الخلاصاتاتصالالخصوصية© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
postgres-basebackup-symlink — PostgreSQL 18.6 - عالي - عن بُعد - كتابة ملفات - pg_basebackup يتبع رابطًا رمزيًا مطلقًا في tar متبقٍ من CVE-2026-6475 | Kitploit
أدوات/GitHubGitHub/abraxas/postgres-basebackup-symlink
تحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويباختبار الاختراقالأوراق والأبحاثأمن قواعد البياناتمختبرات وتدريب عملي
GitHub
abraxas/postgres-basebackup-symlink

postgres-basebackup-symlink

PostgreSQL 18.6 - عالي - عن بُعد - كتابة ملفات - pg_basebackup يتبع رابطًا رمزيًا مطلقًا في tar متبقٍ من CVE-2026-6475

عرض المستودع
6منذ 3 أياملم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

Abraxas Labs - postgres-basebackup-symlink

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  postgres-basebackup-symlink

postgres-basebackup-symlink

الفئة: كتابة ملفات الوصول: عن بُعد

PostgreSQL 18.6 (724edf9) - مجموعة تطوير PostgreSQL العالمية

أضاف CVE-2026-6475 الدالة path_is_safe_for_extraction لأسماء أعضاء ملف tar. لا تزال أهداف الروابط الرمزية المطلقة تتجاوز هذا الفحص حتى تعمل مساحات الجداول. بعد ذلك يقوم astreamer_file.c بإنشاء symlink() للهدف ثم يتبعه fopen(..., "wb") لاحقًا. الصيغة الافتراضية لـ pg_basebackup هي plain (-F p). يتحقق create_target_symlink في pg_rewind من المسار ولا ينشئ الرابط أبدًا.

يمكن لمصدر خبيث يتحدث BASE_BACKUP أن يزرع رابطًا رمزيًا مطلقًا ويكتب فوق أي ملف يستطيع UID النسخ الاحتياطي الكتابة فيه. نفس نموذج الضحية كما في 6475. هذا ليس إعادة تقديم لفحوصات أسماء الأعضاء.

المعرّفلا يوجد CVE بعد
الفئةكتابة ملفات (بقايا رابط رمزي مطلق في tar من CVE-2026-6475)
الوصولعن بُعد (UI:R عميل مقابل PostgreSQL خبيث)
CWECWE-59، CWE-22
CVSSمرتفع: 8.8 CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
المنتجPostgreSQL
المتأثروسم 18.6 REL_18_6 (724edf9bde9d356724ad384a2e196edc3c9f80f7)، pg_basebackup / pg_rewind داخل الشجرة
المصادقةتشغيل الضحية للأمر الافتراضي pg_basebackup -D <dir> مقابل مصدر المهاجم
الترخيصGNU Affero GPL v3.0
المختبر127.0.0.1 فقط

ما يمكن للمهاجم فعله

من يستطيع دفع مشغّل لتشغيل pg_basebackup -D مقابل PostgreSQL الخاص به (نفس نموذج UI:R كما في CVE-2026-6475) يمكنه الكتابة خارج -D.

الصلاحيةالطريقة / نقطة الوصولمُثبت مختبريًا أم مُستنتج
السلامة: كتابة ملف خارج -Dtar خبيث في BASE_BACKUP: عضو typeflag '2' باسم نسبي آمن (pg_tblspc/16384) وهدف رابط مطلق، ثم عضو عادي تحت ذلك الاسم. extract_link ثم create_file_for_extract مع fopen(..., "wb") بدون O_NOFOLLOWمُثبت مختبريًا. كُتب POSTGRES-BASEBACKUP-SYMLINK-WITNESS في /work/oracle/. الوجهة تحتفظ بالرابط الرمزي. tar التحكم (بدون رابط رمزي) ترك الـ oracle فارغًا وكتب PG_VERSION فقط داخل -D
السلامة: الكتابة فوق shell rc أو authorized_keys أو وحدة systemd للمستخدم أو crontabنفس نقطة الوصول، أي مسار يستطيع UID العميل الكتابة فيهمُستنتج. هذا المختبر لا يلمس تلك الملفات
التوفر: تحطيم إعدادات العميل أو المفاتيحنفس الكتابةمُستنتج. لم يُثبت
استطلاع قرص العميلالاستخراج كتابة وليس قراءةمغلق
تجاوز .. أو أسماء الأعضاء المطلقةpath_is_safe_for_extractionمغلق. هذا هو CVE-2026-6475
SQL غير متميز من جهة الخادم / بروتوكول بدون مصادقةخادم 18.6 الافتراضيمغلق. هذه البقايا في العميل
نسخ احتياطي بصيغة tar فقطpg_basebackup -F t يخزّن الـ tar دون استخراجمغلق
تنفيذ كود عن بُعد داخل postgresليس نقطة الوصول هذهمغلق

لدى pg_rewind نفس بقايا create_target_symlink / open(). هذا المختبر يشغّل pg_basebackup فقط.

كيف وجدته

ثبّتُ postgres/postgres على REL_18_6 بعد موجة 18.6 (28 ثغرة CVE، بالإضافة إلى مجموعة 18.4/18.2 الموجودة أصلًا على هذه الشجرة). اثنتان وعشرون عملية بحث. الخادم الافتراضي، SQL غير متميز، بروتوكول بدون مصادقة: لا شيء عند هذا المستوى. كان CVE-2026-6475 الشقيق الذي يستحق إعادة القراءة.

أسماء الأعضاء مفحوصة. أهداف الروابط الرمزية المطلقة ليست كذلك:

if (!is_absolute_path(linktarget) &&
    !path_is_safe_for_extraction(member->linktarget))
{
    pg_fatal("link target has unsafe path name: \"%s\"",
             member->linktarget);
}
extract_link(mystreamer->filename, linktarget);

لا يزال create_file_for_extract يستخدم fopen(filename, "wb"). التعليق عند astreamer_file.c:351-356 يقول إن التعيين يُطبَّق دون التحقق من أن الرابط داخل pg_tblspc.

منعطفات خاطئة مسجّلة سلفًا: اعتبار 6475 مغلقًا والمضي قدمًا؛ توجيه -D إلى دليل بيانات حي؛ الكتابة فوق shell rc لأغراض استعراضية. خادم 18.6 الشريف يصدر فقط روابط pg_tblspc/<oid> ويضع محتويات مساحة الجداول في أرشيف منفصل. يمكن لمصدر خبيث يتحدث BASE_BACKUP أن يضع العضو العادي التالي في نفس الـ tar. تلك هي البقايا.

المختبر

python3 postgres-basebackup-symlink-Abraxas-Labs.py

أو

cd lab
./run.sh

postgres:18.6 كصورة المصدر، تشغّل متحدث BASE_BACKUP. العميل هو pg_basebackup داخل الشجرة من نفس الوسم (pg_basebackup (PostgreSQL) 18.6). Loopback 127.0.0.1:19370. مشروع Compose باسم postgres-basebackup-symlink. لا توجّه -D إلى دليل بيانات حي.

SUCCESS postgres-basebackup-symlink control-inside=yes oracle-outside=yes dest-is-symlink=yes image=postgres:18.6 how=pg_basebackup POSTGRES-BASEBACKUP-SYMLINK-WITNESS

الإصلاح

تعامل مع أهداف الروابط الرمزية المطلقة كغير آمنة ما لم يُعَد كتابتها بواسطة --tablespace-mapping. افتح ملفات الاستخراج باستخدام O_NOFOLLOW / lstat حتى لا يمكن اتباع رابط مزروع. طبّق path_is_safe_for_extraction على link في rewind وكذلك على path. ارفض أي عضو عادي يمر مساره عبر رابط رمزي خرج من -D.

المراجع

  • github.com/postgres/postgres وسم REL_18_6 (724edf9bde9d356724ad384a2e196edc3c9f80f7)
  • src/fe_utils/astreamer_file.c · src/fe_utils/astreamer_tar.c
  • src/bin/pg_rewind/file_ops.c
  • قريب مُرقَّع (أسماء الأعضاء، وليس هذا الهدف): CVE-2026-6475
  • CWE-59 · CWE-22

الترخيص

GNU Affero GPL v3.0. انظر LICENSE. مختبر loopback فقط. لا ضمان.

تنزيل الأداة