🔍 CVE-2026-98641

0.0
CVSS Score
UNKNOWN
2026-10-18
2026-10-19 10:19
✅ 완료

🇰🇷 한글 설명

Linux 커널의 arm64 아키텍처에서 BPF 예외 콜백 발생 시 프레임 포인터(x25)가 올바르게 설정되지 않는 취약점입니다. 이로 인해 BPF 프로그램이 잘못된 스택 주소를 참조하게 되어, 헬퍼 함수가 호출자의 리턴 주소를 덮어쓰는 메모리 오염 및 커널 패닉을 유발할 수 있습니다.

💡 쉬운 설명

프로그램이 예외 상황을 처리할 때 메모리 위치를 가리키는 '이정표'가 잘못 설정되는 문제입니다. 이 오류로 인해 시스템이 엉뚱한 메모리 영역을 건드리게 되어 컴퓨터가 갑자기 멈추거나 꺼질 수 있습니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: bpf, arm64: set up the frame pointer for the exception callback A program acting as exception boundary saves all callee-saved registers, so build_prologue() takes the exception_cb path and never calls push_callee_regs(). That is the only place find_used_callee_regs() runs, and with it the only place ctx->fp_used is set, so the callback prologue does not emit the mov x25, sp that points BPF_REG_FP at the frame the callback runs on. x25 keeps whatever it held when bpf_throw() was called. If the throw came from a subprogram that uses its own BPF stack, that is the subprogram's frame pointer, and since the subprogram never returns it never restores x25 either. Stack accesses through BPF_REG_FP are rewritten to be stack pointer relative, so those still land in the callback's own frame. Materializing the register does not: a callback that passes the address of a local variable to a helper hands over an address in the dead subprogram's frame. That address is below the callback's stack pointer by then, and the helper's own call chain covers it, so the helper can write over its own return address. 0x1234 below is the value the helper was asked to store: pc : 0x1234 lr : 0x1234 Call trace: 0x1234 (P) bpf_test_run+0x188/0x3e0 bpf_prog_test_run_skb+0x47c/0x998 __sys_bpf+0xbdc/0xdd8 Kernel panic - not syncing: Oops: Fatal exception in interrupt Set ctx->fp_used on the exception callback path so that the existing code further down sets x25 from the stack pointer. The epilogue restores it from the main program's save area along with the other callee-saved registers, as it already does. x86 sets the frame pointer for the callback from the argument it is passed, and powerpc computes it from the stack pointer.

📍 영향받는 시스템

Linux kernel (arm64 architecture)

⚔️ 공격 벡터

특수하게 조작된 BPF 프로그램을 실행하여 예외 콜백을 유도하고 잘못된 프레임 포인터를 통한 메모리 오염 유도

🛡️ 대응 방법

프레임 포인터 설정 로직이 수정된 최신 Linux 커널 버전으로 업데이트

🔧 검증 코드

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

Shell / Script
uname -a

💻 영향받는 소프트웨어

Linux Kernel