CVE-2026-45886 bpf: Fix bpf_xdp_store_bytes proto for read-only arg

Medium 5.5 Published Updated

Incorrect BPF helper prototype causes verifier rejection of valid read-only map accesses, potentially leading to denial of service.

Exploited in the wild
Not known
Login needed
Any signed-in user
Attackable
Local or same network only
Victim action needed
Not needed
Fix
Available

What is CVE-2026-45886?

CVE-2026-45886 is a medium-severity vulnerability in Linux kernel, published on 27 May 2026. It can only be exploited from the same machine or local network, with no action from the victim.

Official description

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.

Weakness: CWE-908

Which versions are affected by CVE-2026-45886?

It affects 1 product.

Products include Linux kernel.

How do I fix CVE-2026-45886?

Apply the vendor's patch.

Is CVE-2026-45886 being exploited?

There is no known exploitation of CVE-2026-45886 in the wild and no public exploit code.

All Linux kernel vulnerabilities

Sources

Also known as BELL-CVE-2026-45886, DEBIAN-CVE-2026-45886, GHSA-w77r-v3rv-5rcp, OESA-2026-2931, ROOT-OS-UBUNTU-2404-CVE-2026-45886, UBUNTU-CVE-2026-45886.

Is CVE-2026-45886 in your software?

Upload an SBOM and sbomify checks it against every vulnerability here, every day.

Check your SBOMs for free