CVE-2026-93174 in Linux
要約
〜によって VulDB • 2026年09月18日
Linuxカーネルにおいて、以下の脆弱性が修正されました:
bpf: copy_map_value_long() における per-CPU マップ値のパディングコピー
Linux カーネルでは、per-CPU マップ要素は `round_up(map->value_size, 8)` バイトで格納されます。UAPI のルックアップパスにおいて、各 CPU ごとの丸められたサイズが一時的なバッファにコピーされます。
しかしながら、`copy_map_value_long()` は `bpf_obj_memcpy()` に `'map->value_size'` を渡しています。マップに特殊なフィールドがある場合、`bpf_obj_memcpy()` は `memcpy()` を使用してそれらのフィールドの周囲をコピーしますが、`'map->value_size'` と `round_up(map->value_size, 8)` の間の末尾パディングはコピーされません。
UAPI ルックアップ用の一時的バッファは `__GFP_ZERO` フラグなしで割り当てられています。その結果、per-CPU マップの値サイズが `round_up(map->value_size, 8)` と等しくない場合、UAPI の LOOKUP_ELEM およびその派生操作は、ユーザー空間に対してパディング部分から古いヒープの内容を返す可能性があります。この問題は per-CPU マップにおける bpf_iter にも適用されます。
`copy_map_value_long()` から `bpf_obj_memcpy()` に `round_up(map->value_size, 8)` を渡すことで、特殊なフィールドの有無にかかわらず per-CPU マップの全スロットがコピーされるようにします。また、`bpf_obj_memcpy()` の long_memcpy パスから、もはや不要になった `round_up()` を削除します。
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.