CVE-2026-23111
netfilter: nf_tables: nft_map_catchall_activate() の逆転した genmask チェックを修正
- 公開済み
- 2026/02/13
- 更新済み
- 2026/09/08
- CNA の割り当て
- Linux
- 観察された証拠
- 2026/08/08
プライマリ 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 日間
- パーセンタイル
- 41.0%
- モデルの日付
- 2026/09/21
EPSS は統計的な推定値であり、確実性や影響の尺度ではありません。 CVSS、KEV ステータス、暴露、環境と組み合わせます。
概要
Linux カーネルにおいて、以下の脆弱性が解決されました:netfilter: nf_tables: nft_map_catchall_activate() の逆転した genmask チェックを修正。nft_map_catchall_activate() は、非 catchall 版の nft_mapelem_activate() や論理的に必要な動作と比較して、要素のアクティブ状態チェックが逆転しています。nft_map_catchall_activate() は、失敗したトランザクション中に非アクティブ化された catchall マップ要素を再アクティブ化するために、アボートパスから呼び出されます。既にアクティブな要素(再アクティブ化は不要)はスキップし、非アクティブな要素(復元が必要)を処理すべきです。しかし、現在のコードはその逆で、非アクティブな要素をスキップしてアクティブな要素を処理しています。正しい非 catchall アクティブ化コールバックと比較してください:nft_mapelem_activate(): if (nft_set_elem_active(ext, iter->genmask)) return 0; /* skip active, process inactive */。バグのある catchall 版は以下のとおりです:nft_map_catchall_activate(): if (!nft_set_elem_active(ext, genmask)) continue; /* skip inactive, process active */。その結果、DELSET 操作がアボートされた場合、catchall 要素に対して nft_setelem_data_activate() は呼び出されません。NFT_GOTO verdict 要素の場合、これは chain->use 参照カウントを復元するための nft_data_hold() が呼び出されないことを意味します。アボートサイクルごとに chain->use が恒久的にデクリメントされます。chain->use がゼロに達すると、catchall verdict 要素がまだそのチェーンを参照している間に DELCHAIN が成功し、チェーンが解放されて use-after-free が発生します。これは、CONFIG_USER_NS と CONFIG_NF_TABLES を有効化したディストリビューションにおいて、非特権ユーザーがユーザーネームスペース + nftables を介してローカル権限昇格に悪用可能です。チェックが nft_mapelem_activate() と一致するように否定を削除して修正します:アクティブな要素をスキップし、非アクティブな要素を処理します。
ソース
7CVE-2026-23111
- CVE-2026-23111エクスプロイト
Linuxカーネル nf_tables Use-After-Free (CVE-2026-23111) — LPE PoC
責任ある使用
脆弱性情報は、自分が所有しているシステム、またはテストを許可されているシステムでのみ使用してください。 Kitploit は公開研究メタデータにリンクしており、エクスプロイト コードや悪意のあるペイロードは保存しません。