Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
libextractor-ole2-rce — GNU libextractor ≤ 1.14 における重大なスタックベースのバッファオーバーフローの PoC。悪意のある .doc ファイルが無制限の VLA 割り当てを引き起こし、無条件の DoS を発生させる。マルチスレッド環境では、スタッククラッシュ保護を回避して完全な RCE を実現する。 | Kitploit
ツール/GitHubGitHub/haitam-lazaar/libextractor-ole2-rce
メモリフォレンジックペイロード生成脆弱性分析エクスプロイトペネトレーションテストバイナリエクスプロイトラボと実践
GitHubhaitam-lazaar/libextractor-ole2-rce

libextractor-ole2-rce

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

GNU libextractor ≤ 1.14 における重大なスタックベースのバッファオーバーフローの PoC。悪意のある .doc ファイルが無制限の VLA 割り当てを引き起こし、無条件の DoS を発生させる。マルチスレッド環境では、スタッククラッシュ保護を回避して完全な RCE を実現する。

リポジトリを見る
73日前未レビュー

CVE-2026-91752: GNU libextractor における OLE2 経由のスタックオーバーフロー

概要

GNU libextractor の OLE2 プラグインにおけるスタックベースのバッファオーバーフローにより、細工された .doc ファイルを処理する際にリモートサービス拒否(クラッシュ)およびコード実行が可能になります。この脆弱性は process_star_office()(ole2_extractor.c:349)に存在し、攻撃者が制御するファイルデータに基づいて最大 4MB の可変長配列(VLA)をスタック上に確保します。

主要な影響: リモートサービス拒否 — 悪意のあるファイルを処理するあらゆるアプリケーションをクラッシュさせる
二次的な影響: 隣接スレッドスタックによる -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 ペイロードを自動生成し、脆弱なドキュメントインデックス作成 Web サービスにアップロードします。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

再現手順

クラッシュ / DoS(あらゆるシステムで動作)

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)が発見しました。

謝辞

GNU libextractor のメンテナである Christian Grothoff 氏に特別な感謝を捧げます。彼の驚異的に迅速なトリアージ、プロフェッショナルなコミュニケーション、そしてこの監査中に報告された本件およびその他複数のメモリ安全性問題を解決するためのパッチ(v1.15、v1.16、v1.17)の迅速な展開に感謝します。

ライセンス

私の研究は教育および防御目的で提供されています。責任を持って使用してください。

ツールをダウンロード