LinuxのLinux Kernelにおける初期化されていないリソースの使用に関する脆弱性
タイトル LinuxのLinux Kernelにおける初期化されていないリソースの使用に関する脆弱性
概要

Linuxカーネルにおいて、以下の脆弱性が修正されました。bpf_xdp_store_bytesプロトタイプの修正は、読み取り専用引数に関するものでした。Ciliumで一部のマップをBPF側から読み取り専用にした際に、bpf_xdp_store_bytesプロトタイプに誤りがあることが判明しました。具体的には、検証器が以下のエラーを出していました。ret = ctx_store_bytes(ctx, l3_off + offsetof(struct iphdr, saddr), &nat-address, 4, 0); 635: (79) r1 = *(u64 *)(r10 -144) ; R1はctx()、R10はfp0、fp-144はctx()を示しています。636: (b4) w2 = 26 ; R2は26です。637: (b4) w4 = 4 ; R4は4です。638: (b4) w5 = 0 ; R5は0です。639: (85) call bpf_xdp_store_bytes#190 はマップへの書き込みが禁止されているため、value_size=6、off=0、size=4の書き込みに失敗しました。natはBPF_F_RDONLY_PROGマップから来ており、そのためR3はPTR_TO_MAP_VALUEです。検証器はARG_CONST_SIZE引数に到達するときにcheck_mem_size_regでR3のヘルパーのメモリアクセスをチェックします。第三引数はARG_PTR_TO_UNINIT_MEM型が期待されており、これはMEM_WRITEフラグを含みます。したがって、検証器はR3に対してBPF_WRITEアクセスをチェックします。R3が読み取り専用マップを指しているため、このチェックは失敗しました。一方で、ARG_PTR_TO_UNINIT_MEMはヘルパーが未初期化メモリを読むことも許容します。このパッチは単に期待される引数の型をbpf_skb_store_bytesと一致させることで問題を修正しました。

想定される影響 ・当該ソフトウェアが扱う情報について、外部への漏えいは発生しません。 ・当該ソフトウェアが扱う情報について、書き換えは発生しません。 ・当該ソフトウェアが完全に停止する可能性があります。 
対策

リリース情報、またはパッチ情報が公開されています。参考情報を参照して適切な対策を実施してください。

公表日 2026年5月27日0:00
登録日 2026年6月26日11:59
最終更新日 2026年6月26日11:59
CVSS3.0 : 警告
スコア 5.5
ベクター CVSS:3.0/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
影響を受けるシステム
Linux
Linux Kernel 5.18 以上 6.1.165 未満
Linux Kernel 6.13 以上 6.18.14 未満
Linux Kernel 6.19 以上 6.19.4 未満
Linux Kernel 6.2 以上 6.6.128 未満
Linux Kernel 6.7 以上 6.12.75 未満
CVE (情報セキュリティ 共通脆弱性識別子)
CWE (共通脆弱性タイプ一覧)
その他
変更履歴
No 変更内容 変更日
1 [2026年06月26日]
  掲載
2026年6月26日11:59

NVD脆弱性情報
CVE-2026-45886
概要

In the Linux kernel, the following vulnerability has been resolved:

bpf: Fix bpf_xdp_store_bytes proto for read-only arg

While making some maps in Cilium read-only from the BPF side, we noticed
that the bpf_xdp_store_bytes proto is incorrect. In particular, the
verifier was throwing the following error:

; ret = ctx_store_bytes(ctx, l3_off + offsetof(struct iphdr, saddr),
&nat->address, 4, 0);
635: (79) r1 = *(u64 *)(r10 -144) ; R1=ctx() R10=fp0 fp-144=ctx()
636: (b4) w2 = 26 ; R2=26
637: (b4) w4 = 4 ; R4=4
638: (b4) w5 = 0 ; R5=0
639: (85) call bpf_xdp_store_bytes#190
write into map forbidden, value_size=6 off=0 size=4

nat comes from a BPF_F_RDONLY_PROG map, so R3 is a PTR_TO_MAP_VALUE.
The verifier checks the helper's memory access to R3 in
check_mem_size_reg, as it reaches ARG_CONST_SIZE argument. The third
argument has expected type ARG_PTR_TO_UNINIT_MEM, which includes the
MEM_WRITE flag. The verifier thus checks for a BPF_WRITE access on R3.
Given R3 points to a read-only map, the check fails.

Conversely, ARG_PTR_TO_UNINIT_MEM can also lead to the helper reading
from uninitialized memory.

This patch simply fixes the expected argument type to match that of
bpf_skb_store_bytes.

公表日 2026年5月27日23:17
登録日 2026年5月28日4:11
最終更新日 2026年5月27日23:48
関連情報、対策とツール
共通脆弱性一覧