🔍 CVE-2026-31526

5.5
CVSS Score
MEDIUM
2026-04-22
2026-11-05 22:18
✅ 완료

🇰🇷 한글 설명

Linux 커널의 BPF 서브프로그램에서 예외 발생 시 락(lock) 체크 로직이 누락되는 취약점입니다. bpf_throw() 호출 시 스택을 되감는 과정에서 사용자가 획득한 RCU, preempt, IRQ 락이 해제되지 않아 시스템 불안정성을 초래할 수 있습니다.

💡 쉬운 설명

프로그램 실행 중 갑작스러운 오류가 발생했을 때, 잠가두었던 시스템 자원(락)을 제대로 풀지 않고 넘어가는 문제입니다. 이로 인해 시스템이 멈추거나 예상치 못한 동작을 할 수 있습니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: bpf: Fix exception exit lock checking for subprogs process_bpf_exit_full() passes check_lock = !curframe to check_resource_leak(), which is false in cases when bpf_throw() is called from a static subprog. This makes check_resource_leak() to skip validation of active_rcu_locks, active_preempt_locks, and active_irq_id on exception exits from subprogs. At runtime bpf_throw() unwinds the stack via ORC without releasing any user-acquired locks, which may cause various issues as the result. Fix by setting check_lock = true for exception exits regardless of curframe, since exceptions bypass all intermediate frame cleanup. Update the error message prefix to "bpf_throw" for exception exits to distinguish them from normal BPF_EXIT. Fix reject_subprog_with_rcu_read_lock test which was previously passing for the wrong reason. Test program returned directly from the subprog call without closing the RCU section, so the error was triggered by the unclosed RCU lock on normal exit, not by bpf_throw. Update __msg annotations for affected tests to match the new "bpf_throw" error prefix. The spin_lock case is not affected because they are already checked [1] at the call site in do_check_insn() before bpf_throw can run. [1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/kernel/bpf/verifier.c?h=v7.0-rc4#n21098

📍 영향받는 시스템

Linux Kernel (BPF 서브프로그램을 사용하는 버전)

⚔️ 공격 벡터

특수하게 조작된 BPF 프로그램을 로드하여 예외 상황(bpf_throw)을 유도함으로써 자원 잠금 상태를 유지함

🛡️ 대응 방법

Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 bpf_throw 시 예외 처리가 정상적으로 수행되도록 수정해야 함

🔧 검증 코드

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

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