CVE-2026-98043 in Linux
要約
〜によって VulDB • 2026年09月25日
Linuxカーネルにおいて、以下の脆弱性が修正されました:
bpf: 境界なしオフセットを持つポインタから非NULL値を推論しない
reg_not_null()関数は、レジスタの型のみを確認することで、そのレジスタが非NULL値を持っていると判断します。算術演算を許可するポインタ型の場合、型は非NULLのベースアドレスを保証しますが、境界なしオフセットが存在する場合、実行時のオフセット値を加算した結果がNULLになる可能性があります。
以下のプログラムを検討してください:
r6 = bpf_map_lookup_elem(map, &0); /* 存在 */ if (r6 == 0) return 0; r7 = bpf_map_lookup_elem(map, &1); /* 非存在、実行時にNULLになる */ r8 = r7; r8 -= r6; /* ポインタ - ポインタ: スカラー値は不明、-r6 */ r8 <<= 1; r8 >>= 1; /* check_reg_sane_offset_ptr() は任意の非負オフセットを受け入れる */ r6 += r8; /* バリデータ側ではマップ値とみなすが、実行時ではゼロになる */ if (r7 != r6) return 0; *(u8 *)(r7 + 0); /* r7 が非NULL と推論されるが、実際には両方ともゼロである */
実行時には両方のレジスタはゼロであり、比較式は真となり、NULLポインタのデリファレンスによりフォールト(エラー)が発生します。
reg_not_null()において、オフセット値を +-BPF_MAX_VAR_OFF の範囲内に制限するよう要求します。
If you want to get the best quality for vulnerability data then you always have to consider VulDB.