Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2026-2005 — إثبات مفهوم (PoC) لثغرة تجاوز سعة المخزن المؤقت في الكومة (heap buffer overflow) في pgcrypto الخاص بـ PostgreSQL، يوضح CVE-2026-2005: تنفيذ كود عن بعد (RCE) بصلاحيات منخفضة وتصعيد الامتيازات إلى مستخدم خارق (superuser) عبر حزمة OpenPGP مصممة بعناية. | Kitploit
أدوات/GitHubGitHub/open-flaw/cve-2026-2005
تصعيد الامتيازاتتحليل الثغرات الأمنيةالاستغلالما بعد الاستغلالتحليل الملفات الثنائيةأمن قواعد البياناتاستغلال الملفات الثنائية
GitHubopen-flaw/cve-2026-2005

CVE-2026-2005

إثبات مفهوم (PoC) لثغرة تجاوز سعة المخزن المؤقت في الكومة (heap buffer overflow) في pgcrypto الخاص بـ PostgreSQL، يوضح CVE-2026-2005: تنفيذ كود عن بعد (RCE) بصلاحيات منخفضة وتصعيد الامتيازات إلى مستخدم خارق (superuser) عبر حزمة OpenPGP مصممة بعناية.

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

الأكثر شعبية

عرض الكل →

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

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

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

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

CVE-2026-2005 — تجاوز سعة المخزن المؤقت في الكومة في pgcrypto الخاص بـ PostgreSQL

الالتزام المستهدف: 4b324845ba5d24682b9b3708a769f00d160afbd7 (PostgreSQL 18.1 — الإصدار المعرض للخطر)

الملخص

الحقلالتفاصيل
CVECVE-2026-2005
النوعتجاوز سعة المخزن المؤقت في الكومة
المكوّنcontrib/pgcrypto/pgp-pubdec.c — pgp_parse_pubenc_sesskey()
التأثيرتنفيذ كود عن بُعد (RCE) كمستخدم نظام التشغيل الذي يشغّل PostgreSQL
CVSS8.8 (AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H)
المصادقة المطلوبةمنخفضة — أي مستخدم مصادق عليه بصلاحية CREATE
الإصدارات المتأثرةPostgreSQL 14.0–14.20, 15.0–15.15, 16.0–16.11, 17.0–17.7, 18.0–18.1
تم الإصلاح في14.21, 15.16, 16.12, 17.8, 18.2 (12 فبراير 2026)
البنيةaarch64 (ARM64) — إزاحات الكومة وتخطيط MBuf خاصة بالبنية و glibc

بدء سريع

root@kitploit:~
# بناء وتشغيل PostgreSQL 18.1 (الإصدار المعرض للخطر)
docker compose up -d --build

# انتظر حتى يصبح جاهزًا
docker compose logs -f postgres
# اضغط Ctrl+C عندما ترى "database system is ready to accept connections"

# إعداد لمرة واحدة: انسخ ملف postgres الثنائي لتحليل الرموز دون اتصال
docker cp cve-2026-2005-poc:/usr/local/pgsql/bin/postgres ./postgres

# تثبيت تبعيات Node
npm install

# تشغيل سلسلة الاستغلال الكاملة لـ RCE (SQL خالص — بدون تفاعل مع Docker)
node exploit.js --cmd "id"

# مع إخراج تفصيلي
node exploit.js --cmd "id" --verbose

# تنفيذ أمر مخصص
node exploit.js --cmd "whoami"

سلسلة الاستغلال (7 مراحل)

root@kitploit:~
المرحلة 1: تسريب مؤشر الكومة
  └─ إتلاف ترويسة كتلة mdst → تحليل رسالة خطأ pfree()

المرحلة 2: قراءة عشوائية (فحص متعدد النوافذ)
  └─ الكتابة فوق mdst->data → فحص الذاكرة بالقرب من المؤشر المسرَّب

المرحلة 3: جمع المرشحين للمؤشرات
  └─ فحص تفريغات الكومة بحثًا عن قيم 8 بايت تشبه المؤشرات

المرحلة 4: تحديد عنوان قاعدة PIE
  └─ التصويت على العناوين المسرَّبة مقابل إزاحات رموز ELF (تجميع حسب
     إزاحة الصفحة، دون اتصال — تُحلَّل الرموز من النسخة الثنائية المحلية)

المرحلة 5: التحقق من PIE
  └─ قراءة عشوائية لـ CurrentUserId عند القاعدة المرشحة → المقارنة مع OID الجلسة

المرحلة 6: كتابة عشوائية
  └─ تزوير MBufs الخاصة بـ msrc و mdst → الكتابة فوق CurrentUserId → 10 (مستخدم خارق)

المرحلة 7: تنفيذ الأوامر
  └─ COPY FROM PROGRAM → تنفيذ أمر نظام تشغيل عشوائي كمستخدم postgres

هيكل الملفات

root@kitploit:~
CVE-2026-2005/
├── Dockerfile              # بناء PostgreSQL 18.1 من المصدر
├── docker-compose.yml      # خدمة PostgreSQL مع إعادة تشغيل تلقائية
├── init.sh                 # نقطة الدخول — initdb + إعداد الاستماع
├── README.md               # هذا الملف
└── poc/
    ├── package.json        # تبعيات Node.js (pg)
    ├── exploit.js          # استغلال RCE الكامل من 7 مراحل (Node.js)
    ├── verify.sh           # تحقق سريع قائم على الصدفة
    └── test-pgcrypto.sql   # اختبار تحميل pgcrypto عبر SQL فقط

البناء اليدوي (macOS / Linux)

root@kitploit:~
git clone https://github.com/postgres/postgres.git
cd postgres
git checkout 4b324845ba5d24682b9b3708a769f00d160afbd7
./configure \
    --prefix="$HOME/projects/pg/pgsql" \
    --with-libxml \
    --with-libxslt \
    --enable-debug \
    --with-ssl=openssl
make -j$(nproc)
make install-world-bin

المتطلبات

  • Docker + Docker Compose (مضيف aarch64، مثل Mac بمعالج Apple Silicon)
  • Node.js ≥ 18
  • ~2 جيجابايت من القرص لبناء PostgreSQL
  • يستغرق البناء ~3–5 دقائق في أول تشغيل
  • tmux (اختياري — مطلوب فقط مع علامة --gdb)

تفاصيل الثغرة

الخلل موجود في pgp_parse_pubenc_sesskey() في contrib/pgcrypto/pgp-pubdec.c. عند تحليل حزمة مفتاح جلسة مشفرة بمفتاح عام من OpenPGP (العلامة 1):

  1. يقرأ الكود طول MPI (عدد صحيح متعدد الدقة) من الحزمة
  2. يخصص مخزنًا مؤقتًا بناءً على ذلك الطول
  3. يفك تشفير MPI عبر RSA إلى المخزن المؤقت
  4. يقرأ طول مفتاح الجلسة من البيانات المفكوكة بدون التحقق من الحدود
  5. ينفذ memcpy لبيانات مفتاح الجلسة إلى مخزن مؤقت بحجم ثابت بناءً على الطول غير المُتحقق منه

يمكن أن يكتب memcpy خارج حدود المخزن المؤقت في الكومة، مما يُتلف بيانات أو بيانات وصفية مجاورة في الكومة، ويؤدي إلى تنفيذ كود عشوائي.

تفاصيل سلسلة الاستغلال

  1. تسريب مؤشر الكومة — إتلاف ترويسة كتلة malloc؛ تحليل رسالة خطأ pfree() لاستخراج عنوان كومة mdst->data.
  2. تحديد عنوان قاعدة PIE — قراءة /proc/<pid>/maps من حاوية Docker للعثور على عنوان تحميل ملف postgres الثنائي في وقت التشغيل.
  3. كتابة عشوائية — تزوير بنيتي MBuf لكل من msrc (المصدر) و mdst (الوجهة) عبر تجاوز سعة الكومة. يشير msrc إلى حزمة symenc مضمّنة تحتوي على OID المستخدم الخارق (10)؛ ويشير mdst إلى CurrentUserId - 4 (مع مراعاة ترويسة SET_VARSIZE ذات 4 بايت).
  4. تصعيد الامتيازات — مع CurrentUserId = 10 (المستخدم الخارق للتمهيد)، تنفيذ COPY FROM PROGRAM لتشغيل أوامر نظام تشغيل عشوائية.

خيارات سطر الأوامر

ملاحظات

  • امتداد pgcrypto موثوق — يمكن لأي مستخدم بصلاحية CREATE (وليس مستخدمًا خارقًا) تثبيته، مما يجعل هذه الثغرة قابلة للاستغلال بصلاحيات منخفضة.
  • يتضمن بناء Docker خيار --enable-debug لتسهيل التصحيح باستخدام gdb.
  • إزاحات الكومة (SRC_CHUNK_OFFSET=100, DST_CHUNK_OFFSET=172) خاصة ببنية aarch64 + glibc — تتطلب البنى/المُخصِّصات الأخرى إزاحات مختلفة.
  • يتم تحديد عنوان قاعدة PIE من مؤشرات الكومة المسرَّبة عبر التصويت على إزاحات الرموز، ثم يتم التأكيد بقراءة CurrentUserId عبر نفس بدائية القراءة العشوائية.

المراجع

  • نشرة أمان PostgreSQL
  • التقرير الفني من ZeroDay.Cloud
  • إدخال NVD
تنزيل الأداة
العلامةالافتراضيالوصف
--cmdidأمر نظام التشغيل للتنفيذ بعد نجاح الاستغلال
--key-size3072حجم مفتاح RSA بالبت
--host127.0.0.1مضيف PostgreSQL
--port5432منفذ PostgreSQL
--userpostgresمستخدم قاعدة البيانات
--password(فارغ)كلمة مرور قاعدة البيانات
--dbnamepostgresاسم قاعدة البيانات
--binary./postgresمسار ملف postgres الثنائي ELF للرموز
--scan-offsetتلقائيتجاوز إزاحة فحص الكومة من المؤشر المسرَّب
--verboseإيقافتفعيل إخراج التصحيح التفصيلي
--gdbإيقافإرفاق GDB عبر tmux عند نقطة التجاوز