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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
DIRTYFAIL — Linux page-cache 書き込み脆弱性の Detector + PoC: Copy Fail (CVE-2026-31431) および Dirty Frag (CVE-2026-43284/43500)。認可されたセキュリティ研究のみ。 | Kitploit
ツール/GitHubGitHub/karazajac/dirtyfail
特権昇格脆弱性分析エクスプロイトペネトレーションテスト論文と研究学習と教育レッドチーミングコンテナエスケープバイナリエクスプロイトラボと実践
GitHubkarazajac/dirtyfail

DIRTYFAIL

2612335ヶ月前Kitploit レビュー済み

人気

すべて見る →

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

すべてのツールを探索

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

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

Linux page-cache 書き込み脆弱性の Detector + PoC: Copy Fail (CVE-2026-31431) および Dirty Frag (CVE-2026-43284/43500)。認可されたセキュリティ研究のみ。

リポジトリを見る

DIRTYFAIL

Copy Fail および Dirty Frag Linux ページキャッシュ書き込み脆弱性ファミリーのための統合検出器および PoC ハーネス。``` ██████╗ ██╗██████╗ ████████╗██╗ ██╗███████╗ █████╗ ██╗██╗ ██╔══██╗██║██╔══██╗╚══██╔══╝╚██╗ ██╔╝██╔════╝██╔══██╗██║██║ ██║ ██║██║██████╔╝ ██║ ╚████╔╝ █████╗ ███████║██║██║ ██║ ██║██║██╔══██╗ ██║ ╚██╔╝ ██╔══╝ ██╔══██║██║██║ ██████╔╝██║██║ ██║ ██║ ██║ ██║ ██║ ██║██║███████╗ ╚═════╝ ╚═╝╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝╚═╝╚══════╝

DIRTYFAILは、セキュリティ研究者向けの小さく、十分に文書化されたCツールです。
このファミリーの3つのCVEに対してLinuxホストが脆弱かどうかを検出し、明示的でタイプされた確認をもって、脆弱なシステム上で呼び出し元をrootシェルに落とす実際の概念実証を実行します。

| CVE / バリアント | 名称 | DIRTYFAILのカバレッジ |
|---|---|---|
| **CVE-2026-31431** | Copy Fail (algif_aead `authencesn` ページキャッシュ書き込み) | 検出 + 完全なPoC |
| **CVE-2026-43284 v4** | Dirty Frag — IPv4 xfrm-ESP ページキャッシュ書き込み          | 検出 + 完全なPoC |
| **CVE-2026-43284 v6** | Dirty Frag — IPv6 xfrm-ESP ページキャッシュ書き込み (`esp6`) | 検出 + 完全なPoC |
| **CVE-2026-43500**    | Dirty Frag — RxRPC ページキャッシュ書き込み                  | 検出 + 完全なPoC |
| Copy Fail GCM バリアント | xfrm-ESP `rfc4106(gcm(aes))` ページキャッシュ書き込み        | 検出 + 完全なPoC |

**ボーナスモード:**

- **`--scan --active`** — sentinel-STORE アクティブプローブ。デフォルトの`--scan`はCVEごとの前提条件(カーネル、モジュール、LSMの状態)に加えて、Copy Failプリミティブのアクティブプローブを報告します。`--active`を追加すると、sentinel-file STOREプローブを他の4つのプリミティブ(ESP v4、ESP v6、RxRPC、GCM)に拡張します。各プリミティブは`/tmp`内のセンチネルに対してカーネルトリガーを発火し、マーカーバイトが実際に到達した場合のみVULNERABLEを報告します。これにより、バックポートパッチが適用されたカーネル(前提条件は脆弱性ありと示すがプローブは影響なし)と、完全なエクスプロイトを実行せずにパッチ未適用のカーネルを区別する唯一の方法です。`/etc/passwd`は決して触れられません。V6 STOREシフトをカーネルビルドごとに自動調整します。
- **`--exploit-backdoor`** — 永続的なuid-0バックドア:`/etc/passwd`内の`nologin`/`false`/`sync`行と長さを一致させて`dirtyfail::0:0:<pad>:/:/bin/bash`で上書きします。シェル終了後もページが排除されるまで持続します。状態は`/var/tmp/.dirtyfail.state`に保存され、`--cleanup-backdoor`でクリーンアップできます。`dirtyfail`というユーザー名は、このプロジェクトに意図的に一致させてあるため、監査ですぐに識別可能です — 許可されたレッドチームのエンゲージメントのために異なる識別子が必要な場合は、`src/backdoor.c`の`NEW_USER`を変更してください。
- **AppArmorバイパス** — Ubuntuの`apparmor_restrict_unprivileged_userns=1`ポリシーを、シングルホップの`change_onexec("crun")`再実行によって、userns機能を保持する非制約プロファイルに遷移して無効化します。各エクスプロイトモードはこれをフォークを介して内部的に処理します。親はinit名前空間に留まり、子がバイパスダンスを実行し、親はグローバルページキャッシュを読み取り、実際のinit名前空間のrootになるために`su`を実行します。レガシーな`--aa-bypass`フラグは、バイパス機構を単独でデバッグするために依然として存在します。詳細は[§8.5 アーキテクチャ](#85-architecture-outerinner-fork-based-bypass)を参照してください。

## 動作確認済み環境

DIRTYFAILは、複数のディストリビューションとカーネルバージョンにわたって**経験的にエンドツーエンドで検証**されています。以下のマトリックスは、各ディストリビューションの新規インストールに対して各`--exploit-*`モードを実行した結果を反映しています。

| ディストリビューション | カーネル | LSM | Copy Fail | xfrm-ESP v4 | xfrm-ESP v6 | RxRPC | GCM | バックドア | SU シェルコード |
|---|---|---|:-:|:-:|:-:|:-:|:-:|:-:|:-:|
| Ubuntu 24.04 LTS | `6.8.0-111-generic` | AppArmor | 🛡²  | ✅ | ✅ | ✅ | ✅¹ | ✅¹ | (テストなし) |
| Debian 13.4 | `6.12.86+deb13` | なし | 🛡 | 🛡 | 🛡 | 🛡 | 🛡 | 🛡 | 🛡⁵ |
| AlmaLinux 10.1 | `6.12.0-124.8.1.el10_1` | SELinux | ✅ | ✅ | ✅ | ⏭³ | ✅ | ✅ | ✅ |
| Fedora 44 (Server) | `6.19.10-300.fc44` | SELinux | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Ubuntu 26.04 LTS | `7.0.0-15-generic` | AppArmor (強化) | 🛡 | 🛡⁴ | 🛡⁴ | 🛡⁴ | 🛡⁴ | 🛡⁴ | 🛡⁵ |

**凡例:** ✅ エクスプロイト成功し、実際のinit名前空間rootを獲得  · 🛡 緩和済み — エクスプロイトがカーネルバグに到達できない(カーネルにパッチ適用済み、またはLSMが非特権パスをブロック)  · ⏭ 該当なし(前提条件不足)

### アクティブプローブ検証 (`--scan --active`)

`--active`フラグは、検出中にCVEごとにセンチネルファイルSTOREプローブを追加します。上記と同一の4つのディストリビューション(Debian、Fedora、AlmaLinux、Ubuntu 26.04)に対してプローブ出力を検証しました。以下のマトリックスは、モードごとのプローブ判定を示し、完全なエクスプロイトの真実と一対一で一致しています:

| ディストリビューション | Copy Fail プローブ | ESP v4 プローブ | ESP v6 プローブ | RxRPC プローブ | GCM プローブ |
|---|:-:|:-:|:-:|:-:|:-:|
| Debian 13.4 | 無傷 🛡 | 無傷 🛡 | 無傷 🛡 | 無傷 🛡 | 無傷 🛡 |
| Fedora 44   | マーカー@0 ✅ | STORE @0 ✅ | STORE @8 ✅ | バイト変化 ✅ | sentinel[0] 0x41→0x27 ✅ |
| AlmaLinux 10.1 | マーカー@0 ✅ | STORE @0 ✅ | STORE @8 ✅ | 前提条件 ⏭ | sentinel変更 ✅ |
| Ubuntu 26.04 | 無傷 🛡 | LSMブロック 🛡 | LSMブロック 🛡 | LSMブロック 🛡 | LSMブロック 🛡 |

V6プローブのSTOREランディングオフセット(FedoraとAlmaでは8)は、`calibrate_v6_shift()`が実行時に発見する経験的な`V6_STORE_SHIFT`と一致しており、自動調整が以前のハードコードされた定数をカーネルビルド間で正しく置き換えることを確認しています。

¹ GCMとバックドアは`algif_aead`がロード可能である必要があります。Ubuntu 24.04は`/etc/modprobe.d/disable-algif_aead.conf`をCopy Fail緩和措置としてブラックリストに登録して出荷しています。ブラックリストが削除された場合(例:緩和措置以前のカーネル上)、両方のモードがエンドツーエンドで動作します。

² Copy Failのalgif_aeadパスはmodprobeブラックリストによって緩和されています。基礎となるカーネルのCVEプリミティブは、`authencesn`に到達可能かどうかに関わらず同じです。xfrm-ESP、RxRPC、およびGCMバリアントはすべて同じカーネルに到達します。これらはalgif_aeadを経由しないためです。

³ AlmaLinux 10の`kernel-modules-extra`パッケージはMinimalインストールではデフォルトでインストールされないため、`rxrpc.ko`がディスク上に存在しません。EPELまたはAlmaLinux extrasリポジトリから`kernel-modules-extra-$(uname -r)`をインストールするとモジュールが戻ります。標準の最小インストールではRxRPCは到達不可能です。

⁴ **Ubuntu 26.04 LTSは非特権での悪用を包括的にブロックしています。** 出荷カーネル`7.0.0-15.15`(2026-04-22リリース)は、メインラインパッチ`f4c50a4034e6`(2026-05-07マージ)より**約2週間前**です — つまり、バグは依然としてカーネルに存在します。Ubuntuの防御は**AppArmor強化による多層防御**であり、カーネルパッチではありません:

- `apparmor_restrict_unprivileged_userns=1`がデフォルトで有効です。
- `unshare(CLONE_NEWUSER)`時に、カーネルレベルのAppArmor強制は、`(unconfined)`フラグ付きのプロファイル(`crun`、`chrome`、デフォルトの`unconfined`など)も含めて、自動的に`<profile>//&unprivileged_userns (mixed)`サブプロファイルに遷移し、`audit deny capability`を持ちます。新しいuserns内のuid 0はcapsを取得しません。
- 別のプロファイルへの`change_onexec`は役に立ちません — `crun`プロファイル(明示的な`userns,`許可と`flags=(unconfined)`を持つ)でさえ、unshare時に自動遷移します。`aa-exec -p crun bash -c 'unshare -U -n cat /proc/self/attr/current'`で確認 → `crun//&unprivileged_userns (mixed)`。
- `newuidmap`/`newgidmap`(setuid root)はuid_mapの書き込みに成功しますが、`setresuid(0)`は成功する一方で、`ioctl(SIOCSIFFLAGS)`およびその他すべてのCAP_NET_ADMINでゲートされたsyscallはEPERMを返します。これは、機能拒否が名前空間ごとであり、uidごとではないためです。

DIRTYFAILバイナリは正しくバイパスを仕掛け、ステージ2に到達しますが、新しいuserns内でCAP_NET_ADMINを獲得できません。バイパス技術に関わらず、エクスプロイトインフラストラクチャはLSM層でブロックされます。`change_onexec(crun)`、`change_onexec(chrome)`、`aa-exec -p <profile>`、直接の`unshare(USER|NET) + newuidmap`をテストしました — すべて同じ`unprivileged_userns`サブプロファイルを生成します。

**これはCanonicalによる優れたセキュリティ作業です。** このバグクラスは、カーネルの再構築を必要とせずに非特権ユーザーに対して緩和されます。その後の安定版アップデートでカーネルパッチ自体も適用される可能性が高く、防御が完成します。

⁵ **`--exploit-su`シェルコードインジェクション**は、同じCopy Fail algif_aead 4バイトプリミティブ(`cf_4byte_write`)に依存します。Copy Failがパッチ適用されている(Debian 13.4)またはLSMブロックされている(Ubuntu 26.04 — ただしalgif_aeadパスも7.0.0-15でパッチ済み)カーネルでは、投入は実行されますが、検証ステップが失敗し(「ページキャッシュが投入されたシェルコードと一致しません」)、自動復元によって`/usr/bin/su`が復元されます。AlmaLinux 10.1(ファイルオフセット`0x45b0`のエントリポイント)とFedora 44(オフセット`0x1b60`)でエンドツーエンドテスト済み。ELFパーサーは各ディストリビューションのPIEベースを独立して処理します。Fedora 44での実際のroot証明:`uid=0(root) gid=0(root) ... context=unconfined_u:unconfined_r:unconfined_t`。

テスト再現性:

- 各ディストリビューションをクリーンなISOから再インストールし、SSHキー認証 + NOPASSWD sudoを設定し、各々でDIRTYFAILをクローンしてビルドし、`clean-build` Parallelsスナップショットを取得してから、`--no-shell`(fadvise + drop_cachesによる自動復元)を付けて5つのエクスプロイトモードすべてを実行しました。
- 経験的な結果行は、実際の`--exploit-*`出力を解析し、成功シグナルを探すことで導出されています:`page cache now reports <user> with uid 0`、`root password field is now empty`、`is now uid 0`(バックドア)、またはいずれかの失敗パターン(`write did not land`、`byte flip failed`、`setresuid: Invalid`、`add_rxrpc_key: No such device`、`page cache not in expected shape`)。
- RxRPCとバックドアの「実際のroot」検証では、`echo "" | su - root` / `echo "" | su - dirtyfail`を実行し、`uid=0(root)`および`/etc/shadow`の読み取り成功を確認しました。

> **許可されたテストのみ。** 自分が所有しているか、評価のために明示的にエンゲージされているシステムでのみDIRTYFAILを使用してください。エクスプロイトモードは、`/etc/passwd`を*カーネルページキャッシュ内で*破損します(ディスク上のファイルは決して触れません)。クリーンアップは`dirtyfail --cleanup`または`echo 3 > /proc/sys/vm/drop_caches`で行います。

---

## 目次

1. [バグクラス](#1-the-bug-class)
2. [CVE-2026-31431 — Copy Fail](#2-cve-2026-31431--copy-fail)
3. [CVE-2026-43284 — Dirty Frag (xfrm-ESP)](#3-cve-2026-43284--dirty-frag-xfrm-esp)
4. [CVE-2026-43500 — Dirty Frag (RxRPC)](#4-cve-2026-43500--dirty-frag-rxrpc)
    - [4.5 アーキテクチャ概要](#45-architecture-overview)
5. [ビルド](#5-build)
6. [使用法](#6-usage)
7. [DIRTYFAILが各CVEを検出する方法](#7-how-dirtyfail-detects-each-cve)
8. [DIRTYFAILが各CVEを悪用する方法](#8-how-dirtyfail-exploits-each-cve)
    - [8.5 アーキテクチャ: 外部/内部フォークベースのバイパス](#85-architecture-outerinner-fork-based-bypass)
9. [緩和策](#9-mitigations)
10. [倫理と開示](#10-ethics--disclosure)
11. [謝辞](#11-credits)
ツールをダウンロード