CVE-2025-40271
fs/proc: proc_readdir_de() の uaf を修正
- 公開済み
- 2025/12/06
- 更新済み
- 2026/08/05
- CNA の割り当て
- Linux
- 観察された証拠
- 2026/05/04
プライマリ CVSS
nvd · CVSS 3.1
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H低 · 今後 30 日間
- パーセンタイル
- 38.7%
- モデルの日付
- 2026/09/21
EPSS は統計的な推定値であり、確実性や影響の尺度ではありません。 CVSS、KEV ステータス、暴露、環境と組み合わせます。
概要
Linux カーネルにおいて、以下の脆弱性が解決されました: fs/proc: fix uaf in proc_readdir_de() Pde は rb_erase() によって subdir rbtree から削除されますが、ノードが EMPTY に設定されないため、uaf アクセスが発生する可能性があります。RB_CLEAR_NODE() を使用して削除したノードを EMPTY に設定する必要があります。そうすれば pde_subdir_next() が NULL を返し、uaf アクセスを回避できます。stress-ng テスト中に uaf 問題を発見しました。テストケースの getdent と tun を同時に実行する必要があります。この問題の手順は以下のとおりです: 1) getdent を使用して /proc/pid/net/dev_snmp6/ ディレクトリを走査し、現在の pde は tun3 です。 2) [time windows] の間に netdevice tun3 と tun2 の登録を解除し、それらを rbtree から削除します。最初に tun3、次に tun2 を削除します。pde(tun2) は slab に解放されます。 3) getdent プロセスを続行すると、pde_subdir_next() が解放済みの pde(tun2) を返すため、uaf アクセスが発生します。 CPU 0 | CPU 1 ------------------------------------------------------------------------- traverse dir /proc/pid/net/dev_snmp6/ | unregister_netdevice(tun->dev) //tun3 tun2 sys_getdents64() | iterate_dir() | proc_readdir() | proc_readdir_de() | snmp6_unregister_dev() pde_get(de); | proc_remove() read_unlock(&proc_subdir_lock); | remove_proc_subtree() | write_lock(&proc_subdir_lock); [time window] | rb_erase(&root->subdir_node, &parent->subdir); | write_unlock(&proc_subdir_lock); read_lock(&proc_subdir_lock); | next = pde_subdir_next(de); | pde_put(de); | de = next; //UAF | rbtree of dev_snmp6 | pde(tun3) / \ NULL pde(tun2)
ソース
3CVE-2025-40271の技術的解析 — Linuxカーネルの/procファイルシステムにおける重大なUse-After-Free脆弱性、根本原因、再現手順、パッチの詳細を含む。
責任ある使用
脆弱性情報は、自分が所有しているシステム、またはテストを許可されているシステムでのみ使用してください。 Kitploit は公開研究メタデータにリンクしており、エクスプロイト コードや悪意のあるペイロードは保存しません。