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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
libextractor-ole2-rce — نموذج إثبات مفهوم (PoC) لثغرة تجاوز سعة المخزن المؤقت المعتمد على المكدس الحرجة في GNU libextractor ≤ 1.14. ملف .doc ضار يُفعّل تخصيص VLA غير محدود مما يسبب حجب الخدمة (DoS) غير المشروط. في البيئات متعددة الخيوط، يتجاوز حمايات stack-clash لتحقيق تنفيذ التعليمات البرمجية عن بُعد (RCE) الكامل. | Kitploit
أدوات/GitHubGitHub/haitam-lazaar/libextractor-ole2-rce
تحليل الذاكرة الجنائيتوليد الحمولةتحليل الثغرات الأمنيةالاستغلالاختبار الاختراقاستغلال الملفات الثنائيةمختبرات وتدريب عملي
GitHubhaitam-lazaar/libextractor-ole2-rce

الأكثر شعبية

عرض الكل →

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

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

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

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

حول

نموذج إثبات مفهوم (PoC) لثغرة تجاوز سعة المخزن المؤقت المعتمد على المكدس الحرجة في GNU libextractor ≤ 1.14. ملف .doc ضار يُفعّل تخصيص VLA غير محدود مما يسبب حجب الخدمة (DoS) غير المشروط. في البيئات متعددة الخيوط، يتجاوز حمايات stack-clash لتحقيق تنفيذ التعليمات البرمجية عن بُعد (RCE) الكامل.

libextractor-ole2-rce

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

CVE-2026-91752: تجاوز سعة المكدس في GNU libextractor عبر OLE2

الملخص

يسمح تجاوز سعة المخزن المؤقت المعتمد على المكدس في إضافة OLE2 الخاصة بـ GNU libextractor بـ رفض الخدمة عن بُعد (انهيار) وتنفيذ التعليمات البرمجية عند معالجة ملف .doc مُصمَّم خصيصًا. توجد الثغرة في process_star_office() (ole2_extractor.c:349) التي تُخصِّص مصفوفة متغيرة الطول (VLA) تصل إلى 4 ميجابايت على المكدس بناءً على بيانات الملف التي يتحكم بها المهاجم.

التأثير الأساسي: رفض الخدمة عن بُعد — يُسبب انهيار أي تطبيق يعالج الملف الخبيث
التأثير الثانوي: تنفيذ التعليمات البرمجية عن بُعد عبر تجاوز -fstack-clash-protection باستخدام مكدس الخيط المجاور

الحقلالقيمة
CVECVE-2026-91752
المنتجGNU libextractor
الإصدارات المتأثرة< 1.15 (جميع الإصدارات حتى 1.14)
الإصدار المُصلَّح1.15
CVSS 4.08.7 HIGH (CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N)
CVSS 3.17.5 HIGH (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H)
الخطورةHIGH (DoS) / CRITICAL (RCE في وضع متعدد الخيوط داخل العملية)
CWECWE-789 (تخصيص الذاكرة بقيمة حجم مفرطة) / CWE-121 (تجاوز سعة المخزن المؤقت المعتمد على المكدس)
ناقل الهجومالشبكة (أي مسار لمعالجة الملفات)
الامتيازات المطلوبةلا شيء
تفاعل المستخدملا شيء
CNAVulnCheck
الباحثHaitam Lazaar

ملاحظة: يُفعِّل GCC الحديث (≥8) خيار -fstack-clash-protection افتراضيًا، والذي يحوِّل في التطبيقات أحادية الخيط التجاوز القابل للاستغلال إلى انهيار آمن. ومع ذلك، يمكن تجاوز هذا التخفيف في التطبيقات متعددة الخيوط حيث تكون مكدسات الخيوط متجاورة في الذاكرة — فتنجح اختبارات VLA في مكدس الخيط المجاور، مما يتيح تنفيذ التعليمات البرمجية الكامل حتى على البِنى المُحصَّنة. راجع docs/BYPASS.md للتفاصيل.

البرمجيات المتأثرة

  • GNU libextractor ≤ 1.14 (جميع الإصدارات التي تحتوي على إضافة OLE2)
  • أي تطبيق يستخدم libextractor لمعالجة ملفات .doc غير الموثوقة
  • GNUnet (مُفهرِس مشاركة الملفات)

عرض توضيحي سريع

root@kitploit:~
# Generate malicious .doc
python3 poc/gen_payload.py exploit.doc

# Any application that processes this file with libextractor crashes:
extract exploit.doc                    # CLI tool → OLE2 plugin worker crashes
gnunet-publish exploit.doc             # GNUnet → gnunet-helper-fs-publish crashes

إثبات المفهوم (عرض مختبري)

Remote Code Execution Demo

يوضح الرسم المتحرك أعلاه بيئة المختبر الآلية المتوفرة في دليل lab-setup/. بمجرد تشغيل docker compose up، تُنشئ حاوية المهاجم تلقائيًا حمولة .doc الخبيثة وترفعها إلى خدمة فهرسة المستندات المعرَّضة للثغرة. يُفعِّل منطق تحليل libextractor تجاوز سعة المكدس VLA، مما يسمح للمهاجم بتحقيق تنفيذ تعليمات برمجية عشوائية بصمت. نتحقق من الاستغلال بتشغيل cat /tmp/pwned على الحاوية الهدف لرؤية مخرجات الأمر.

هيكل المستودع

root@kitploit:~
├── poc/                    # Proof of concept
│   ├── gen_payload.py      # Generates malicious .doc trigger file
│   ├── poc_rce.c           # Demonstrates code execution (protection disabled)
│   └── bypass_rce.c        # Stack-clash-protection bypass (multi-threaded)
├── exploit/                # Exploitation details
│   ├── remote_exploit.sh   # Example: triggering via HTTP upload (lab scenario)
│   └── extract_server.c    # Example: vulnerable application using libextractor
├── patches/                # Recommended fix
│   └── 0001-fix-ole2-vla.patch
├── lab-setup/              # Reproducible test environment
│   ├── Dockerfile          # Builds vulnerable libextractor from source
│   ├── docker-compose.yml  # Full lab (includes HTTP upload as one test vector)
│   └── upload_server.py    # Document indexing service simulation
└── docs/
    ├── BYPASS.md           # Stack-clash-protection bypass technique
    └── PAYLOAD_STRUCTURE.md # Malicious .doc file format documentation

إعادة الإنتاج

الانهيار / رفض الخدمة (يعمل على أي نظام)

root@kitploit:~
# Build libextractor from source
./configure && make && sudo make install

# Generate trigger file
python3 poc/gen_payload.py exploit.doc

# Crash any libextractor consumer
extract exploit.doc   # crashes the OLE2 plugin worker

تنفيذ التعليمات البرمجية (التخفيف معطَّل)

root@kitploit:~
gcc -O2 -fno-stack-clash-protection -o poc_rce poc/poc_rce.c -lextractor
ulimit -s 2048
./poc_rce exploit.doc   # executes attacker payload (exit code 42)

تنفيذ التعليمات البرمجية (تجاوز التخفيف، متعدد الخيوط)

root@kitploit:~
gcc -O2 -fstack-clash-protection -o bypass_rce poc/bypass_rce.c -lextractor -lpthread
./bypass_rce exploit.doc   # bypasses protection, executes payload (exit code 42)

مختبر Docker

root@kitploit:~
docker-compose -f lab-setup/docker-compose.yml up -d

السبب الجذري

root@kitploit:~
// src/plugins/ole2_extractor.c:349
off_t size = gsf_input_size(src);        // Attacker controls via OLE2 stream
if (size > 4 * 1024 * 1024) return 0;   // Max 4MB allowed — but stack is 1-8MB
char buf[size];                           // VLA: up to 4MB ON THE STACK
gsf_input_read(src, size, buf);           // Write attacker data

بدون -fstack-clash-protection، يُولِّد المترجم:

root@kitploit:~
sub %rax, %rsp    ; Single instruction, jumps RSP past guard page

مع -fstack-clash-protection، لا يزال من الممكن تجاوز الاختبارات في السياقات متعددة الخيوط (راجع docs/BYPASS.md).

التصحيح الرسمي (libextractor 1.15)

root@kitploit:~
-  if ( (size < 0x374) ||
-       (size > 4 * 1024 * 1024) )
+  char buf[0x374];
+
+  if (size < 0x374)
     return 0;
-  {
-    char buf[size];
-    gsf_input_read (src, size, (unsigned char*) buf);
+  gsf_input_read (src, sizeof(buf), (unsigned char*) buf);

المراجع

  • سجل CVE: https://www.cve.org/CVERecord?id=CVE-2026-91752
  • مدخل NVD: https://nvd.nist.gov/vuln/detail/cve-2026-91752
  • استشارة VulnCheck: https://www.vulncheck.com/advisories/gnu-libextractor-before-1.15-stack-overflow-via-ole2
  • التزامات التصحيح في المنبع:
    • Commit 04004eb1
    • Commit 2781c7e9
  • المنتج: https://www.gnu.org/software/libextractor/

الفضل

اكتشفتها أنا (Haitam Lazaar) خلال بحثي الأمني المستقل.

شكر وتقدير

شكر خاص لـ Christian Grothoff، المشرف على GNU libextractor، على سرعة الفرز المذهلة والتواصل المهني والنشر السريع للتصحيحات (v1.15 وv1.16 وv1.17) لحل هذه المشكلة وعدة مشكلات أخرى متعلقة بسلامة الذاكرة تم الإبلاغ عنها خلال هذا التدقيق.

الترخيص

بحثي مُقدَّم لأغراض تعليمية ودفاعية. استخدمه بمسؤولية.

تنزيل الأداة