🇰🇷 한글 설명
Linux 커널의 bpf_fd_array_map_clear() 함수에서 루프 실행 중 cond_resched()가 누락되어 RCU 스톨(stall)이 발생하는 취약점입니다. PROG_ARRAY 맵의 항목이 많을 경우, CPU가 다른 작업을 처리하지 못하고 루프에 갇혀 시스템 성능 저하나 응답 불능 상태를 유발할 수 있습니다.
💡 쉬운 설명
리눅스 시스템의 특정 기능을 처리하는 과정에서 컴퓨터가 너무 오랫동안 한 가지 작업에만 매달려 다른 중요한 일을 하지 못하게 되는 문제입니다. 이로 인해 시스템이 일시적으로 멈추거나 느려지는 현상이 발생할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
bpf: Fix RCU stall in bpf_fd_array_map_clear()
Add a missing cond_resched() in bpf_fd_array_map_clear() loop.
For PROG_ARRAY maps with many entries this loop calls
prog_array_map_poke_run() per entry which can be expensive, and
without yielding this can cause RCU stalls under load:
rcu: Stack dump where RCU GP kthread last ran:
CPU: 0 UID: 0 PID: 30932 Comm: kworker/0:2 Not tainted 6.14.0-13195-g967e8def1100 #2 PREEMPT(undef)
Workqueue: events prog_array_map_clear_deferred
RIP: 0010:write_comp_data+0x38/0x90 kernel/kcov.c:246
Call Trace:
<TASK>
prog_array_map_poke_run+0x77/0x380 kernel/bpf/arraymap.c:1096
__fd_array_map_delete_elem+0x197/0x310 kernel/bpf/arraymap.c:925
bpf_fd_array_map_clear kernel/bpf/arraymap.c:1000 [inline]
prog_array_map_clear_deferred+0x119/0x1b0 kernel/bpf/arraymap.c:1141
process_one_work+0x898/0x19d0 kernel/workqueue.c:3238
process_scheduled_works kernel/workqueue.c:3319 [inline]
worker_thread+0x770/0x10b0 kernel/workqueue.c:3400
kthread+0x465/0x880 kernel/kthread.c:464
ret_from_fork+0x4d/0x80 arch/x86/kernel/process.c:153
ret_from_fork_asm+0x19/0x30 arch/x86/entry/entry_64.S:245
</TASK>
📍 영향받는 시스템
Linux kernel (bpf subsystem, specifically versions involving PROG_ARRAY maps)
⚔️ 공격 벡터
로컬 사용자가 대규모 항목을 가진 BPF PROG_ARRAY 맵을 생성하고 삭제하여 시스템 자원을 독점함으로써 DoS(서비스 거부) 유발
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 bpf_fd_array_map_clear() 내 cond_resched()가 포함된 수정본을 적용해야 합니다.
🔧 검증 코드
출력된 커널 버전이 취약점이 해결된 패치 버전(예: 6.14.0-13195 이후 버전 등)인지 확인합니다.