🔍 CVE-2026-45886

5.5
CVSS Score
MEDIUM
2026-05-27
2026-11-06 16:18
✅ 완료

🇰🇷 한글 설명

Linux 커널의 BPF 구현 중 bpf_xdp_store_bytes 프로토콜의 인자 타입 정의 오류로 인해, 읽기 전용 맵을 사용하는 경우 검증기(verifier)가 잘못된 메모리 접근 오류를 발생시키는 취약점입니다. 이 오류는 읽기 전용 맵에 대한 쓰기 시도를 차단할 뿐만 아니라, 초기화되지 않은 메모리를 읽을 수 있는 잠재적 위험을 포함하고 있습니다.

💡 쉬운 설명

리눅스 운영체제의 특정 기능을 사용할 때, 시스템이 읽기 전용 데이터를 처리하는 과정에서 규칙을 잘못 적용하여 정상적인 동작을 방해하거나 보안 검사를 우회할 수 있는 문제입니다. 이로 인해 네트워크 관련 프로그램이 제대로 작동하지 않거나 예기치 않은 오류가 발생할 수 있습니다.

🇺🇸 원문 (English)

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.

📍 영향받는 시스템

Linux Kernel (bpf_xdp_store_bytes 관련 기능 사용 시스템)

⚔️ 공격 벡터

로컬 권한을 가진 공격자가 잘못된 BPF 프로그램을 로드하여 검증기를 우회하거나 메모리 오류를 유도

🛡️ 대응 방법

Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트

🔧 검증 코드

출력된 커널 버전이 해당 취약점이 수정된 패치 버전 이후인지 확인

Shell / Script
uname -r

📊 CVSS Vector String

CVSS Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H

💻 영향받는 소프트웨어

Linux Kernel