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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2026-23416-POC — CVE-2026-23416 (linux kernel 6.17 – linux kernel 7 rc5) の POC - Antonius によって発見された脆弱性 | Kitploit
ツール/GitHubGitHub/bluedragonsecurity/cve-2026-23416-poc
脆弱性分析エクスプロイト論文と研究学習と教育バイナリエクスプロイト
GitHubbluedragonsecurity/cve-2026-23416-poc

CVE-2026-23416-POC

CVE-2026-23416 (linux kernel 6.17 – linux kernel 7 rc5) の POC - Antonius によって発見された脆弱性

リポジトリを見る

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2026-23416 — PoC

mm/mseal: マージ時にVMA endを正しく更新

脆弱性の発見者: Antonius / Blue Dragon Security


概要

項目詳細
CVE IDCVE-2026-23416
サブシステムmm/mseal — mm/vma.c
影響を受けるバージョンLinuxカーネル 6.17 から 7.0-rc5
修正バージョンLinux 7.0-rc6、安定版バックポート 6.18.21、6.19.11
必要なアクセス権非特権ユーザー(UID 1000、ケーパビリティなし)
使用するシステムコールmemfd_create, mmap, mseal
再現性100%決定的、1秒未満
予約日2026-01-13
公開日2026-04-02

脆弱性の説明

このバグは、mm/mseal.c内のmseal_apply()に存在します。mseal(2)システムコールを適用するためにVMAを反復処理する際、この関数はcurr_startとcurr_endを使用して位置を追跡します:

root@kitploit:~
/* Simplified pre-fix logic */
curr_end = vma->vm_end;
/* ... process VMA ... */
curr_start = curr_end;  /* advance to next VMA */

問題は、反復処理中に呼び出されるvma_modify_flags()がVMAをマージし、vma->vm_endをその場で変更する可能性があることです。これにより、マージ前に取得されたcurr_endの値が**stale(古い値)**になります。次の反復処理では、curr_startがこのstaleになったcurr_endに設定されるため、誤った開始アドレスが生成されます。

デバッグカーネル(CONFIG_DEBUG_VM)では、この不整合なvmg状態により以下が発火します:

root@kitploit:~
VM_WARN_ON_VMG(middle &&
    ((middle != prev && vmg->start != middle->vm_start) ||
     vmg->end > middle->vm_end))

mm/vma.c:830でカーネルのWARNINGが生成されます。

本番カーネル(WARNがno-opにコンパイルされる)では、staleなcurr_startが警告なしで進行します。つまり、VM_SEALEDが可視のエラーなしに誤ったアドレス範囲に適用される可能性があり、mseal(2)が提供することを意図したセキュリティ保証を損なうことになります。

呼び出し経路

root@kitploit:~
mseal(2)
  └─ do_mseal()              [mm/mseal.c]
       └─ mseal_apply()
            └─ vma_modify_flags()   [mm/vma.c]
                 └─ vma_modify()
                      └─ vma_merge_existing_range()
                           └─ VM_WARN_ON_VMG fires at line 830

根本原因

root@kitploit:~
/* BEFORE fix — mm/mseal.c mseal_apply() */
curr_end = vma->vm_end;           // captured here
/* ... vma_modify_flags() may merge VMAs, changing vma->vm_end ... */
curr_start = curr_end;            // stale! merge is not reflected

修正では、各反復処理で潜在的なマージの後にcurr_end = vma->vm_endを無条件に設定し、さらにcurr_start/curr_endを入力範囲とVMA境界から導出されるconst値としてクランプします:

root@kitploit:~
/* AFTER fix */
curr_end = vma->vm_end;           // unconditional, always fresh

トリガー時のVMAレイアウト

PoCは、2回目のmseal()呼び出しの前に以下のレイアウトを構築します:

root@kitploit:~
[0x21da6000 - 0x21de5fff]  VMA-A  (fd2, MAP_SHARED|MAP_FIXED) ← VM_SEALED after step 1
[0x21de6000 - 0x21e82fff]  VMA-B  (fd2, MAP_SHARED|MAP_FIXED) ← NOT sealed
[0x21e83000 - 0x21e84fff]  VMA-C  (leftover)

2回目のmseal(m2, 0x70000)は[0x21da6000 – 0x21e15fff]を対象とし、VMA-A(シール済み)からVMA-B(未シール)にまたがります。mseal_apply()内では、VMA-Bの処理時にVMA-Aのstaleなcurr_endがcurr_startとして使用され、不整合なvmg状態が作成されます。


セキュリティへの影響

  1. 非特権ユーザースペースから到達可能 — memfd_create + mmap + msealのみでよく、CAP_*は不要です。
  2. mseal(2)はセキュリティプリミティブです — VMAの不変性を保護します。適用時の論理エラーは、シール状態が混在するVMAにまたがる場合、VM_SEALEDが警告なしに誤適用される可能性があることを意味します。
  3. 本番環境ではサイレント — 非デバッグカーネルでは、不整合な状態が警告なしに進行し、VMAツリーに誤ったシール状態が残る可能性があります。

概念実証(PoC)

ファイル: cve-2026-23416-poc.c

ビルド

root@kitploit:~
gcc -o poc cve-2026-23416-poc.c

実行

root@kitploit:~
./poc

期待される出力(CONFIG_DEBUG_VM付きデバッグカーネル)

root@kitploit:~
============================================
CVE-2026-23416-POC
Discovered by : Antonius / Blue Dragon Security
  https://bluedragonsec.com
  https://github.com/bluedragonsecurity
============================================
[iter 0]
[iter 1]
...
[+] WARNING triggered N times total

dmesgで以下を確認してください:

root@kitploit:~
WARNING: CPU: X PID: Y at mm/vma.c:830 vma_merge_existing_range+0x...

要件

  • Linuxカーネル 6.17 – 7.0-rc5
  • VM_WARN_ON_VMGを観測するにはCONFIG_DEBUG_VM=y(本番カーネルではバグは依然として存在しますが、サイレントです)
  • rootや特別なケーパビリティは不要です

修正

上流の修正コミットが3つ(7.0-rc6および安定版バックポートに適用):

コミットツリー
40b3f4700e55stable

修正済みカーネルバージョン: 7.0-rc6、6.18.21、6.19.11


参考情報

  • CVE-2026-23416 — cve.org
  • CVE-2026-23416 — NVD
  • 技術解説 — Medium (@w1sdom)
  • Blue Dragon Security

開示のタイムライン

日付内容
2026-01-13CVE ID予約
2026-04-02CVE公開、修正コミットがマージ

著者

Antonius (@w1sdom)
Blue Dragon Security — インドネシア・タンゲラン
GitHub: bluedragonsecurity


本PoCは教育および研究目的で公開されています。

ツールをダウンロード
83737e34b83a
stable
2697dd8ae721stable