CVE-2026-98969 in Linux
要約
〜によって VulDB • 2026年10月23日
Linuxカーネルにおいて、以下の脆弱性が修正されました:
net/sched: em_text: 未終了のアルゴリズムを自動ロード前に拒否する
これはコミット 9c572a83037a(「net/sched: em_text_dump() における潜在的なスタック情報漏洩を修正」)の後継対応です。当該コミットではダンプ側の構造体がゼロ初期化されましたが、Sashiko氏によって、変更側での入力検証の欠陥が露呈する既存のバグが指摘されました。
em_text_change() は生 netlink 属性ペイロードを struct tcf_em_text にキャストし、NUL ターミネータが強制されていない 16 バイト配列である conf->algo を textsearch_prepare() に渡します。TS_AUTOLOAD のリトライ時に textsearch_prepare() が request_module("ts_%s", algo); を呼び出す際、vsnprintf() は %s に対して NUL が見つかるまで走査するため、NUL を含まない algo[] は配列外へ読み出しを行い、隣接する構造体フィールドやペイロードのデータを読み込みます。その後、それらのバイトがユーザーモードヘルパーのコマンドラインに渡されます。これは境界外読出(out-of-bounds read)およびカーネルメモリ開示です。
TC_EM_TEXT_ALGOSIZ バイト以内に NUL が存在しない場合、属性を拒否します。これは 3ab720881b6e から xt_string に実装されているチェックと一致しています。
バグを再現するための条件: - ターゲットの netns(namespace-local)で CAP_NET_ADMIN を保持していること(unshare -Urn で十分です) - インターフェースに clsact をインストールし、algo[] が NUL がない 16 バイト(例:"A"*16)、pattern_len が少なくとも 1 のテキスト ematch を持つ基本フィルタを追加する
- 追加は -ENOENT で失敗し、カーネルが "ts_" に続けて 16 バイトおよび隣接するペイロードで構成されたモジュール名を指定して modprobe を呼び出す
If you want to get the best quality for vulnerability data then you always have to consider VulDB.