
🔴 CVE-2025-40271: Linux カーネルの Use-After-Free の深刻な脆弱性
CVE-2025-40271 は、Linux カーネルの /proc ファイルシステムに影響を与える 深刻な Use-After-Free (UAF) 型の脆弱性 です。この欠陥は、/proc 内のディレクトリの内容をリストする役割を担う関数 proc_readdir_de() に存在します。
ディレクトリエントリ (PDE) が rb_erase() によって二分木 (rbtree) から削除される際、カーネルは ノードを空としてマークしませんでした。これにより危険なシナリオが発生します:
/proc/pid/net/dev_snmp6/) 間に、別のプロセスが ネットワークインターフェースを削除する (例: tun デバイス) と、ポインタが 既に解放されたメモリ を指し続ける可能性があります。カーネル開発チームは、ノードの処理を RB_CLEAR_NODE() に置き換える 重要なパッチ を実装しました。これにより以下が保証されます:
NULL を返す。パッチは以下の安定ブランチですでに利用可能です:
パッチの正確なコードを確認するには、以下の コミット を参照してください:
"In the Linux kernel, the following vulnerability has been resolved: fs/proc: fix uaf in proc_readdir_de(). PDE is erased from subdir rbtree through
rb_erase(), but not set the node to EMPTY, which may result in UAF access. We should useRB_CLEAR_NODE()to set the erased node to EMPTY, thenpde_subdir_next()will returnNULLto avoid UAF access."
getdent を使用して /proc/pid/net/dev_snmp6/ を走査する (現在のポインタは tun3)。tun3 と tun2) の登録を解除し、ツリーから削除する。
tun3 が削除され、次に tun2 が削除される (スラブに解放される)。getdent で走査を続行するが、pde_subdir_next() は tun2 (既に解放済み) を返すため、UAF が発生する。| CWE-ID | 名前 | ソース |
|---|---|---|
| CWE-416 | Use After Free | NVD |
| URL | 説明 |
|---|---|
| NVD - CVE-2025-40271 | 公式詳細 (CVSS スコア未設定のまま) |
| Kernel.org Commits | パッチのソースコード |
⚠️ 最終推奨事項:
カーネルバージョン 6.1.x、6.6.x、6.12.x、6.13.x を使用している場合は、直ちにパッチ適用済みバージョンにアップデート してください。不可能な場合は、コミットを手動で適用するか、セキュリティポリシー (例: chroot、SELinux) を使用して /proc へのアクセスを制限することを検討してください。
| フィールド | 詳細 |
|---|
| ID | CVE-2025-40271 |
| コンポーネント | Linux カーネル (fs/proc) |
| 深刻度 | 高 (ただし、現時点では NVD/NIST による公式評価は未実施) |
| 発見元 | stress-ng (getdent と tun ケースの同時実行) により検出 |
| NVD ステータス | 優先順位付けされていない (リソース制限のため) |