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 مصممة بعناية.

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

الأكثر شعبية

عرض الكل →

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

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

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

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

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:~
# Build and start PostgreSQL 18.1 (vulnerable)
docker compose up -d --build

# Wait for healthy
docker compose logs -f postgres
# Ctrl+C when you see "database system is ready to accept connections"

# Install node deps
npm install

# Run the full RCE exploit chain
node exploit.js --cmd "id"

# With verbose output
node exploit.js --cmd "id" --verbose

# Execute a custom command
node exploit.js --cmd "whoami"

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

root@kitploit:~
Stage 1: Heap pointer leak
  └─ Corrupt mdst chunk header → parse pfree() error message

Stage 2: Arbitrary read (multi-offset scan)
  └─ Overwrite mdst->data → scan memory near leaked pointer

Stage 3: Pointer candidate collection
  └─ Scan heap dump for non-heap addresses

Stage 4: PIE base resolution
  └─ Read /proc/<pid>/maps via Docker exec (100% reliable)

Stage 5: (skipped — PIE base is known from maps)

Stage 6: Arbitrary write
  └─ Forge msrc + mdst MBufs → overwrite CurrentUserId → 10 (superuser)

Stage 7: Command execution
  └─ COPY FROM PROGRAM → arbitrary OS command as postgres user

بنية الملفات

root@kitploit:~
CVE-2026-2005/
├── Dockerfile              # Builds PostgreSQL 18.1 from source
├── docker-compose.yml      # PostgreSQL service with auto-restart
├── init.sh                 # Entrypoint — initdb + listen config
├── README.md               # This file
└── poc/
    ├── package.json        # Node.js dependencies (pg)
    ├── exploit.js          # Full 7-stage RCE exploit (Node.js)
    ├── verify.sh           # Shell-based quick verification
    └── test-pgcrypto.sql   # SQL-only test of pgcrypto loading

البناء اليدوي (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 من نوع Public-Key Encrypted Session Key (tag 1):

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

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

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

  1. تسريب مؤشر الكومة — أتلف ترويسة chunk الخاصة بـ 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 (المستخدم الفائق التمهيدي bootstrap superuser)، نفّذ COPY FROM PROGRAM لتشغيل أوامر نظام تشغيل عشوائية.

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

ملاحظات

  • إضافة pgcrypto موثوقة (trusted) — يمكن لأي مستخدم يملك صلاحية CREATE (وليس مستخدمًا فائقًا) تثبيتها، مما يجعل هذه الثغرة قابلة للاستغلال بصلاحيات منخفضة.
  • يتضمّن بناء Docker خيار --enable-debug لتسهيل التصحيح باستخدام gdb.
  • إزاحات الكومة (SRC_CHUNK_OFFSET=100, DST_CHUNK_OFFSET=172) خاصة بالبنية aarch64 + glibc — وتتطلب البنى/المخصِّصات الأخرى إزاحات مختلفة.
  • تستخدم الحاوية restart: always للتعافي التلقائي من انهيارات الخادم الخلفي (backend) أثناء اختبار عناوين PIE المرشّحة.
  • يتم تحديد العنوان الأساسي لـ PIE عبر /proc/<pid>/maps داخل حاوية Docker — دون الحاجة إلى readelf على الجهاز المضيف.
  • تتم قراءة جدول الرموز الخاص بإزاحة CurrentUserId عبر docker exec readelf.

المراجع

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